开始介绍文本分类之前,我们先来了解一下贝叶斯分类器
1.分类原理:
通过某对象的先验概率,利用贝叶斯公式计算出其后验概率,即该对象属于某一类的概率,我们选择具有最大后验概率的类作为对象所属的类。在文本分类里面,每一篇文档就是一个对象。可能这样说会比较抽象一点,举一个简单的例子,加入我们走在大街上看到一个大高个儿(身高大于2米),我们肯定会猜他是打篮球的,我们的这种猜测是基于 打篮球的人,他们个子都很高,所以这可以理解为先验概率,我们有了这个认识,我们就会认为,这个大高个儿打篮球的可能性很大,所以我们会猜他很有可能是打篮球的,当然,这只是一个先验估计,实际情况下并不一定准确。如果我们真正想要判断这个人是否是打篮球的,还要根据一些外观因素,比如身体的强壮度,腿长不长,手大不大等等,吧这些因素考虑进去之后再进行判断就是一种后验估计(也叫做最大似然估计),下面的部分会有介绍,这里就不赘述了。
2.先验概率与后验概率
提到贝叶斯分类器就不得不说先验概率和后验概率
a.先验概率
先验概率就是通过经验和分析得到的概率,可以理解为通过历史数据计算出来的概率或是基于人们的习惯性认识的概率。例如上面提到的“打篮球的人个子都很高”,“大部分的黑人都来自于非洲”,“天上有乌云,马上就要下雨了” 等等。这些判断都属于先验估计
b.后验概率
基于新的信息,修正原来的先验概率后获得的更接近实际情况的估计。比如我们刚才遇到的那个哥们儿很高,我们已经知道打篮球的人个子都很高,基于这个先验概率再根据他的身体的强壮度,手,腿的长度,跑步速度等实际性的因素判断,我们会得出一个结论,判断他是否是篮球运动员,这就是一种后验估计。
3.最大似然估计
最大似然估计就是在已经得到实验结果的情况下(可以理解为已经计算出了一篇文档属于每个类的后验概率),那么我们选择后验概率最大的一项,并且为文档贴上对应类的类标签。同样举一个简单的例子,为什么我们在大街上看见一个黑人,就会猜测他是非洲人,实际上他也有可能是中东人,或者美国人,或者古巴人等等,但是因为我们已经知道,黑人中,非洲人所占的比重最多,所以我们就认为这个黑人是非洲人,这就是比较形象的最大似然估计的例子
4.多项式朴素贝叶斯模型
多项式朴素贝叶斯模型采用了最大似然估计,首先计算文档d属于类别c的后验概率,根据贝叶斯公式
这里要注意的是,因为P(d)表示的是一个对象属于文档的概率,对于每一个类来说,这个值都是一样的,所以略去不写。上面公式中Nd表示测试文档中的词的个数,tk表示出现在第k个位置的词,P(tk|c)表示这个词属于类别c的概率
能够使用上面这个公式,我们还引入了一个位置独立性假设,也就是给定类别时,每个属性值之间是相互独立的,所以我们有了下面的这条公式
也就得到了上面的式子
P(c)我们可以通过c类中包含的文档数目Nc占所有测试文档数目N的比例来计算
计算完了类别的概率之后,现在来计算给定类别c时,每一个词项t出现在该类c中的先验概率,这里之所称之为先验概率是因为我们是通过训练集中已经了解的数据进行计算,并不一定完全符合测试文档
Ndistinct要同上面的Nd区别开来,Ndistinct表示c类文档中不同词的个数(没有重复),Nd则表示文档d中所有词的个数(可能会有重复的词出现);Nt表示词项t在c类文档中出现的频率(因为要计算频率,所以才要去重之后,引入Ndistinct),上式中的分母部分实际上就是c类文档中包含的总的词数。看完这里你可能有一点迷惑,为什么这样做是可行的,实际上在多项式模型中,每一个类可以看成是很多篇文档融合而成的大文档(传说中的bag of words模型),所以,我们在衡量一个词出现在这个类中的可能性大小时,一般通过他在这类文档中出现的频率高低来判断
go on。。。。 现在问题又来了,如果出现了在训练数据中没有的或者是某一类中没有的词时(训练数据毕竟有限,而且数据存在稀疏性),那么按照上面这条公式计算的结果就一定是0,即时其他的词项很有可能是属于该类,计算出来的后验概率也一定是0,为了避免数据稀疏性对于分类结果的影响,我们需要进行一些平滑操作(说白了就是适当减小贫富差距,让"0概率"事件的概率稍稍增大,同时又不会很大的影响大概率事件发生的概率),一般来说,我们采用的是拉普拉斯平滑(也叫加1平滑),公式如下
在这里,B表示整个训练集中的词的个数(非重复),加一平滑实际上可以看做我们将已知的训练数据放入一个均匀分布的虚拟样本中(样本中每个词出现的频率为1),构成新的训练数据,这样在计算词项在给定的某一个类中的概率时,避免了0概率的出现,同时,原本出现概率很高的词受到的影响也不大
这一章就到这,下一篇介绍伯努利模型