[機器學習] MultinomialNB 貝氏(貝葉氏)分類-理論篇

Derek Wu
Aug 3, 2020

--

機器學習裡面,有個簡單又實用的model 叫做貝氏分類器。這個詞或許很陌生,但大家的生活中已經有很多相關的應用,比如:垃圾郵件分類、塞車預測、甚至是簡單的天氣預測..等。

現在,貝氏分類可以應用在更多的地方,比如:AI聊天機器人、案件分類(預測)…等,可以參考另一篇文章 — Python實作篇(2022/2月終於出版啦!)。

現在就來介紹一下,貝氏分類器的背後貝氏定理的原理、概念說明。

進入正題

在機器學習套件sklearn裡的MultinomialNB貝氏分類器,是建立在公式 —
貝氏定理 上。

維基百科對於貝氏定理的說明:

貝氏定理(英語:Bayes’ theorem)是概率論中的一個定理,描述在已知一些條件下,某事件的發生機率。比如,如果已知某癌症與壽命有關,使用貝氏定理則可以通過得知某人年齡,來更加準確地計算出他罹患癌症的機率。

公式非常簡單,一行就結束了:

貝氏定理

其中 P(A|B) 代表條件機率,計算方法為

也就是 B發生的情況(條件)下,A發生的機率;
比如 下雨(B)的情況下,遲到(A)的機率。

來個例子吧

其實生活中很常見,假設過去一周Jeff 遲到跟天氣的數據如下:

如果我們要算 Jeff在 雨天(B)的情況下,會遲到(A)的機率:

根據資料,這周有三天下雨,下雨的三天中又有兩天遲到,所以
P(遲到|雨天) = 2/3 = 66.7%

貝氏定理上場

如果用上面圖片的貝氏定理來算就會是

其中
P(下雨) =下雨的機率 = 3/7
P(遲到) = 遲到的機率 = 3/7
P(下雨|遲到) = 遲到的情況下,下雨的機率 = 2/3
最後算出來 雨天遲到的機率 = (2/3)(3/7) / (3/7) = 2/3 = 66.7%

當然遲到的原因可能複雜,於是我們可以加入星期幾、時間、開車騎車等更多的條件,整個公式可以拓展成

圖片是拿來嚇嚇人的,實際動手算比較快。

Q: 今天是個下雨平日,姊夫Jeff會不會遲到?

平日下雨,遲到的機率:

同理 ,平日下雨,準時(沒遲到)的機率:

透過簡單的貝氏定理計算,我們算出平日下雨Jeff遲到的機率(62%) > 準時的機率 35%。

結論如果有人在一個平日下雨的日子跟你打賭Jeff今天會不會遲到,猜遲到,你會有比較大的機會贏錢 (誤

當然,除了猜Jeff會不會遲到,這個用在文字上面也是很強大的,就是我的下一篇文章 — 聊天機器人

還有不懂可以參考這個國外的影片,講得非常清楚

了解原理可以在資料調整上更有方向,如果還看不懂直接用用看也可以,實作可以看我的另一篇文章Python實作(待出版XD)

祝大家都能在自己的人生、事業上成功,然後跟別人打賭都贏。

如果有讓你看完這篇文,可以幫我拍手 1–10 下
如果覺得文還算有趣,可以幫我拍手 10-20 下
如果覺得這文章讓你有點收穫,請幫我拍手 20–30 下
如果覺得想看到更多關於學習筆記的文章,可以幫我拍手 30–50 下
讓我知道,也記得 Follow我 DerekWu
更歡迎你在下方留言,我很樂意與你討論聊天或回答問題!

--

--

Derek Wu

B.S. in Math, 4 years Recsys engineer exp, currently pursuing M.S. in Computer Science. 數學系畢業,美國交換學生,四年演算法&系統工程師經驗,開發推薦系統。目前研究生在讀中, Work hard, play hard!