朴素贝叶斯
贝叶斯决策理论要求计算两个概率p1(x,y)和p2(x,y)
1.如果p1(x,y)>p2(x,y),那么类别为1
2.如果p1(x,y)<p2(x,y),那么类别为2
但这两个准则并不是贝叶斯决策理论的所有内容。使用p1()和p2()只是为了尽可能简化描述,而真正需要计算和比较的是p(c1|x,y)和p(c2|x,y)。这些符号所代表的具体意义是:给定某个由x、y表示的数据点,那么该数据点来自类别c1的概率是多少?数据点来自类别c2的概率又是多少?注意这些概率与刚才给出的概率p(x,y|c1)并不一样,不过可以使用贝叶斯准则来交换概率中条件和结果。具体地,应用贝叶斯准则得到:
p(ci|x,y)=p(x,y|ci)*p(ci)/p(x,y)
使用这些定义,可以定义贝叶斯分类准则为:
1.如果p(c1|x,y)>p(c2|x,y),那么属于类别c1
1.如果p(c1|x,y)<p(c2|x,y),那么属于类别c2
朴素贝叶斯分类器中的另一个假设是,每个特征同等重要。
朴素贝叶斯分类器通常有两种实现方式:一种基于贝努利模型实现,一种基于多项式模型实现。前一种方式中并不考虑词在文档中出现的次数,只考虑出不出现,因此在这个意义上相当于假设词是等权重的。
训练算法:从次向量计算概率
我们重写贝叶斯准则,将之前的x、y替换为w。w表示一个向量,即它由多个数值组成。
p(ci|w)=p(w|ci)p(c1)/p(w)
我们通过使用上述公式,对每个类计算该值,然后比较这两个概率值的大小。如何计算呢?首先可以通过类别i(侮辱性留言或非侮辱性留言)中文档数除以总的文档数来计算概率p(ci)。接着来计算p(w|ci),这里就要用到朴素贝叶斯假设。如果将w展开为一个个独立特征,那么就可以将上述概率写作p(w0,w1,w2...wn|ci)。这里假设所有词相互独立,该假设也称作条件独立性假设,它意味着可以使用p(w0|ci)p(w1|ci)p(w2|ci)...p(wn|ci)来计算上述概率,这就极大地简化了计算过程。
该函数的伪代码如下:
计算每个类别中的文档数目
计算每片训练文档:
对每个类别:
如果词条中出现在文档中—>增加该词条的计数值
增加所有词条的计数值
对每个类别:
对每个词条:
将该词条的数目除以总词条数目得到条件概率
返回每个类别的条件概率
小结
对于分类而言,使用概率有时比使用硬规则更为有效。贝叶斯概率及贝叶斯准则提供了一种利用已知值来估计未知概率的有效方法。
可以通过特征之间的条件独立假设,降低对数据量的需求。独立性假设是指一个词的出现概率并不依赖文档中的其他词。当然我们也知道这个假设过于简单。这就是之所以称为朴素贝叶斯的原因。尽管条件独立性假设并不正确,但是朴素贝叶斯仍然是一种有效的分类器。
利用现代编程语言来实现朴素贝叶斯时需要考虑很多实际因素。下溢出就是其中一个问题,它可以通过对概率取对数来解决。词带模式在解决文档分类问题上比词集模型有所提高。还有其他一些方面的改进,比如说移除停用词。

浙公网安备 33010602011771号