关键字全网搜索最新排名
【机器学习算法】:排名第一
【机器学习】:排名第二
【Python】:排名第三
【算法】:排名第四
作者:ACdreamers
链接:http://blog.csdn.net/acdreamers/article/details/44661843
在机器学习中,特征属性的选择通常关系到训练结果的可靠性,一个好的特征属性通常能起到满意的分类效果。凡是特征选择,总是在将特征的重要程度量化后再进行选择,而如何量化特征的重要性,就成了各种方法间最大的不同。接下来就介绍如何有效地进行文本的特征属性选择。
文本分类作为一种有效的信息检索和信息过滤的关键技术,能按预定义的类别将待分类的文本进行归类。文本分类中常用到向量空间模型(VSM),然而高维的向量空间模型严重影响了计算机的处理速度,因此需要对文本的向量进行降维,那么就需要对文本进行特征属性选择。目前在文本分类领域中常用的文本特征属性选择算法有:TF-IDF,信息增益,卡方检验,互信息等。
TF-IDF与特征属性选择
TF即词频(Term Frequency),表示词条在某个文档d中出现的频率。
IDF即逆向文件频率(Inverse Document Frequency),如果包含词条t的文档越少,那么IDF值越大,则说明词条t具有很好的类别区分能力。
TF-IDF算法的主要思想是:如果某个词或短语在某一篇文章中的出现频率TF越高,而且在其它文章中很少出现,那么认为此词或者短语具有很好的类别区分能力,适合用来分类。举个例子如下所示:
假设某篇文档的总词语数为100个,而“蜜蜂”出现了5次,那么“蜜蜂”的词频就是0.05。如果“蜜蜂”这个词在100份文档中出现,而文档总数为1000000,那么逆向文件频率就是log10(1000000/100)=4。最后TF-IDF的值为0.05 * 4 = 0.2。公式如下所示。
当然在统计之前必须要过滤掉文档中的停用词。当然TF-IDF的精确度有时候可能不太高,它仍有不足之处,单纯地认为文本频率越小的单词就越重要,而文本频率越大的单词就越无用,显然这并不完全正确。
接下来就可以用上面所学的TF-IDF来对文本进行特征属性选择了。计算出文档中每个词的TF-IDF的值,然后按照降序排列,取前面的几个词作为特征属性。这里由于只取前K大的,有比较优秀的O(n)算法。
在文本分类中单纯地用TF-IDF来判断一个特征属性是否具有区分度是不够的,原因主要有如下两个
没有考虑特征词在类间的分布
如果一个特征词在各个类之间分布都比较均匀,那么这样的词对分类没有任何贡献;而如果一个特征词集中分布在某个类中,在其它类中都出现但是出现的频率很小很小,那么这个词能很好地代表这个类的特征属性,但是TF-IDF不能很好地区别这两种情况。
没有考虑特征词在类内部文档中的分布
在类内部文档中,如果特征词均匀分布在其中,那么这个特征词能够很好地代表这个类的特征,如果只在几篇文档中出现,那么不能够代表这个类的特征。
信息增益与特征属性选择
关于信息增益的概念,在之前的《决策树之ID3算法》中已经说过。在信息增益中,重要的衡量标准就是看这个特征能够为分类系统带来多少信息,带来的信息越多,那么该特征就越重要。通过信息增益选择的特征属性只能考察一个特征对整个系统的贡献,而不能具体到某个类别上,这就使得它只能做全局特征选择,即所有的类使用相同的特征集合。
卡方检验与特征属性选择
卡方检验是数理统计中一种常用的检验两个变量是否独立的方法。在卡方检验中使用特征与类别间的关联性来进行量化,关联性越强,特征属性得分就越高,该特征越应该被保留。
卡方检验最基本的思想是观察实际值和理论值的偏差来确定理论的正确性。通常先假设两个变量确实是独立的,然后观察实际值与理论值的偏差程度,如果偏差足够小,那么就认为这两个变量确实是独立的,否则偏差很大,那么就认为这两个变量是相关的。
在文本特征属性选择阶段,一般用“词t与类别c不相关”作出假设,计算出的卡方值越大,说明假设偏离就越大,假设越不正确。文本特征属性选择过程为:计算每个词与类别c的卡方值,然后排序取前K大的即可。
接下来,就来学习如何计算卡方值。
假设 n 个样本的观测值分别为 x1,x2,...,xn,它们的均值(期望)为 E,那么卡方值计算如下
如果计算出的 X^2 值与事先设定的阀值进行比较,如果 X^2 小于阀值,则原假设成立,否则原假设不成立。
在文本特征选择阶段,我们关心的是一个词 t 与一个类别 c 之间是否独立,如果独立,则词 t 对类别 c 完全没有表征作用。然而,卡方检验也有缺陷,会对低频词有所偏袒,这就是著名的‘低频词缺陷’,因此经常需要同词频综合考虑来扬长避短。
互信息与特征属性选择
其实互信息相比前面几种特征属性选择方法来说,效果是最差的。互信息是事件A和事件B发生相关联而提供的信息量,在处理分类问题提取特征的时候就可以用互信息来衡量某个特征和特定类别的相关性,如果信息量越大,那么特征和这个类别的相关性越大。反之也是成立的。计算方法如下
低词频对于互信息的影响还是蛮大的,一个词如果频次不够多,但是又主要出现在某个类别里,那么就会出现较高的互信息,从而给筛选带来噪音。所以为了避免出现这种情况可以采用先对词按照词频排序,然后按照互信息大小进行排序,然后再选择自己想要的词,这样就能比较好的解决这个问题。
本文分享自 机器学习算法与Python学习 微信公众号,前往查看
如有侵权,请联系 cloudcommunity@tencent.com 删除。
本文参与 腾讯云自媒体同步曝光计划 ,欢迎热爱写作的你一起参与!