写给自己——卡方检测

卡方检验最基本的思想就是通过观察实际值与理论值的偏差来确定理论的正确与否。偏差越大,我们认为原假设越有问题,从而接收原假设的反面。

那如何计算偏差程度?假设变量X,所有的观测值为X1,X2,...,Xn,理论值就是E(X)了(可以是其他合理的假设),那么偏差就是 sigma:i(1-n){ (Xi-E(x))^2 / E(x) }。



所谓“理论”,就是指我们的原假设。对(以DF视角分析)文本分类而言,实际值是指“某个词汇在某个类别下出现的真实DF值”,理论值是指“某个词汇在原假设的情况下应该在某个类别下出现的DF值”。


(以DF视角分析)文本分类而言,我们原假设为“假设某个词汇与类别Ci无关”,这样的原假设使得我们在计算“该词汇在某个类别下的理论DF值”时可以使用最简单的概率公式,即数量=总数*概率,因为对于“无关”假设我们可以简单地使用{观察到的频率/观察到的总数}来表示概率。(现在知道为什么不假设“假设某个词汇与类别Ci相关”了吧。


但我还是不知道上面说的是什么,举例:

有如下观测值:

  男性文档 女性文档
词汇T出现 A B
词汇T不出现 C D
假设“词汇T与性别无关”,则对于情况“词汇T出现 并且属于 男性文档”,实际值就是A,理论值应该是:E=(A+B)/(A+B+C+D) * (A+C),即词汇T在总语料库的出现概率 乘 男性文档总数。 (注意,由于 假设“词汇T与性别无关”,所以词汇T在总语料库的出现概率~=词汇T在男性语料库的出现概率,所以上面的计算公式还是说得过去的。 ) 

所以有D11 = (A-E)^2 / E = (AD-BC)^2 / (A+B)(A+C)N,其中N=A+B+C+D。

同理可计算D12、D21、D22,最终卡方值为:

K^2 = N*(AD-BC)^2 / (A+B)(C+D)(A+C)(B+D)。



我们筛选特征时,想找出卡方值最大的topn个词汇,这些词汇的卡方值离理论值偏差最远,与原假设“词汇T与性别无关”相悖,所以这些词汇是与性别最相关的词汇。

由于选特征时,只关注相对值,而不考虑具体卡方值是多少,那么对于给定的语料库,不同词汇T对应的N、(A+C)、(B+D)都一样,所以最终计算时,只需要如下公式:

/K^2 = (AD-BC)^2 / (A+B)(C+D)。


你可能感兴趣的:(机器学习,文本分类,卡方检测,特征筛选)