我使用以下代码计算情感分析中特征选择的互信息和卡方值。
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是我数据集中两个要素的观测频率。
注意:我正在尝试计算两个要素之间的互信息和Chi Squared值,而不是特定要素和类之间的互信息。我这样做,所以我会知道这两个功能是否有任何相关性。
我用过的Chi Squared公式是:
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是预期频率。
根据相互信息的定义,低值应该意味着一个特征不能给我关于另一个特征的信息,并且通过Chi Square的定义,Chi Square的低值意味着这两个特征必须是独立的。 / p>
但是对于某两个特征,我的相互信息得分为0.00416,而Chi Square值为4373.9。这对我来说没有意义,因为相互信息得分表明特征没有密切相关,但是卡方值似乎足够高,表明它们也不是独立的。我想我的解释出错了
我观察到的频率值
N00 = 312412
N01 = 276116
N10 = 51120
N11 = 68846
答案 0 :(得分:2)
Morris,A.C。(2002)“序列识别性能的信息理论测量”。 可以从这个页面下载。
https://sites.google.com/site/andrewcameronmorris/Home/publications
因此,除非你的计算有误,否则如果一个是高/低,另一个必须是高/低。
答案 1 :(得分:2)
卡方独立性检验正在检查原始计数,而相互信息得分仅检查边际和联合概率分布。因此,卡方也考虑了样本量。
如果x和y之间的依赖关系非常微妙,那么知道一个人在预测另一个方面就不会有太大的帮助。但是,随着数据集的大小增加,我们可以越来越相信某些关系存在。
答案 2 :(得分:0)
您可以尝试https://github.com/ranmoshe/Inference-它使用卡方来计算MI和p值统计信息。
它还知道计算每个要素的自由度,包括考虑条件组(其中要素的自由度在不同值之间可能不同)