【发布时间】:2017-01-16 03:36:21
【问题描述】:
我有一百万个样本,大约有 1000 个特征。但是,每个样本只测量特征的一个子集。我想执行机器学习来根据特征预测结果,但是,我不知道如何处理丢失的数据。由于数据以随机顺序丢失,我无法根据丢失的特征对数据进行分类,因为类的数量会很大,每个类中只有很少的样本。处理此类问题的最佳解决方案是什么?
【问题讨论】:
标签: machine-learning regression data-science bigdata
我有一百万个样本,大约有 1000 个特征。但是,每个样本只测量特征的一个子集。我想执行机器学习来根据特征预测结果,但是,我不知道如何处理丢失的数据。由于数据以随机顺序丢失,我无法根据丢失的特征对数据进行分类,因为类的数量会很大,每个类中只有很少的样本。处理此类问题的最佳解决方案是什么?
【问题讨论】:
标签: machine-learning regression data-science bigdata
您的问题是机器学习数据分析中的常见情况。虽然很难说出如何准确解决您的问题 - 在不知道数据、您想要预测的内容或您正在考虑的模型(例如生成或判别)的情况下 - 我会尝试给您一些指示。
参考文献
首先,一些参考资料:我发现 (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 可能会提供一些基本的见解。
总结
一些简单的入门方法:
总体而言,有许多有效的方法,并且很大程度上取决于您的任务/应用程序。不过,首先要确定数据丢失的原因以及丢失的数据。然后,按照一些参考资料开始尝试简单的方法,看看哪些方法适合您。
【讨论】:
处理缺失值的方法
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/
【讨论】: