机器学习与不完整的数据

时间:2016-09-08 09:11:12

标签: machine-learning regression data-science bigdata

我有一百万个样本,大约有1000个功能。但是,每个样本仅测量一部分特征。我想执行机器学习来根据功能预测结果,但是,我不知道如何处理丢失的数据。由于数据以随机顺序丢失,我无法根据缺失的特征对数据进行分类,因为类的数量很大,每个类中只有很少的样本。处理这类问题的最佳解决方案是什么?

2 个答案:

答案 0 :(得分:3)

处理缺失值的方法

<强> 1。删除:

它有两种类型:List Wise Deletion和Pair Wise Deletion。 enter image description here

  • 在列表方式删除中,我们删除其中任何一个的观察结果 变量丢失了。简单是这方面的主要优势之一 方法,但这种方法降低了模型的功率,因为​​它减少了 样本量。

  • 在成对删除中,我们对所有情况进行分析 存在感兴趣的变量。这种方法的优点是, 它可以保留尽可能多的案例进行分析。其中一个 这种方法的缺点是,它使用不同的样本量 不同的变量。

  • 当缺失数据的性质为“缺失”时,使用删除方法 完全随意“否则非随机缺失值会偏向 模型输出。

<强> 2。均值/模式/中位数估算:

估算是一种用估计值填充缺失值的方法。目标是采用可以在数据集的有效值中识别的已知关系,以帮助估计缺失值。均值/模式/中值插补是最常用的方法之一。它包括通过该变量的所有已知值的均值或中值(定量属性)或模式(定性属性)替换给定属性的缺失数据。它可以有两种类型: -

  • 广义插补:在这种情况下,我们计算平均值或中位数 对于该变量的所有非缺失值,然后替换缺失 平均值或中值。如上表所示,变量“Manpower” 缺少所以我们取平均值“人力”的所有非缺失值 (28.33)然后用它替换缺失值。

  • 类似案例Imputation:在这种情况下,我们计算平均值 性别“男性”(29.75)和“女性”(25)个别非失踪者 然后,值将根据性别替换缺失值。对于“男性”,我们 将用29.75和“女性”取代人力资源的缺失值 25岁。

第3。预测模型:

预测模型是处理缺失数据的复杂方法之一。在这里,我们创建一个预测模型来估计将替代缺失数据的值。在这种情况下,我们将数据集分为两组:一组没有变量的缺失值,另一组缺少值。第一个数据集成为模型的训练数据集,而第二个具有缺失值的数据集是测试数据集,具有缺失值的变量被视为目标变量。接下来,我们创建一个模型来根据训练数据集的其他属性预测目标变量,并填充测试数据集的缺失值。我们可以使用回归,ANOVA,Logistic回归和各种建模技术来执行此操作。这种方法有两个缺点:

  • 模型估计值通常比表现更好 真实值

  • 如果数据集中没有与属性的关系,那么 具有缺失值的属性,则模型将不精确 估计缺失值。

<强> 4。 KNN Imputation:

在这种估算方法中,使用给定数量的属性估算属性的缺失值,这些属性与缺少值的属性最相似。使用距离函数确定两个属性的相似性。人们还知道它具有某些优点和优点。缺点。

<强>优点:

  • k-最近邻居可以预测定性和定性。量 属性

  • 为缺少数据的每个属性创建预测模型 不需要

  • 可以轻松处理具有多个缺失值的属性

  • 考虑数据的相关结构

<强>缺点:

  • KNN算法在分析大型数据库时非常耗时。它 搜索所有寻找最相似的数据集 实例

  • 选择k值非常关键。更高的k值将包括 与我们需要的属性明显不同的属性 而较低的k值意味着缺少重要的 属性

来源:https://www.analyticsvidhya.com/blog/2016/01/guide-data-exploration/

答案 1 :(得分:2)

您的问题是机器学习中数据分析的常见情况。虽然很难说出如何准确地解决你的问题 - 不知道数据,你想要预测的是什么,或者你正在考虑的模型(例如生成或dirscriminative) - 我会尝试给你一些指示。

<强>参考

首先,一些参考文献:我发现(Benjamin Marlin的博士论文)(http://www.cs.ubc.ca/~bmarlin/research/phd_thesis/marlin-phd-thesis.pdf)是一个很好的起点。我还没有阅读完整的博士论文,但却发现了它一对夫妇。在这个问题上给你一个快速的开始可能是有用的。还有一本关于&#34;统计分析与缺失数据的书&#34;由Little和Rubin可能对你有用。关于这个主题的文章,这篇评论可以帮助你得到一个概述:A Review of Methods for Missing Data(该评论示例性地讨论了关于哮喘症状的研究,但这些方法可能对你有用)。在文献之下,还有一个Wikipedia page on Missing Data可能会提供一些基本的见解。

<强>摘要

一些简单的方法可以帮助您入门:

  • 确定缺失数据的类型(这对于选择上述参考文献中讨论的方法至关重要):
    • 完全缺失随机(MCAR):遗漏特征的概率完全独立于任何可观察或不可观察的变量。
    • 缺少随机(MAR):遗漏特征的概率取决于可观察或不可见的变量(即其他可观察或不可观察的变量&#34;解释&#34;遗漏特征)。
    • 缺少随机(MNAR) - 根据你的描述,这可能不会让你显而易见。
  • 确定数据丢失的原因;这也可以帮助您识别丢失数据的类型,例如: MCAR和MAR之间的区别,以及缺少数据的适当方法。
    • 数据是否首先不可用(假设一个分类有2个类,而某些功能对其中一个类没有意义)
    • 数据是否可用但未记录(例如传感器故障,或未填写字段的研究参与者)
    • 是否记录了数据但在预处理过程中丢失了(例如传感器记录的最大/最小值,NaN值或类似值,这些值在预处理中丢失,或者由于研究中的匿名化而丢弃的字段)
    • ...
  • 处理缺失的数据(这里只介绍一些简单的方法):
    • 忽略丢失的数据(例如忽略功能);当然,如果没有适用于所有行的功能,MCAR可能会很难。
    • 填写缺失的数据:
      • 使用默认值(例如,如果stdy中的字段未被所有参与者填充,请使用平均值或某些默认值填充,或者某个值表示缺少该值 - 该字段缺失的信息也可能有用用于机器学习,例如MAR案例。)
      • 猜数值
      • 推断价值(例如通过可能使用简单的插补技术,例如k-NN或更复杂的方法)
        • 插值可能是一个特殊情况......
      • 转换数据(例如降维,随机项目等;使用分类数据当然更难)
    • ...

总的来说,有许多有效的方法,它在很大程度上取决于您的任务/应用程序。不过,首先要确定数据缺失的原因以及缺少的数据。然后,按照一些参考文献开始尝试简单的方法,看看哪些方法适合你。