今天在用C++实现一个博客中(http://www.cnblogs.com/phinecos/archive/2008/10/21/1316044.html)的朴素贝叶斯分类器。发现代码中计算分类条件概率的公式与一般书上写的不一样。浏览评论的时候发现有人跟我有一样的疑问.
正庆幸找到一个明白了,突然LX的回答又给我泼了一瓶冷水。
神马,伯努利贝叶斯! 听都没说过。顿时对自己薄弱的基础知识感到羞愧, 赶紧百度之。找到了一篇论文:《改善朴素贝叶斯在文本分类中的稳定性》,里面对二项独立模型和多项式模型都进行了介绍。
(1) 二项独立模型(BIM)
二项独立模型,又称多变量伯努利模型(Multi-variate Bernoulli Model),是朴素贝叶斯方法最常用的实现模型之一。推理过程就不多写了,直接写计算方法吧。
模型中用到的参数都要通过训练阶段,从训练数据中学习得到,通常取它们的最大似然估计作为它们的估计值。设训练文档集 D={d1,…d|D|},
对于类ci的概率可以由下式估计:
其中ni表示训练文档集中类别为ci的文档数。
对于给定类别 ci单词 wk的条件概率,为了避免出现零概率,通常要加入平滑因子,其估计由公式(10)给出:
其中 ni表示训练文档集中类别为 ci的文档数,nki表示训练训练文档集中含有单词 wk并且类别为 ci的文档数。
(2) 多项式模型(MM)
在模型中,文档被看作是一个长度为 f 的单词序列(同一个单词可以出现多次),并且假定文档的长度与类别无关,而且每个单词出现的位置与其它单词是独立的。
对于类别 ci的先验概率的估计,多项模型与二项独立模型相同,都使用公式(9)。而对于单词wk对于给定类别 ci的条件先验概率的估计,由于多项模型考虑了同一单词在文 档中的多次出现的信息,所以与二项独立模型有所不同。它采用下面公式进行估计:
其中 Nki是 wk在类 ci的所有文档中出现的总的次数,|V|是训练数据集的单词表的尺寸。
文章中提到了常用的模型是二项独立模型。而博客中也用到的就是二项独立模型。文章然后又“开创性”地提出了一个混合模型。公式就不列了。只是觉得中国人写论文都是把两个已有的方法融合起来,然后在某个特定的数据集上效果有提升,就完事了。总觉得这样创新度太小了。