如何绝对确定特征确实具有预测标签的预测能力(没有领域知识)?互信息有帮助吗?

机器算法验证 机器学习 特征选择 互信息
2022-04-06 08:45:32

我正在研究一个具有严重类不平衡的分类问题(此时它更像是异常检测,因为多数类构成了数据集的 97.5%)。我尝试了几种方法来开始,但没有运气(我曾一度陷入困境)。所以我开始质疑这些功能本身......

我所做的是使用sklearn的mutual_info_classif计算特征与目标类的互信息,并按互信息的降序对特征进行排序。结果对我来说似乎很奇怪(或者考虑到糟糕的结果可能并不令人惊讶),因为我从任何功能中获得的最高互信息是 0.00631345772217。这是否意味着我的数据毫无价值,我可能应该寻找更多数据?

1个回答

这是否意味着我的数据毫无价值,我可能应该寻找更多数据?

不,目标变量和单个特征之间的少量互信息不会使您的数据集变得毫无价值,因为它忽略了特征组合中包含的信息。

我举一个最简单的例子(异或问题):

假设有四个数据点的分类问题,例如:

data = np.array([[1, 2],
       [1, 1],
       [2, 2],
       [2, 1]])

以及四个相关的标签,例如:

label_num = [1, 2, 2, 1]

问题可以这样形象化:

在此处输入图像描述

使用互信息 MI(feature, target) 评估特征在这两种情况下都会产生 0 的互信息。

from sklearn import metrics
metrics.mutual_info_score([1, 1, 2, 2], label_num)

0.0

metrics.mutual_info_score([2, 1, 2, 1], label_num)

0.0

然而问题很简单,因为结合这两个特性可以有效地分离两个类,如这里详细解释的。