繁体   English   中英

数据不完整的机器学习

[英]Machine learning with incomplete data

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

处理缺失值的方法

1.删​​除:

它有两种类型:明智删除列表和明智删除对。 在此处输入图片说明

  • 在逐列表删除中,我们删除缺少任何变量的观察值。 简单性是此方法的主要优点之一,但是此方法降低了模型的功效,因为它减小了样本量。

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

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

2.均值/众数/中位数推算

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

  • 广义归因:在这种情况下,我们计算该变量所有非缺失值的均值或中位数,然后用均值或中位数替换缺失值。 像上表一样,缺少变量“ Manpower”,因此我们取“ Manpower”的所有非缺失值的平均值(28.33),然后用它替换缺失值。

  • 相似情况的推算:在这种情况下,我们分别计算性别“男”(29.75)和“女”(25)的平均值,这些平均值均不含缺失值,然后根据性别替换缺失值。 对于“男性”,我们将缺失的人力值替换为29.75,对于“女性”将替换为25。

3.预测模型:

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

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

  • 如果数据集中的属性与缺少值的属性之间没有关系,则该模型将无法精确估计缺失值。

4. KNN归因:

在这种估算方法中,使用给定数量的属性来估算属性的缺失值,这些给定数量的属性最类似于其值缺失的属性。 使用距离函数确定两个属性的相似性。 还已知具有某些优点和缺点。

好处:

  • k近邻可以预测定性和定量属性

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

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

  • 考虑数据的相关结构

坏处:

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

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

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

您的问题是机器学习中数据分析的常见情况。 虽然很难说出如何准确解决问题的方法-不知道数据,您要预测的内容或所考虑的模型(例如生成或区分模型),但我将尽力为您提供一些指导。

参考文献

首先,提供一些参考:我发现(Benjamin Marlin的博士学位论文)( http://www.cs.ubc.ca/~bmarlin/research/phd_thesis/marlin-phd-thesis.pdf )是一个不错的起点。还没有阅读完整的博士学位论文,只是翻阅了几篇,这可能有助于您快速入门,还有Little和Rubin撰写的关于“缺少数据的统计分析”的书可能会有用对于您而言,该主题有很多基础知识,该评论可能会帮助您获得概述: 数据丢失方法的评论(该评论示例性地讨论了有关哮喘症状的研究研究,但方法仍可能是在文献之下,还有一个关于缺失数据Wikipedia页面,页面可能提供一些基本见解。

摘要

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

  • 确定丢失数据的类型(这对于选择上述参考文献中讨论的方法可能至关重要):
    • 完全随机缺失(MCAR):完全不依赖于任何可观察或不可观察变量的缺失特征的概率。
    • 随机缺失(MAR):缺失特征的概率取决于可观察或不可观察的变量(即其他可观察或不可观察的变量“解释”缺失的特征)。
    • 并非随意遗失(MNAR)-根据您的描述,这可能并不适合您。
  • 确定丢失数据的原因; 这也将帮助您确定丢失数据的类型,例如MCAR和MAR之间的差异,以及丢失数据的适当方法。
    • 首先是否没有可用的数据(假设一个分类类有2个类,并且某些功能对于其中一个类没有意义)
    • 数据是否可用但未记录(例如传感器故障或研究参与者未填写字段)
    • 是否记录了数据但在预处理/处理过程中丢失了数据(例如,传感器记录了在预处理中丢弃的最大/最小值,NaN值等,或由于研究中的匿名性而丢弃的字段)
    • ...
  • 处理丢失的数据(此处仅提供一些简单的方法):
    • 忽略丢失的数据(例如忽略功能); 如果没有所有行都存在的功能,那么这对于MCAR当然可能会很困难。
    • 填写缺失的数据:
      • 使用默认值(例如,如果不是所有参与者都填充了填充字段中的字段,请使用平均值或某个默认值填充该字段,或者使用某些值来表示缺少该字段-缺少该字段的信息对于机器学习也可能是有用的,例如针对MAR的情况)。
      • 猜值
      • 推断值(例如,通过可能使用简单的方法(例如k-NN)或更复杂的方法)
        • 插值在这里可能是一种特殊情况...
      • 转换数据(例如降维,随机项目等;使用分类数据当然更困难)
    • ...

总体而言,有许多有效的方法,并且这在很大程度上取决于您的任务/应用程序。 不过,首先要确定为什么丢失数据以及丢失什么数据。 然后,遵循一些参考资料并开始尝试简单的方法,以查看适合您的方法。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM