樸素貝葉斯算法

作者:phinecos(洞庭散人)

Bloghttp://phinecos.cnblogs.com/

Email[email protected]

Preface

本文緣起於最近在讀的一本書-- Tom M.Mitchell《機器學習》,書中第6章詳細講解了貝葉斯學習的理論知識,爲了將其應用到實際中來,參考了網上許多資料,從而得此文。文章將分爲兩個部分,第一部分將介紹貝葉斯學習的相關理論(如果你對理論不感興趣,請直接跳至第二部分<<基於樸素貝葉斯分類器的文本分類算法(下)>>)。第二部分講如何將貝葉斯分類器應用到中文文本分類,隨文附上示例代碼。

Introduction

我們在《概率論和數理統計》這門課的第一章都學過貝葉斯公式和全概率公式,先來簡單複習下:

條件概率

定義A, B是兩個事件,且P(A)>0 P(BA)=P(AB)/P(A)爲在條件A下發生的條件事件B發生的條件概率。

乘法公式P(A)>0 則有P(AB)=P(BA)P(A) 

全概率公式和貝葉斯公式

定義S爲試驗E的樣本空間,B1, B2, …BnE的一組事件,若BiBj=Ф, i≠j, i, j=1, 2, …,n; B1B2Bn=S則稱B1, B2, …, Bn爲樣本空間的一個劃分。

定理設試驗E的樣本空間爲,AE的事件,B1, B2, …,Bn爲的一個劃分,且P(Bi)>0 (i=1, 2, …n),則P(A)=P(AB1)P(B1)+P(AB2)+ …+P(ABn)P(Bn)稱爲全概率公式。

定理設試驗俄E的樣本空間爲SAE的事件,B1, B2, …,Bn爲的一個劃分,則

P(BiA)=P(ABi)P(Bi)/∑P(BAj)P(Aj)=P(BAi)P(Ai)/P(B) 

稱爲貝葉斯公式。說明:ij均爲下標,求和均是1n  

下面我再舉個簡單的例子來說明下。

示例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.03P(陰性|cancer)=0.97

假設現在有一個新病人,化驗測試返回陽性,是否將病人斷定爲有癌症呢?我們可以來計算極大後驗假設:

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

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

因此,應該判斷爲無癌症。

貝葉斯學習理論

貝葉斯是一種基於概率的學習算法,能夠用來計算顯式的假設概率,它基於假設的先驗概率,給定假設下觀察到不同數據的概率以及觀察到的數據本身(後面我們可以看到,其實就這麼三點東西,呵呵)。

我們用P(h)表示沒有訓練樣本數據前假設h擁有的初始概率,也就稱爲h的先驗概率,它反映了我們所擁有的關於h是一個正確假設的機會的背景知識。當然如果沒有這個先驗知識的話,在實際處理中,我們可以簡單地將每一種假設都賦給一個相同的概率。類似,P(D)代表將要觀察的訓練樣本數據D的先驗概率(也就是說,在沒有確定某一個假設成立時D的概率)。然後是P(D/h),它表示假設h成立時觀察到數據D的概率。在機器學習中,我們感興趣的是P(h/D),也就是給定了一個訓練樣本數據D,判斷假設h成立的概率,這也稱之爲後驗概率,它反映了在看到訓練樣本數據D後假設h成立的置信度。(注:後驗概率p(h/D)反映了訓練數據D的影響,而先驗概率p(h)是獨立於D的)。

 

2008102100.jpg

P(h|D) = P(D|h)P(h)/p(D),從貝葉斯公式可以看出,後驗概率p(h/D)取決於P(D|h)P(h)這個乘積,呵呵,這就是貝葉斯分類算法的核心思想。我們要做的就是要考慮候選假設集合H,並在其中尋找當給定訓練數據D時可能性最大的假設hh屬於H)。

簡單點說,就是給定了一個訓練樣本數據(樣本數據已經人工分類好了),我們應該如何從這個樣本數據集去學習,從而當我們碰到新的數據時,可以將新數據分類到某一個類別中去。那可以看到,上面的貝葉斯理論和這個任務是吻合的。

樸素貝葉斯分類

2008102101.jpg

也許你覺得這理論還不是很懂,那我再舉個簡單的例子,讓大家對這個算法的原理有個快速的認識。(注:這個示例摘抄自《機器學習》這本書的第三章的表3-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個訓練樣本,我們將使用此表的數據,並結合樸素貝葉斯分類器來分類下面的新實例:

(Outlook = sunny,Temprature = cool,Humidity = high,Wind = strong)

我們的任務就是對此新實例預測目標概念PlayTennis的目標值(yesno).

由上面的公式可以得到:

2008102102.jpg

可以得到:

      P(PlayTennis =yes) = 9/14 = 0.64,P(PlayTennis=no)=5/14 = 0.36

      P(Wind=Stong| PlayTennis =yes)=3/9=0.33,p(Wind=Stong| PlayTennis =no)=3/5 = 0.6

其他數據類似可得,代入後得到:

P(yes)P(Sunny|yes)P(Cool|yes)P(high|yes)P(Strong|yes) = 0.0053

P(no)P(Sunny|no)P(Cool|no)P(high|no)P(Strong|no)=0.0206

因此應該分類到no這一類中。

 

貝葉斯文本分類算法

好了,現在開始進入本文的主旨部分:如何將貝葉斯分類器應用到中文文本的分類上來?

根據聯合概率公式(全概率公式)

 

o_beyes1.jpgo_beyes2.jpgo_beyes3.jpg

M——訓練文本集合中經過踢出無用詞去除文本預處理之後關鍵字的數量。

作者:洞庭散人

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章