【问题标题】:Machine learning with incomplete data不完整数据的机器学习
【发布时间】:2017-01-16 03:36:21
【问题描述】:

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

【问题讨论】:

    标签: machine-learning regression data-science bigdata


    【解决方案1】:

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

    参考文献

    首先,一些参考资料:我发现 (Benjamin Marlin's PhD Thesis](http://www.cs.ubc.ca/~bmarlin/research/phd_thesis/marlin-phd-thesis.pdf) 是一个很好的起点。我没有阅读完整的博士论文,但偶然发现了一些。这可能对给你一个关于这个问题的快速入门。还有一本 Little 和 Rubin 的“Statistical Analysis with Missing Data”一书可能对你有用。关于这个主题有大量的文献,这篇评论可能会帮助你获得概述:A Review of Methods for Missing Data(该评论示例性地讨论了一项关于哮喘症状的研究,但这些方法可能对您仍然有用)。在文献之下,还有一个 Wikipedia page on Missing Data 可能会提供一些基本的见解。

    总结

    一些简单的入门方法:

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

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

    【讨论】:

      【解决方案2】:

      处理缺失值的方法

      1.删除:

      它有两种类型:列表明智删除和配对删除。

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

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

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

      2。均值/众数/中值插补:

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

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

      • 类似情况插补:在这种情况下,我们计算平均值 性别“男性”(29.75) 和“女性”(25) 单独无缺失 然后根据性别替换缺失值。对于“男”,我们 将用 29.75 和“女性”替换人力的缺失值 有 25 个。

      3.预测模型:

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

      • 模型估计值通常比 真正的价值观

      • 如果数据集中的属性没有关系,并且 具有缺失值的属性,那么模型对于 估计缺失值。

      4. KNN 插补:

      在这种插补方法中,使用给定数量的与缺失值的属性最相似的属性来插补属性的缺失值。使用距离函数确定两个属性的相似性。它也有一定的优点和缺点。

      优点:

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

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

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

      • 考虑了数据的相关结构

      缺点:

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

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

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

      【讨论】:

        猜你喜欢
        • 2017-06-18
        • 2014-08-27
        • 2017-06-21
        • 2019-08-24
        • 2019-01-11
        • 2016-08-16
        • 2018-06-10
        • 2020-08-27
        • 1970-01-01
        相关资源
        最近更新 更多