您的位置:首页 > 其它

朴素贝叶斯文本分类过程

2013-04-05 06:31 183 查看
对于上一篇Bayes 的基本概念 比较清晰和熟悉之后,迫不及待的想要看到其进一步应用。因为朴素贝叶斯(naive bayes :不是yes就是no)假设事物属性之间相互条件独立,于是选择文本分类来进一步认识。

本片博文参考/article/3547962.html ;/article/4620056.html

1、基本定义

分类是把一个事物分到某个类别中。一个事物具有很多属性,把它的众多属性看作一个向量,即X=(x1,x2,x3,…,xn),用X这个向量来代表这个事物;类别也有很多种,用集合C={c1,c2,…cm}表示。一般X和C的关系是不确定的,可以将X和C看作是随机变量.

我们做分类的目标就是给定一个新的属性集合,结合训练集的知识,判断这个新来的集合属于C的哪一类的概率最大。数学表达为 Cmap=ARGMAX P(C|x1,x2,x3,…,xn).

2、文本分类过程

例如文档:Good good study Day day up可以用一个文本特征向量来表示,x=(Good, good, study, Day, day , up)。在文本分类中,假设我们有一个文档d∈X,类别c又称为标签。我们把一堆打了标签的文档集合<d,c>作为训练样本,<d,c>∈X×C。例如:<d,c>={Beijing joins the World Trade Organization, China}对于这个只有一句话的文档,我们把它归类到 China,即打上china标签。

朴素贝叶斯分类器是一种有监督学习,常见有两种模型,多项式模型(multinomial model)即为词频型和伯努利模型(Bernoulli model)即文档型。二者的计算粒度不一样,多项式模型以单词为粒度,伯努利模型以文件为粒度,因此二者的先验概率和最大似然概率的计算方法都不同。计算后验概率时,对于一个文档d,多项式模型中,只有在d中出现过的单词,才会参与后验概率计算,伯努利模型中,没有在d中出现,但是在全局单词表中出现的单词,也会参与计算,不过是作为“反方”参与的。这里暂不考虑特征抽取、为避免消除测试文档时类条件概率中有为0现象而做的取对数等问题。

2.1多项式模型

1)基本原理

在多项式模型中, 设某文档d=(t1,t2,…,tk),tk是该文档中出现过的单词,允许重复,则

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

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

V是训练样本的单词表(即抽取单词,单词出现多次,只算一个),|V|则表示训练样本包含多少种单词。 P(tk|c)可以看作是单词tk在证明d属于类c上提供了多大的证据,而P(c)则可以认为是类别c在整体上占多大比例(有多大可能性)。

2)举例

给定1组分好类的文本训练数据,如图:

doc IDDOCC=china?
1China Beijing Chinayes
2china china Shanghaiyes
3China Macaoyes
4Tokyo Japan Chinano
给定一个新样本China China China Tokyo Japan,对其进行分类。该文本用属性向量表示为d=(China, China, China, Tokyo, Japan),类别集合为Y={yes, no}。

类yes下总共有8个单词,类no下总共有3个单词,训练样本单词总数为11,因此P(yes)=8/11, P(no)=3/11。最大似然概率计算如下:

P(China | yes)=(5+1)/(8+6)=6/14=3/7

P(Japan | yes)=P(Tokyo | yes)= (0+1)/(8+6)=1/14

P(China|no)=(1+1)/(3+6)=2/9

P(Japan|no)=P(Tokyo| no) =(1+1)/(3+6)=2/9

分母中的8,是指yes类别下textc的长度,也即训练样本的单词总数,6是指训练样本有China,Beijing,Shanghai, Macao, Tokyo, Japan 共6个单词,3是指no类下共有3个单词。

有了以上最大似然概率,开始计算后验概率:

P(yes | d)=(3/7)3×1/14×1/14×8/11=108/184877≈0.00058417

P(no | d)= (2/9)3×2/9×2/9×3/11=32/216513≈0.00014780

比较大小,即可知道这个文档属于类别china。

2.2伯努利模型

1)基本原理

P(c)= 类c下文件总数/整个训练样本的文件总数

P(tk|c)=(类c下包含单词tk的文件数+1)/(类c下单词总数+2)

2)举例

使用前面例子中的数据,模型换成伯努利模型。

类yes下总共有3个文件,类no下有1个文件,训练样本文件总数为11,因此P(yes)=3/4, P(China | yes)=(3+1)/(3+2)=4/5,最大似然概率如下:

P(Japan | yes)=P(Tokyo | yes)=(0+1)/(3+2)=1/5

P(Beijing | yes)= P(Macao|yes)= P(Shanghai |yes)=(1+1)/(3+2)=2/5

P(China|no)=(1+1)/(1+2)=2/3

P(Japan|no)=P(Tokyo| no) =(1+1)/(1+2)=2/3

P(Beijing| no)= P(Macao| no)= P(Shanghai | no)=(0+1)/(1+2)=1/3

有了以上最大似然概率,开始计算后验概率,

P(yes|d)=P(yes)×P(China|yes)×P(Japan|yes)×P(Tokyo|yes)×(1-P(Beijing|yes))×(1-P(Shanghai|yes))×(1-P(Macao|yes))=3/4×4/5×1/5×1/5×(1-2/5) ×(1-2/5)×(1-2/5)=81/15625≈0.005

P(no|d)= 1/4×2/3×2/3×2/3×(1-1/3)×(1-1/3)×(1-1/3)=16/729≈0.022

因此,这个文档不属于类别china.
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: