[英]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页面,该页面可能提供一些基本见解。
摘要
一些简单的方法可以帮助您入门:
总体而言,有许多有效的方法,并且这在很大程度上取决于您的任务/应用程序。 不过,首先要确定为什么丢失数据以及丢失什么数据。 然后,遵循一些参考资料并开始尝试简单的方法,以查看适合您的方法。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.