文本特征选择
在做文本挖掘,特别是有监督的学习时,常常需要从文本中提取特征,提取出对学习有价值的分类,而不是把所有的词都用上,因此一些词对分类的作用不大,比如“的、是、在、了”等停用词。这里介绍两种常用的特征选择方法:
互信息
一个常用的方法是计算文档中的词项t与文档类别c的互信息MI,MI度量的是词的存在与否给类别c带来的信息量,互信息的基本定义如下:
应用到文本特征选择:
U、C都是二值随机变量,当文档包含词项t时,U的取值为$e_t=1$,否则$e_t=0$;当文档属于类别c时,C的取值$e_c=1$,否则$e_c=0$,用最大似然估计时,上面的概率值都是通过统计文档中词项和类别的数目阿里计算的。于是实际计算公式如下:
其中$N_{xy}$表示$x=e_t$和$y=e_c$情况下对应的文档数目,比如$N_{10}$表示包含词项t(此时$e_t=1$)但不属于类别c(此时$e_c=0$)的;$N_{1.}=N_{10}+N_{11}$表示所有包含词项t的文档数目。$N_{.1}=N_{11}+N_{01}$表示所有属于类c的文档数目,$N=N_{00}+N_{01}+N_{10}+N_{11}$表示所有文档数目。
举例:路透社的语料库Retuters-RCV1的一个类别poultry及词项export。类别和词项的四种组合的文档数如下:
计算类别poultry和词export之间的类别的互信息为:
我们可以对每一个类计算各个词项与其的互信息,并选取值最大的k个词项,当然有可能两个类会选取相同的特征词,去重一下即可。
互信息度量的是词项是否被类别包含所带来的信息量,如果某个词项均匀的分布在各个类别,那么$I(U;C)=0$,当某词项总是出现在当前类别,而在其他类别中很少出现时,$I(U;C)$就会比较大。使用互信息能够保留具有信息含量的词项的同时,去掉那些没有信息含量的词项,从而提高正确率。
$X^2$统计量
在统计学中,$X^2$统计量经常用来检测两个事件的独立性。在特征选择中,两个事件分别指词项的出现与类别的出现,计算公式如下:
依然是前面的类别poultry及词项export的例子,我们有
其他的类似计算,得到:
查卡方的分布表,置信度为0.999的卡方临界值是10.83,也就是当卡方值$X^2(D,t,c)>10.83$时,我们有99.9%的把握,t与c不独立,这里284显然大于10.83,因此我们认为poultry与export不独立,也就是export对poultry是一个强特征。同样我们计算所有词的卡方值,取值最大的前k个词项作为特征词。
卡方是基于显著统计性来选择特征的,因此他会比MI选出更多的罕见词项,而这些词项对分类并不靠谱。
虽然卡方和互信息的出发点不同,但它们的准确性却相差不多,因为大部分文本分类问题中,只有很少的强特征,大部分都是弱特征。只要所有的强特征和很多弱特征被选出,那么分类的准确率就不会低。
另外上面介绍的两种特征选择主要用于文本的分类等用监督学习,而不适宜聚类等无监督学习,因为聚类我们不知道每篇文档属于的类别,也就无从计算互信息和卡方值,这时一般使用TF-IDF作为特征词的选取方法,关于TF-IDF可以参看阮一峰的日志,这里不做总结。
本文内容主要来自:《Introduction to Information Retrieval》
转载请注明出处:http://www.cnblogs.com/fengfenggirl/