6.1、贝叶斯分类器

来源:互联网 发布:网络博客代理 编辑:程序博客网 时间:2024/06/02 03:03

1、贝叶斯分类器:

1)、实例一:

考虑一个医疗诊断问题,有两种可能的假设:(1)病人有癌症。(2)病人无癌症。样本数据来自某化验测试,它也有两种可能的结果:阳性和阴性。假设我们已经有先验知识:在所有人口中只有0.008的人患病。此外,化验测试对有病的患者有98%的可能返回阳性结果,对无病患者有97%的可能返回阴性结果。

 

上面的数据可以用以下概率式子表示:

P(cancer)=0.008,P(无cancer)=0.992

P(阳性|cancer)=0.98,P(阴性|cancer)=0.02

P(阳性|无cancer)=0.03,P(阴性|无cancer)=0.97

假设现在有一个新病人,化验测试返回阳性,是否将病人断定为有癌症呢?

 

在这里,Y={cancer,无cancer},共两个类别,这个新病人是一个样本,他有一个属性阳性,可以令x=(阳性)。我们可以来计算各个类别的后验概率:

P(cancer | 阳性) = P(阳性 |cancer)p(cancer)=0.98* 0.008 = 0.0078

P(无cancer | 阳性) =P(阳性 | 无cancer)* p(无cancer)=0.03* 0.992 = 0.0298

因此,应该判断为无癌症。

 

①别墅和狗

一座别墅在过去的 20 年里一共发生过 2 次被盗,别墅的主人有一条狗,狗平均每周晚上叫 3 次,在盗贼入侵时狗叫的概率被估计为 0.9,问题是:在狗叫的时候发生入侵的概率是多少?

 

我们假设 A 事件为狗在晚上叫,B 为盗贼入侵,则 P(A) = 3 / 7,P(B)=2/(20·365)=2/7300,P(A | B) = 0.9,按照公式很容易得出结果:P(B|A)=0.9*(2/7300)/(3/7)=0.00058

 

②容器里的球

另一个例子,现分别有 A,B 两个容器,在容器 A 里分别有 7 个红球和 3 个白球,在容器 B 里有 1 个红球和 9 个白球,现已知从这两个容器里任意抽出了一个球,且是红球,问这个红球是来自容器 A 的概率是多少?

 

假设已经抽出红球为事件 B,从容器 A 里抽出球为事件 A,则有:P(B) = 8 /20,P(A) = 1 / 2,P(B | A) = 7 / 10,按照公式,则有:P(A|B)=(7 / 10)*(1 / 2)/(8/20)=0.875

 

2)、实例二

假设给定了如下训练样本数据,我们学习的目标是根据给定的天气状况判断你对PlayTennis这个请求的回答是Yes还是No。

Day

Outlook

Temperature

Humidity

Wind

PlayTennis

D1

Sunny

Hot

High

Weak

No

D2

Sunny

Hot

High

Strong

No

D3

Overcast

Hot

High

Weak

Yes

D4

Rain

Mild

High

Weak

Yes

D5

Rain

Cool

Normal

Weak

Yes

D6

Rain

Cool

Normal

Strong

No

D7

Overcast

Cool

Normal

Strong

Yes

D8

Sunny

Mild

High

Weak

No

D9

Sunny

Cool

Normal

Weak

Yes

D10

Rain

Mild

Normal

Weak

Yes

D11

Sunny

Mild

Normal

Strong

Yes

D12

Overcast

Mild

High

Strong

Yes

D13

Overcast

Hot

Normal

Weak

Yes

D14

Rain

Mild

High

Strong

No

 

可以看到这里样本数据集提供了14个训练样本,我们将使用此表的数据,并结合朴素贝叶斯分类器来分类下面的新实例:x = (Outlook = Sunny,Temprature =Cool,Humidity = High,Wind = Strong)

在这个例子中,属性向量X=(Outlook,Temperature, Humidity, Wind),类集合Y={Yes, No}。我们需要利用训练数据计算后验概率P(Yes|x)和P(No|x),如果P(Yes|x)>P(No|x),那么新实例分类为Yes,否则为No。

为了计算后验概率,我们需要计算先验概率P(Yes)和P(No)和类条件概率P(xi|Y)。

因为有9个样本属于Yes,5个样本属于No,所以P(Yes)=9/14, P(No)=5/14。类条件概率计算如下:

P(Outlook=Sunny|Yes)=2/9          P(Outlook=Sunny|No)=3/5

P(Temprature=Cool|Yes)=3/9      P(Temprature=Cool|No)=1/5

P(Humidity=High|Yes)=3/9           P(Humidity=High|No)=4/5 

P(Wind=Strong|Yes)=3/9              P(Wind=Strong|No)=3/5

后验概率计算如下:

P(Yes|x)=P(Outlook=Sunny|Yes)×P(Temprature=Cool|Yes)×P(Humidity=High|Yes)×P(Wind=Strong|Yes)×P(Yes)=2/9×3/9×3/9×3/9×3/9×9/14=2/243=9/1701≈0.00529

