貝葉斯公式和樸素貝葉斯分類演算法
先上問題吧,我們統計了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中包含的文件總數目 。
結束語
實踐已多次證明,樸素貝葉斯在許多資料集上不遜於甚至優於一些更復雜的分類方法。這裡的原則是:優先嚐試簡單的方法。
機器學習的研究者嘗試用更復雜的學習模型來得到良好的結果,許多年後發現簡單的方法仍可取得同樣甚至更好的結果。