1. 程式人生 > >貝葉斯公式和樸素貝葉斯分類演算法

貝葉斯公式和樸素貝葉斯分類演算法

先上問題吧,我們統計了14天的氣象資料(指標包括outlook,temperature,humidity,windy),並已知這些天氣是否打球(play)。如果給出新一天的氣象指標資料:sunny,cool,high,TRUE,判斷一下會不會去打球。

table 1

outlook temperature humidity windy play
sunny hot high FALSE no
sunny hot high TRUE no
overcast hot high FALSE yes
rainy mild high FALSE yes
rainy cool normal FALSE yes
rainy cool normal TRUE no
overcast cool normal TRUE yes
sunny mild high FALSE no
sunny cool normal FALSE yes
rainy mild normal FALSE yes
sunny mild normal TRUE yes
overcast mild high TRUE yes
overcast hot normal FALSE yes
rainy mild high TRUE no

這個問題可以用決策樹的方法來求解,當然我們今天講的是樸素貝葉斯法。這個一”打球“還是“不打球”是個兩類分類問題,實際上樸素貝葉斯可以沒有任何改變地解決多類分類問題。決策樹也一樣,它們都是有導師的分類方法。

樸素貝葉斯模型有兩個假設:所有變數對分類均是有用的,即輸出依賴於所有的屬性;這些變數是相互獨立的,即不相關的。之所以稱為“樸素”,就是因為這些假設從未被證實過。

注意上面每項屬性(或稱指標)的取值都是離散的,稱為“標稱變數”。

step1.對每項指標分別統計:在不同的取值下打球和不打球的次數。

table 2

outlook temperature
humidity windy play
yes no yes no yes no yes no yes no
sunny 2 3 hot 2 2 high 3 4 FALSE 6 2 9 5
overcast 4 0 mild 4 2 normal 6 1 TRUR 3 3
rainy 3 2 cool 3 1

step2.分別計算在給定“證據”下打球和不打球的概率。

這裡我們的“證據”就是sunny,cool,high,TRUE,記為E,E1=sunny,E2=cool,E3=high,E4=TRUE。

A、B相互獨立時,由:

得貝葉斯定理:

得:

又因為4個指標是相互獨立的,所以

我們只需要比較P(yes|E)和P(no|E)的大小,就可以決定打不打球了。所以分母P(E)實際上是不需要計算的。

P(yes|E)*P(E)=2/9×3/9×3/9×3/9×9/14=0.0053

P(no|E)*P(E)=3/5×1/5×4/5×3/5×5/14=0.0206

所以不打球的概率更大。

零頻問題

注意table 2中有一個數據為0,這意味著在outlook為overcast的情況下,不打球和概率為0,即只要為overcast就一定打球,這違背了樸素貝葉斯的基本假設:輸出依賴於所有的屬性。

資料平滑的方法很多,最簡單最古老的是拉普拉斯估計(Laplace estimator)--即為table2中的每個計數都加1。它的一種演變是每個計數都u(0<u<1)。

Good-Turing是平滑演算法中的佼佼者,有興趣的可以瞭解下。
對於任何發生r次的事件,都假設它發生了r*次:

nr是歷史資料中發生了r次的事件的個數。

數值屬性

當屬性的取值為連續的變數時,稱這種屬性為“數值屬性“。通常我們假設數值屬性的取值服從正態分佈。

outlook temperature humidity windy play
yes no yes no yes no yes no yes no
sunny 2 3 83 85 86 85 FALSE 6 2 9 5
overcast 4 0 70 80 96 90 TRUR 3 3
rainy 3 2 68 65 80 70
64 72 65 95
69 71 70 91
75 80
75 70
72 90
81 75
sunny 2/9 3/5 mean value 73 74.6 mean value 79.1 86.2 FALSE 6/9 2/5 9/15 5/14
overcast 4/9 0/5 deviation 6.2 7.9 deviation 10.2 9.7 TRUR 3/9 3/5

正態分佈的概率密度函式為:

現在已知天氣為:outlook=overcast,temperature=66,humidity=90,windy=TRUE。問是否打球?

f(溫度=66|yes)=0.0340

f(溼度=90|yes)=0.0221

yes的似然=2/9×0.0340×0.0221×3/9×9/14=0.000036

no的似然=3/5×0.0291×0.0380×3/5×9/14=0.000136

不打球的概率更大一些。

用於文字分類

樸素貝葉斯分類是一種基於概率的有導師分類器。

詞條集合W,文件集合D,類別集合C。

 根據(1)式(去掉分母)得文件d屬於類別cj的概率為:

p(cj)表示類別j出現的概率,讓屬於類別j的文件數量除以總文件數量即可。

而已知類別cj的情況下詞條wt出現的後驗概率為:類別cj中包含wt的文件數目  除以 類別cj中包含的文件總數目 。

結束語

實踐已多次證明,樸素貝葉斯在許多資料集上不遜於甚至優於一些更復雜的分類方法。這裡的原則是:優先嚐試簡單的方法。

機器學習的研究者嘗試用更復雜的學習模型來得到良好的結果,許多年後發現簡單的方法仍可取得同樣甚至更好的結果。