文本特征选择-互信息

在做文本挖掘,特别是有监督的学习时,常常需要从文本中提取特征,提取出对学习有价值的分类,而不是把所有的词都用上,因此一些词对分类的作用不大,比如“的、是、在、了”等停用词。这里介绍两种常用的特征选择方法:

互信息

  一个常用的方法是计算文档中的词项t与文档类别c的互信息MI,MI度量的是词的存在与否给类别c带来的信息量,互信息的基本定义如下:

  应用到文本特征选择:

  U、C都是二值随机变量,当文档包含词项t时,U的取值为et=1et=1,否则et=0et=0;当文档属于类别c时,C的取值ec=1ec=1,否则ec=0ec=0,用最大似然估计时,上面的概率值都是通过统计文档中词项和类别的数目阿里计算的。于是实际计算公式如下:  

  其中NxyNxy表示x=etx=ety=ecy=ec情况下对应的文档数目,比如N10N10表示包含词项t(此时et=1et=1)但不属于类别c(此时ec=0ec=0)的;N1.=N10+N11N1.=N10+N11表示所有包含词项t的文档数目。N.1=N11+N01N.1=N11+N01表示所有属于类c的文档数目,N=N00+N01+N10+N11N=N00+N01+N10+N11表示所有文档数目。

  举例:路透社的语料库Retuters-RCV1的一个类别poultry及词项export。类别和词项的四种组合的文档数如下:  

  计算类别poultry和词export之间的类别的互信息为:  

  我们可以对每一个类计算各个词项与其的互信息,并选取值最大的k个词项,当然有可能两个类会选取相同的特征词,去重一下即可。

  互信息度量的是词项是否被类别包含所带来的信息量,如果某个词项均匀的分布在各个类别,那么I(U;C)=0I(U;C)=0,当某词项总是出现在当前类别,而在其他类别中很少出现时,I(U;C)I(U;C)就会比较大。使用互信息能够保留具有信息含量的词项的同时,去掉那些没有信息含量的词项,从而提高正确率。

X2X2统计量

  在统计学中,X2X2统计量经常用来检测两个事件的独立性。在特征选择中,两个事件分别指词项的出现与类别的出现,计算公式如下:

  依然是前面的类别poultry及词项export的例子,我们有

  其他的类似计算,得到:  

  

  查卡方的分布表,置信度为0.999的卡方临界值是10.83,也就是当卡方值X2(D,t,c)>10.83X2(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/p/text_feature_selection.html

发布了21 篇原创文章 · 获赞 37 · 访问量 6万+

猜你喜欢

转载自blog.csdn.net/zhixiongzhao/article/details/72852805