机器学习分类中的缺失数据

信息处理 分类 机器学习
2022-02-12 06:40:36

我有一个 4000 个 ML 训练集,有 36 个特征,两类分类器。

  • 考虑到由于某些差异功能没有。一半的数据缺少 25。但是在数据采集过程中,我知道它属于哪个类。
  • 我为丢失的数据定义了一个指定的值(-1000)。其他特征值相对小于-1000。
  • 如果我用相同的数据集训练数据,它可能无法以高精度训练数据。我可以以某种方式推断数据以创建可能存在的数据集(接近值),还是可以使用该数据集训练模型?(或任何其他建议)。

谢谢

1个回答

将缺失值标记为 -1000(假设非缺失值的绝对值小得多)不会导致任何基于决策树/树桩(袋装/提升)的问题。您也可能在混合模型方面取得了一些成功,例如 GMM - 学习算法将分配一些组件来覆盖缺失的数据。对于非参数密度估计器、最近邻或带有 RBF 内核的 SVM 也是如此。

请注意,在所有这些情况下,即使模型有效,如果特征 #25 始终存在于您的测试数据中,也会浪费资源(“模型空间预算”)。换句话说,您的模型将学会如何处理在对新数据进行分类时永远不会出现的棘手示例!但是,如果您将在“现场”遇到的某些数据中有时会缺少功能 #25,那么这就是要走的路。

不要期望事情可以与诸如神经网络或具有线性或低阶多项式内核的支持向量机之类的算法一起使用。

如果“在现场”永远不会丢失特征 #25,那么在训练数据中外推特征 25 可能会更简单。为此,您可以执行以下操作:

选项 1:最近邻

  • 规范化所有特征(#25 除外)。
  • 对于缺少特征 #25 的每个训练示例,根据特征(1 .. 24 和 26 .. 36)搜索最近的训练样本,其中存在特征 #25。
  • 将取自最近邻居的值分配给特征 #25。

当您有大量数据(但不要太多以使搜索可行)且分布不均时效果最佳。

选项 2:回归

使用您选择的任何回归方法来查找特征 #25 和其他特征之间的关系,在其中特征 #25 没有丢失的数据集的子集上。例如,线性回归。

使用结果预测剩余训练实例的特征 #25。

当您的特征对于您计划使用的回归方法“表现良好”时效果最佳(例如,请参阅线性回归的先决条件)。