文档生成模型:多元贝努利vs多项式

在使用朴素贝叶斯(NB)对文档进行分类时,会使用到文档的生成模型,为何呢?仍是从贝叶斯公式出发,其中右半部分就是生成一篇文档的过程,首先选择一个类c,而后根据这个类以必定几率生成文档d。P(c)没什么说的了,知足categorical分布(一次的多项式分布)就能够了。而P(d|c)就比较有意思了,主要能够用两种分布来模拟,一种是多元贝努利分布,一种是多项式分布,这里介绍这两种模拟方法的思想和区别。函数

多元贝努利分布模拟文档生成:spa

如今假设词汇表是V,它包含M个词,那么使用多元贝努利模型生成一篇文档能够看做是这样的一个过程:blog

从头到尾遍历一遍词汇表,并指定某个词tk是否在文档d的中出现,这样就生成了一篇文档!文档

这样一个过程生成一篇文档实际上是至关粗糙的,准确的说它其实只是指定了该文档中包含词汇表中的哪些单词而已。遍历

能够看出该模型忽略了词项出现的次数、词项出现的位置和词项之间的相关性(NB的特性)。方法

因此一篇文档能够表示为一个bool向量,即:,其中ei表示词项ti是否出如今文档d中。im

该模型须要估计的参数为,就是在某个类别c中词项ti出现的几率是多少。img

决策规则:最大化(这里应用了NB的性质,即词项之间是独立的)e2e

注意:这个决策函数跟多元贝努利有一些区别,即它没有考虑词不出现的状况,能够看出当对同一篇文档进行分类时,这个值是没有必要计算的。文档生成

多项式分布模拟文档生成:

使用多项式模型生成一篇文档能够看做是这样一个过程:

假设你有一个骰子,每一个面是一个词项,固然每一个面出现的几率是不同的,同时对于不一样的类别,骰子也是不同的,即各个面的几率分布不一样。

而后对于一篇文档d的每一个位置,你就掷骰子就能够了。它会以必定几率产生一个词项,最终全部词项组成一篇文档!

能够看出使用多项式分布生成一篇文档相比于使用多元贝努利生成一篇文档好像不那么粗糙了,由于:

该模型忽略了不一样位置的差别性和词项之间的相关性(NB的特性)。即某个词项t出如今位置a和出如今位置b是没有区别的(词袋模型)!

多项式模型对词项出现的次数进行了建模!

因此一篇文档能够看做是一系列词项组成的向量,其中tk表示某个词项,在该向量中能够出现重复的词项。

该模型须要估计的参数为,即某个词项tk的几率,为了避免要把这个参数与多元贝努利模型中的参数的含义搞混,就记住这个几率是生成文档的骰子的某一面出现的几率,全部面之和为1!而多元贝努利那个参数是某个词项出现与否的几率!

决策规则:最大化(这里也应用了NB的性质,即词项之间是独立的)

注意:这个决策函数与多项式分布也有一些不一样,即省略了系数,由于对于同一篇文档,该系数是常数。

多元贝努利vs多项式:

那么问题来了,这两个模型哪一个好呢?确定是个有所长了!

1. 贝努利模型不考虑词项出现的次数,而多项式模型考虑;

2. 贝努利模型适合处理短文档,而多项式模型适合处理长文档

3. 贝努利模型在特征数较少时效果更好,而多项式模型在特征较多时效果更好;

4. 多于词项“the”的估计:

第4条能够明显感受两个模型的不一样,也很好理解:对于词项“the”,几乎每篇文档都出现,因此在多元贝努利模型中它的几率接近1。而在多项式模型中“the”只是骰子的一面!其出现的几率很大,可是也只有0.05!