我使用以下代码来计算情绪分析中特征选择的互信息和卡方值。
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 是我的数据集中两个特征的观察频率。
注意:我正在尝试计算 2 个特征之间的互信息和卡方值,而不是特定特征和类之间的互信息。我这样做是为了知道这两个功能是否以任何方式相关。
我使用的卡方公式是:
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