基于贝叶斯的文本分类系统的数据库设计

2015-05-25

本博客中贝叶斯相关的文章:

使用朴素贝叶斯分类器划分邮件
朴素贝叶斯的三个常用模型:高斯、多项式、伯努利
基于贝叶斯的文本分类实战

本文以使用多项式贝叶斯模型为例。该模型在文本分类这一领域的正确率一般都比较高,而且有一个很大的有点,就是支持增量训练。

在该模型下:

先验概率P(c)= 类c下单词总数/整个训练样本的单词总数

类条件概率P(tk|c)=(类c下单词tk在该类下各个文档中出现过的次数之和+1)/(类c下单词总数+|V|)

|V|是整个数据集中单词去重后的数量。

下面的数据来自基于naive bayes的文本分类算法这篇文章中有一个小的计算失误(在计算新样本的类别时)。

文档ID文档内容文档类别
1Chinese Beijing Chineseyes
2Chinese Chinese Shanghaiyes
3Chinese Macaoyes
4Tokyo Japan Chineseno

由上面可以得到:

单词计数表
单词\文档类别yesno
Chinese51
Beijing10
Shanghai10
Macao10
Japan01
Tokyo01
汇总表
属性
单词总数11
单词去重总数6
属于yes的文档下的单词总数8
属于no的文档下的单词总数3
属于yes的文档数3
属于no的文档数1

根据上面的公式,有

P(yes) = 8/11
p(no)  = 3/11
P(Chinese | yes)=(5+1)/(8+6)=6/14=3/7  
P(Japan | yes)=P(Tokyo | yes)= (0+1)/(8+6)=1/14  
P(Chinese|no)=(1+1)/(3+6)=2/9  
P(Japan|no)=P(Tokyo| no) =(1+1)/(3+6)=2/9

所以,对于新样本Chinese Chinese Chinese Tokyo Japan,有:

P(yes | d)
=P(Chinese|yes)×P(Japan|yes)×P(Tokyo|yes)*P(c)
=(3/7)^3×1/14×1/14×8/11
=216/739508
≈0.00029208  

P(no | d)
= P(Chinese|no)×P(Japan|no)×P(Tokyo|no)*P(c)
=(2/9)3×2/9×2/9×3/11
=96/649539
≈0.00014780

故新样本属于yes这个分类。

根据上面的思路,可知数据库中需要两个表,一个单词计数表,一个汇总表,这两个表和上面的两个表格相同。

伯努利模型类似。