如何处理缺失的具有重要意义的分类数据?

数据挖掘 分类 分类数据 缺失数据
2022-02-24 12:44:34

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

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 的值会使我的数据产生偏差,但是许多机器学习算法不适用于缺失值的数据集。我该如何处理?

2个回答

填补和处理缺失数据是一个广泛的主题;你应该从研究这个主题的标准材料开始。

第一个要弄清楚的问题是为什么缺少一些数据?导致数据丢失的过程是什么 了解这是如何发生的很重要,因为这会影响合适的解决方案。

随机缺失的数据

如果数据完全随机丢失(是否丢失值不取决于该项目的任何特征值),则插补可能是适当的。如果你做得恰当,它不应该产生偏见。有许多插补技术。您没有提及您尝试了什么或为什么您认为它会使您的结果产生偏差,但总的来说,如果您使用适当的插补方法,它没有理由需要对您的数据产生偏差。

或者,您可以使用可以容忍缺失数据的分类器。一些分类器旨在处理丢失的数据并且可以容忍它。但是,我不知道有什么理由使用它们来代替估算。

非随机缺失数据

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

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

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

但在现实生活中,这种情况非常罕见。更典型的情况是某些功能缺失而其他功能存在,这需要更多的工作来处理。

处理缺失的分类数据而不进行插补的最简单方法是将其视为一个类别本身

例如:

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   

快乐训练!