朴素贝叶斯(一)
為什么80%的碼農都做不了架構師?>>> ??
一、概述與實例
????貝葉斯定理被應用于各種各樣的場景下,例如疾病預測、垃圾郵件分類、新聞分類、自動駕駛……
????當然我不是搞數學的,我這里只是就應用的角度來談談樸素貝葉斯的使用,樸素貝葉斯中一個重要的假設:各個因素相互獨立。
????貝葉斯定理就一句話:P(B|A)=P(A|B)P(B)/P(A),它描述了在A條件發生的情況下B發生的概率,或許直接看公式有點懵圈,下面請看這樣一個例子:
有一組統計數據是描述小明上班是否會遲到:
| 天晴 | 交通良好 | 不遲到 |
| 下雨 | 交通良好 | 不遲到 |
| 下雨 | 交通良好 | 遲到 |
| 天晴 | 交通堵塞 | 遲到 |
| 下雨 | 交通堵塞 | 不遲到 |
今天,下雨、交通堵塞,我們來預測一下小明上班是否會遲到。這里我們假設各個因素之間相互獨立。
1、在下雨、交通堵塞的情況下遲到的概率:
P(遲到|下雨×交通堵塞)=P(下雨×交通堵塞|遲到)×P(遲到)/P(下雨×交通堵塞)
=P(下雨|遲到)×p(交通堵塞|遲到)×P(遲到)/P(下雨)p(交通堵塞)
=(1/2×1/2×2/5)/(3/5×2/5)=5/12
2、在下雨、交通堵塞的情況下不遲到的概率:
P(不遲到|下雨×交通堵塞)=P(下雨×交通堵塞|不遲到)×P(不遲到)/P(下雨×交通堵塞)
=P(下雨|不遲到)×p(交通堵塞|不遲到)×P(不遲到)/P(下雨)p(交通堵塞)
=(2/3×1/3×3/5)/(3/5×2/5)=5/9
那么我基于這組數據,更傾向于小明今天不會遲到。
如果樣本足夠大,那么結果更趨近于真相。這就是樸素貝葉斯。
二、簡化
1、假設一組數據有因子集合{P1,P2,……Pn}可以確定該數據屬于分類C,那么
p(C|P1P2……Pn)=p(P1P2...Pn|C)P(C) / p(P1P1...Pn)
2、由于p(P1P1...Pn)對于所有類別C都是相同的,那么就等價于求
p(P1P1...Pn|C)P(C) 的最大值
3、假設條件相互獨立
p(P1P1...Pn|C)P(C) =p(P1|C)*p(P2|C)*p(Pn|C)*p(C)
4、最終問題簡化為求p(P1|C)*p(P2|C)*p(Pn|C)*p(C)的最大值
三、問題
????問題簡化之后,單機版的樸素貝葉斯很好實現,但是處理大規模數據,還是顯得心有余而力不足。
????大數據技術發展,給了我們運算全量數據的能力,那么基于Hadoop MapReduce模型的樸素貝葉斯算法該如何實現呢?請關注下一篇《樸素貝葉斯(二)》。
快樂源于分享。
? ?此博客乃作者原創,?轉載請注明出處???
轉載于:https://my.oschina.net/u/1778239/blog/893634
總結
- 上一篇: Android开发各类常见错误解决方案
- 下一篇: mac安装python3