基於樸素貝葉斯分類器的文本分類算法(上)

 

轉載請保留做者信息:算法

做者:phinecos(洞庭散人)機器學習

Bloghttp://phinecos.cnblogs.com/ide

Emailphinecos@163.com學習

 Preface測試

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

 Introductionorm

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

條件機率 blog

定義 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的)。

 

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

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

樸素貝葉斯分類

 

也許你以爲這理論還不是很懂,那我再舉個簡單的例子,讓你們對這個算法的原理有個快速的認識。(注:這個示例摘抄自《機器學習》這本書的第三章的表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).

由上面的公式能夠獲得:

能夠獲得:

      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這一類中。

 

貝葉斯文本分類算法

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

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

 

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

相關文章
相關標籤/搜索