我有一个高度分类且具有很多缺失值的数据集。例如:

i | A_foo | A_bar | A_baz | outcome
--+-------+-------+-------+--------
0 |  nan  |  nan  |  nan  |   1
1 |   0   |   1   |   0   |   1
2 |  nan  |  nan  |  nan  |   0
3 |   1   |   0   |   0   |   0

问题是1和0具有与NAN不同的含义。我不想算上数据,因为分配0或1的值会偏向我的数据,但是许多机器学习算法在具有缺失值的数据集上无法使用。我该如何处理?

有帮助吗?

解决方案

插补 并处理丢失的数据广泛主题;您应该首先研究有关此主题的标准材料。

第一个问题是 为什么缺少一些数据?导致数据丢失的过程是什么? 重要的是要了解这种情况是如何发生的,因为这将影响哪些解决方案适当。

随机丢失数据

如果数据完全随机丢失(是否缺少一个值,不取决于该项目的任何特征值),则可以合适。如果您做得适当,它不应产生偏见。插补有许多技术。您不会提及您尝试过的内容或为什么您认为它会偏向您的结果,但是通常,如果您使用适当的插补方法,则没有理由需要偏向您的数据。

另外,您可以使用可以忍受丢失数据的分类器。一些分类器旨在处理丢失的数据并可以忍受它。但是,我不知道有任何理由将它们用于归纳。

非随机丢失数据

相反,如果某些对象缺少数据的机会取决于该对象的功能的值,那么您会有更大的问题。在这种情况下,插补可能会产生偏见 - 与任何其他方法一样。您的最大希望是更深入地了解导致数据缺失和概率分布的随机过程(数据丢失的概率,作为特征值的函数),并尝试设计适合该过程的过程。

您的具体情况:缺少所有功能

您的具体情况特别奇怪:在您的情况下,所有功能都缺少,或者没有。那很奇怪。对于缺少功能的实例,您绝对没有有关这些实例的信息。因此,在这种情况下,最好的分类决策可能是一个非常简单的规则:参加培训集中最常出现的类别(或在丢失数据的实例中最常出现)。在其余实例上运行分类器,即没有丢失数据的实例。

但是在现实生活中,这种情况很少见。更典型的是,某些功能缺失并且有其他功能,并且需要更多的工作才能处理。

其他提示

处理缺失的分类数据的最简单方法是将其视为类别本身

例如:

i | A_foo | A_bar | A_baz | A_nan | outcome
--+-------+-------+-------+-------+---------
0 |   0   |   0   |   0   |   1   |   1   
1 |   0   |   1   |   0   |   0   |   1   
2 |   0   |   0   |   0   |   1   |   0   
3 |   1   |   0   |   0   |   0   |   0   

快乐训练!

许可以下: CC-BY-SA归因
scroll top