1、概述與實例算法
貝葉斯定理被應用於各類各樣的場景下,例如疾病預測、垃圾郵件分類、新聞分類、自動駕駛……oop
固然我不是搞數學的,我這裏只是就應用的角度來談談樸素貝葉斯的使用,樸素貝葉斯中一個重要的假設:各個因素相互獨立。大數據
貝葉斯定理就一句話:P(B|A)=P(A|B)P(B)/P(A),它描述了在A條件發生的狀況下B發生的機率,或許直接看公式有點懵圈,下面請看這樣一個例子:博客
有一組統計數據是描述小明上班是否會遲到:數學
天晴table |
交通良好技術 |
不遲到統計 |
下雨數據 |
交通良好tab |
不遲到 |
下雨 |
交通良好 |
遲到 |
天晴 |
交通堵塞 |
遲到 |
下雨 |
交通堵塞 |
不遲到 |
今天,下雨、交通堵塞,咱們來預測一下小明上班是否會遲到。這裏咱們假設各個因素之間相互獨立。
一、在下雨、交通堵塞的狀況下遲到的機率:
P(遲到|下雨×交通堵塞)=P(下雨×交通堵塞|遲到)×P(遲到)/P(下雨×交通堵塞)
=P(下雨|遲到)×p(交通堵塞|遲到)×P(遲到)/P(下雨)p(交通堵塞)
=(1/2×1/2×2/5)/(3/5×2/5)=5/12
二、在下雨、交通堵塞的狀況下不遲到的機率:
P(不遲到|下雨×交通堵塞)=P(下雨×交通堵塞|不遲到)×P(不遲到)/P(下雨×交通堵塞)
=P(下雨|不遲到)×p(交通堵塞|不遲到)×P(不遲到)/P(下雨)p(交通堵塞)
=(2/3×1/3×3/5)/(3/5×2/5)=5/9
那麼我基於這組數據,更傾向於小明今天不會遲到。
若是樣本足夠大,那麼結果更趨近於真相。這就是樸素貝葉斯。
2、簡化
一、假設一組數據有因子集合{P1,P2,……Pn}能夠肯定該數據屬於分類C,那麼
p(C|P1P2……Pn)=p(P1P2...Pn|C)P(C) / p(P1P1...Pn)
二、因爲p(P1P1...Pn)對於全部類別C都是相同的,那麼就等價於求
p(P1P1...Pn|C)P(C) 的最大值
三、假設條件相互獨立
p(P1P1...Pn|C)P(C) =p(P1|C)*p(P2|C)*p(Pn|C)*p(C)
四、最終問題簡化爲求p(P1|C)*p(P2|C)*p(Pn|C)*p(C)的最大值
3、問題
問題簡化以後,單機版的樸素貝葉斯很好實現,可是處理大規模數據,仍是顯得愛莫能助。
大數據技術發展,給了咱們運算全量數據的能力,那麼基於Hadoop MapReduce模型的樸素貝葉斯算法該如何實現呢?請關注下一篇《樸素貝葉斯(二)》。
快樂源於分享。
此博客乃做者原創, 轉載請註明出處