所谓信息量,就是熵。
对文本分类而言,分类C(看做是一个变量)可能的取值有n种(最常见的是二元分类),每一种取到的概率为Pi,那么分类C的熵就定义为H(C)=-sigma(i:1-n) { P(Ci)*log[P(Ci)] }。
所谓信息增益,系统有某个特征和没某个特征时信息量发生的变化。
信息量变化越大,该特征越重要。
对文本分类而言,特征T(指每一个词汇)给分类C带来的信息增益为IG(T)=H(C)-H(C|T)。
H(C|T)包含两种情况:一种是词汇T出现,标记为t,一种是词汇T不出现,标记为t'。所以
H(C|T)=P(t)H(C|t)+P(t')H(C|t')=P(t)*-sigma(i:1-n) { P(Ci|t)*log[P(Ci|t)] }+P(t')*-sigma(i:1-n) { P(Ci|t')*log[P(Ci|t')] }。
我们需要对语料库中出现的所有的词汇计算IG(t),筛选出topn大的词汇作为特征集合。
信息增益最大的问题在于它只能考察特征对整个系统的贡献,而不能具体到某个类别上,这就使得它只适合用来做所谓“全局”的特征选择(指所有的类都使用相同的特征集合),而无法做“本地”的特征选择(所谓“本地”,是指每个类别有自己的特征集合,因为有的词,对这个类别很有区分度,对另一个类别则无足轻重)。
最重要的来了,那些H、P如何计算?以区分性别的二元分类为例:
1)从文档频率DF角度出发:
H(C)=-sigma(i:1-n) { P(Ci)*log[P(Ci)] }中,P(Ci)=男性文件数/总文件数。
P(t)*-sigma(i:1-n) { P(Ci|t)*log[P(Ci|t)] }+P(t')*-sigma(i:1-n) { P(Ci|t')*log[P(Ci|t')] }中,对每一个词汇t,P(t)=包含词汇t的文件数/总文件数,P(Ci|t)=包含词汇t并且是男性文件的文件数/包含词汇t的文件数。
2)从TF-IDF角度出发:
。。。。。。