Feature selection 互信息与卡方关系

Feature selection 互信息与卡方关系,feature-selection,chi-squared,Feature Selection,Chi Squared,我使用了以下代码来计算情感分析中特征选择的互信息和卡方值 MI = (N11/N)*math.log((N*N11)/((N11+N10)*(N11+N01)),2) + (N01/N)*math.log((N*N01)/((N01+N00)*(N11+N01)),2) + (N10/N)*math.log((N*N10)/((N10+N11)*(N00+N10)),2) + (N00/N)*math.log((N*N00)/((N10+N00)*(N01+N00)),2) 其中N11、N01

我使用了以下代码来计算情感分析中特征选择的互信息和卡方值

MI = (N11/N)*math.log((N*N11)/((N11+N10)*(N11+N01)),2) + (N01/N)*math.log((N*N01)/((N01+N00)*(N11+N01)),2) + (N10/N)*math.log((N*N10)/((N10+N11)*(N00+N10)),2) + (N00/N)*math.log((N*N00)/((N10+N00)*(N01+N00)),2)
其中N11、N01、N10和N00是我的数据集中两个特征的观测频率

注意:我试图计算两个特征之间的互信息和卡方值,而不是特定特征和类之间的互信息。我这样做是为了知道这两个特性是否有任何关联

我使用的卡方公式是:

E00 = N*((N00+N10)/N)*((N00+N01)/N)
E01 = N*((N01+N11)/N)*((N01+N00)/N)
E10 = N*((N10+N11)/N)*((N10+N00)/N)
E11 = N*((N11+N10)/N)*((N11+N01)/N)

chi = ((N11-E11)**2)/E11 + ((N00-E00)**2)/E00 + ((N01-E01)**2)/E01 + ((N10-E10)**2)/E10  
其中E00、E01、E10、E11为预期频率

根据互信息的定义,低值意味着一个特征不能提供关于另一个特征的信息,根据卡方检验的定义,低值卡方检验意味着这两个特征必须是独立的

但对于某两个特征,我得到的互信息分数为0.00416,卡方值为4373.9。这对我来说没有意义,因为互信息分数表明特征之间没有密切关系,但卡方值似乎足够高,表明它们也不是独立的。我想我的解释错了

我得到的观测频率值是

N00 = 312412
N01 = 276116
N10 = 51120
N11 = 68846

在关于样本量的通常条件下,MI和Pearson的大样本统计是成正比的。这是众所周知的。这里给出了S的证明

Morris,A.C.(2002)“序列识别性能的信息论度量”。 可从此页下载


因此,除非计算中存在错误,否则如果一个是高/低,另一个必须是高/低。

卡方独立性检验检查原始计数,而互信息分数仅检查边际概率分布和联合概率分布。因此,卡方检验也考虑了样本量

如果x和y之间的依赖关系非常微妙,那么知道其中一个对预测另一个没有多大帮助。然而,随着数据集大小的增加,我们可以越来越确信存在某种关系

您可以尝试-它使用卡方检验计算MI和p值统计


它还知道计算每个特征的自由度,包括考虑条件组(特征的自由度在不同的值之间可能不同)

为什么这个问题有python标记?事实上,为什么这个问题会出现在stackoverflow中?数学或统计学问答不是更合适吗?