P(No|x)=P(Outlook=Sunny|No)×P(Temprature=Cool|No)×P(Humidity=High|No)×P(Wind=Strong|No)×P(No)=3/5×1/5×4/5×3/5×5/14=18/875≈0.02057

通过计算得出P(No|x)>P(Yes|x),所以该样本分类为No[^3]。

 

假设有来了一个新样本x1=(Outlook=Cloudy,Temprature=Cool,Humidity=High,Wind=Strong),要求对其分类。我们来开始计算,

P(Outlook=Cloudy|Yes)=0/9=0         P(Outlook=Cloudy|No)=0/5=0

计算到这里,大家就会意识到,这里出现了一个新的属性值,在训练样本中所没有的。如果有一个属性的类条件概率为0,则整个类的后验概率就等于0,我们可以直接得到后验概率P(Yes|x1)=P(No|x1)=0,这时二者相等,无法分类。

 

当训练样本不能覆盖那么多的属性值时,都会出现上述的窘境。简单的使用样本比例来估计类条件概率的方法太脆弱了,尤其是当训练样本少而属性数目又很大时。

 

3)、实例三:

 


3、朴素贝叶斯模型(Naive Bayesian Model,NBC)——文本分类器

2 朴素贝叶斯文本分类算法 :将贝叶斯分类器应用到文本分类上来。

2.1文本分类问题

在文本分类中,假设我们有一个文档d∈X,X是文档向量空间(document space),和一个固定的类集合C={c1,c2,…,cj},类别又称为标签。显然,文档向量空间是一个高维度空间。我们把一堆打了标签的文档集合<d,c>作为训练样本,<d,c>∈X×C。例如:  <d,c>={Beijing joins the WorldTrade Organization, China}

对于这个只有一句话的文档,我们把它归类到 China,即打上china标签。

我们期望用某种训练算法,训练出一个函数γ,能够将文档映射到某一个类别: γ:X→C这种类型的学习方法叫做有监督学习,因为事先有一个监督者(我们事先给出了一堆打好标签的文档)像个老师一样监督着整个学习过程。

朴素贝叶斯分类器是一种有监督学习,常见有两种模型,多项式模型(multinomial model)和伯努利模型(Bernoullimodel)。

2.2 多项式模型

2.2.1 基本原理

在多项式模型中, 设某文档d=(t1,t2,…,tk),tk是该文档中出现过的单词,允许重复,则先验概率P(c)= 类c下单词总数/整个训练样本的单词总数

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

V是训练样本的单词表(即抽取单词,单词出现多次,只算一个),|V|则表示训练样本包含多少种单词。在这里,m=|V|, p=1/|V|。

 在计算条件概率时,当待分类文本中的某个词没有出现在词库中时,概率为0,会导致很严重的问题,需要考虑拉普拉斯平滑(laplacesmoothing):它是将所有词出现的次数+1,再进行统计

 

P(tk|c)=可以看作是单词tk在证明d属于类c上提供了多大的证据,而P(c)则可以认为是类别c在整体上占多大比例(有多大可能性)。

2.2.3 举例

给定一组分类好了的文本训练数据,如下:

docId

doc

类别In c=China?

1

Chinese Beijing Chinese

yes

2

Chinese Chinese Shanghai

yes

3

Chinese Macao

yes

4

Tokyo Japan Chinese

no

给定一个新样本 >Chinese Chinese Chinese Tokyo Japan 对其进行分类。该文本用属性向量表示为d=(Chinese, Chinese, Chinese, Tokyo, Japan),类别集合为Y={yes, no}。

类yes下总共有8个单词,类no下总共有3个单词,训练样本单词总数为11,因此P(yes)=811,P(no)=311。类条件概率计算如下:

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

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

有了以上类条件概率,开始计算后验概率,

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

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

因此,这个文档属于类别china。

2.3 伯努利模型

2.3.1 基本原理

P(c)= 类c下文件总数/整个训练样本的文件总数     P(tk|c)=(c下包含单词tk的文件数+1)/(c下单词总数+2)   在这里,m=2,p=12。

2.3.3 举例       还是使用前面例子中的数据,不过模型换成了使用伯努利模型。

类yes下总共有3个文件,类no下有1个文件,训练样本文件总数为11,因此P(yes)=34,P(Chinese|yes)=3+13+2=45

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(Chinese|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(Chinese|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/5×2/5×(1−1/3)×(1−1/3)×(1−1/3)=16/729≈0.022

因此,这个文档不属于类别china。

2.4 两个模型的区别

二者的计算粒度不一样,多项式模型以单词为粒度,伯努利模型以文件为粒度,因此二者的先验概率和类条件概率的计算方法都不同。

计算后验概率时,对于一个文档d,多项式模型中,只有在d中出现过的单词,才会参与后验概率计算,伯努利模型中,没有在d中出现,但是在全局单词表中出现的单词,也会参与计算,不过是作为“反方”参与的。

2 0
原创粉丝点击