我使用了以下代码来计算情感分析中用于特征选择的相互信息和卡方平方的值。
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是预期频率。
根据相互信息的定义,低值应该意味着一个特征不能给我关于另一个特征的信息,而根据X平方的定义,X平方的低值意味着这两个特征必须是独立的。
但对于特定的两个功能,我得到的相互信息得分为0.00416,卡方值为4373.9。这对我来说是没有意义的,因为相互信息得分表明这些功能不是紧密相关的,但卡方数值似乎足够高,表明它们也不是独立的。我想我的解释错了
我得到的观察到的频率值是
N00 = 312412
N01 = 276116
N10 = 51120
N11 = 68846发布于 2014-01-26 20:56:31
在通常的样本容量条件下,MI和Pearson的大样本统计量是成正比的。这是众所周知的。这里给出了S的证明。
Morris,A.C. (2002)“序列识别性能的信息理论度量”。可以从这个页面下载。
https://sites.google.com/site/andrewcameronmorris/Home/publications
因此,除非您的计算中有一些错误,否则如果一个是高/低,另一个一定是高/低。
发布于 2017-04-08 06:40:57
卡方独立性检验检验的是原始计数,而互信息得分只检验边际和联合概率分布。因此,卡方也考虑了样本大小。
如果x和y之间的依赖关系非常微妙,那么知道其中一个对预测另一个不会有太大帮助。然而,随着数据集大小的增加,我们可以越来越确信存在某种关系。
发布于 2018-12-27 17:40:08
您可以尝试使用https://github.com/ranmoshe/Inference -它使用卡方计算MI和p值统计。
它还知道计算每个特征的自由度,包括考虑条件组(其中特征的dof在不同的值之间可能不同)
https://stackoverflow.com/questions/13789660
复制相似问题