《大話機器學習算法》貝葉斯—用貝葉斯計算喫火鍋的概率


寫在前面的話

前面用了三篇內容講了決策樹算法,也算是淺入淺出了,對於入門來說還是足夠的

學完之後,你應該已經掌握了:

決策樹理論+算法優缺點+建立決策樹+參數優化

如果你還沒有掌握決策樹的這些技能點,根據貝葉斯原理你有90%的概率也掌握不了這篇🐶


假設你已經掌握了上面決策樹的內容,那麼學完這篇你會掌握以下技能:

  • 一種新的分類算法(貝葉斯分類)
  • 一個很有名氣的概率計算公式
  • 隨時隨地計算下一頓喫火鍋的概率🐶

準備好了嗎?


情景一:一起喫個飯吧

在許媒婆的有意撮合之下,韓梅梅的第一個相親對象竟然是老同學李雷雷

強忍住自己內心小九九的韓梅梅終於接到了李雷雷的邀請

李雷雷: 梅梅,明天有空嗎?一起出去喫個飯?

李梅梅: (略一思考)剛好明天也沒啥事,我們喫什麼呢?

李雷雷: 好嘞,那我們就根據明天的天氣決定喫什麼吧

李梅梅: (喫什麼要根據天氣決定?不應該根據我的喜好?)

感覺到一絲異樣的李雷雷連忙補充道:

李雷雷: 別急別急,你先聽我說完

是這樣的,從今年年初開始,一共有20天是下雨天,這20天裏面有15天你是在家裏喫飯,其中有9頓是在家打火鍋,有5天是不在家喫飯,這5天有一天是去和朋友去外面喫火鍋。

所以呢,如果明天下雨,根據歷史數據,你可能最想喫火鍋噢。

韓梅梅: (俏臉微紅)你怎麼會知道這個數據?許姨不是說不告訴外人嘛

李雷雷: (嘿嘿一笑)如果明天下雨了,在家喫火鍋?

韓梅梅: 好啊好啊,你怎麼會知道我這樣想的?

李雷雷: 因爲我會計算正向概率!

一共20天,其中15天在家喫飯,所以在家喫飯的概率:15/20=75%

而且啊,15天裏面有9天在家喫火鍋,在家喫火鍋的概率:9/15=60%

另外啊,不在家喫火鍋的概率:1/5=20%

韓梅梅: 厲害!不過你說的正向概率是什麼?

上面的問題就是正向概率,表示從前往後推導一件事情發生的概率,你可能還聽過一個詞:先驗概率,它兩一回事

對了,還有一個是條件概率,例如 P(喫火鍋|在家喫) 表示在家喫飯的時候喫火鍋

相應的逆向概率就是從反向推理事物發生的概率,也叫後驗概率

李雷雷: 給你出道題,如果明天喫火鍋,那明天在家喫的概率是多少?算對了明天就去喫火鍋!

韓梅梅: …(準備打人了)

哈哈哈哈,算不出來別生氣,我們這裏就用到了逆向概率。


貝葉斯原理

來,一起理一下思路:

我們知道,在家喫飯的概率 :

P()=15/20=75%P(在家喫) = 15/20=75\%

在家喫火鍋的概率:

P()=9/15=60% P(在家喫火鍋) = 9/15=60\%

另外還有,不在家喫飯的概率 :

P()=5/20=25%P(不在家喫) = 5/20=25\%

不在家喫火鍋的概率 :

P()=1/5=20%P(不在家喫火鍋) = 1/5 = 20\%


這裏,有兩點需要注意一下:

  • 在家喫火鍋≠在家的時候喫火鍋
  • 不在家喫火鍋≠不在家的時候喫火鍋

因爲後者是一個聯合概率,表示(不)在家的條件下喫火鍋

所以後者可以這樣表示:

P()=P()P() P(在家的時候喫火鍋)=P(在家喫)*P(喫火鍋|在家喫)

P()=P()P() P(不在家的時候喫火鍋)=P(不在家喫)*P(喫火鍋|不在家喫)


那麼我們可以算出來,下雨天喫火鍋的概率:

P()=P()P()+P()P()=50% P(喫火鍋) = P(在家喫)*P(喫火鍋|在家喫) + P(不在家喫) *P(喫火鍋|不在家) = 50\%
回到我們的問題,今天喫火鍋的條件下,在家喫的概率是:

P()=P()P()=P()P()P()=75%60%75%60%+25%20%=90% P(在家喫|喫火鍋) = \frac {P(在家的時候喫火鍋)} {P(喫火鍋)} = \frac {P(在家喫)*P(喫火鍋|在家喫)} {P(喫火鍋)} = \frac {75\%*60\%} {75\%*60\%+25\%*20\%} = 90\%

韓梅梅: 好高啊,我有點懷疑這個數字

那我們也可以反向驗證一下:

喫火鍋一共10次,在家喫9次,不在家喫1次,所以在家喫的概率是90%

李雷雷: 算不出來沒關係,我這有一個萬能公式

韓梅梅: 快、快告訴我

我們直接另 喫火鍋=B,在家喫=A1A_1,不在家喫=A2A_2,整理一下就是大名鼎鼎的貝葉斯公式:

P(A1B)=P(A1)P(BA1)P(A1)P(BA1)+P(A2)P(BA2) P(A_1|B) = \frac {P(A_1)*P(B|A_1)} {P(A_1)*P(B|A_1) + P(A_2)*P(B|A_2)}
因爲喫火鍋只有兩種情況,在家喫和在不在家喫,剛好對應了分母中的兩種情況。

於是貝葉斯公式經常這樣寫:

P(A1B)=P(A1)P(BA1)P(B) P(A_1|B) = \frac {P(A_1)*P(B|A_1)} {P(B)}

似然函數

其實這裏還有一個知識點,叫做似然函數,以及最大似然估計,我直接貼過來以前的文章,都有寫過:貝葉斯的相關概念

以下是摘錄:

似然卻剛好與概率相反,是在已經確定的結果下推測產生這個結果的可能參數θ。注意,是已經確定了結果的前提下。

還是拋硬幣的例子:
隨機拋一枚硬幣100次,結果出現60次數字朝上,那我們去判斷這枚硬幣的時候發現這並不是一枚標準的硬幣,因爲數字朝上的概率60%>人頭朝上的概率40%。

我們運用出現的結果去判斷事情本身的性質(參數),也就是似然。



情景二:喫什麼我說了算!

樸素貝葉斯

韓梅梅: 我記得在學校裏面老師還教過樸素貝葉斯,那又是什麼?

之所以稱爲樸素貝葉斯,是因爲它假設每個輸入變量是獨立的

就比如高富帥三個特徵之間互不影響,帥的不一定高,高的不一定富

於是,求一個人高富帥的概率:

P(ABC)=P(A)P(B)P(C) P(ABC)=P(A)*P(B)*P(C)
通過樸素貝葉斯預測概率的時候,只需要用數據訓練一個貝葉斯模型,其實也就是計算出先驗概率和條件概率,然後貝葉斯就可以預測出後驗概率來。

就好比明天下雨了我們要不要喫火鍋呢?在家喫還是去外面喫呢?都可以通過樸素貝葉斯算出概率

韓梅梅: 喫!我說了算!和貝葉斯無關

李雷雷: 好好好

你別看現在我們是用來做預測,其實貝葉斯最適合解決分類問題

舉幾個例子你就知道了:

垃圾郵件你應該有了解過,貝葉斯通過前期的系列訓練,可以將未來的郵件進行分類(正常or垃圾)

世界盃比賽球隊的輸贏預測,通過歷史球隊戰績預測最終的輸贏,也是通過貝葉斯實現的


在實際分類過程中,貝葉斯分類主要包括兩種:離散數據的分類和連續數據的分類

離散數據的分類

離散數據的分類根據…

韓梅梅: 別急別急,你先告訴我什麼是離散數據?

離散數據是有明確邊界的數據,就像身高的高中低,成績的排名1234等,像1~100之間的任何數組組成的數據集就是連續數據。

離散數據的分類是根據貝葉斯定理實現,特別是樸素貝葉斯的應用

看個例子唄,如果說現在有一個人的特徵是:身高中、體重中、鞋碼大 ,這個人是男的還是女的?請你來分個類

文章首發:公衆號『知秋小一』

ok,我們先確定一下屬性:

A1A_1=身高中,A2A_2=體重中,A3A_3=鞋碼小,B1B_1=男,B2B_2=女

我們的目的是計算P(B1A1A2A3)P(B_1|A_1A_2A_3)P(B2A1A2A3)P(B_2|A_1A_2A_3),對應概率大的就是結果了

前面已知貝葉斯公式:

P(B1A1A2A3)=P(B1)P(A1A2A3B1)P(A1A2A3) P(B_1|A_1A_2A_3) = \frac {P(B_1)*P(A_1A_2A_3|B_1)} {P(A_1A_2A_3)}

P(B2A1A2A3)=P(B2)P(A1A2A3B2)P(A1A2A3) P(B_2|A_1A_2A_3) = \frac {P(B_2)*P(A_1A_2A_3|B_2)} {P(A_1A_2A_3)}

分母都一樣,那我們直接比較分子就行了

又根據樸素貝葉斯:

P(A1A2A3B1)=P(A1B1)P(A2B1)P(A3B1) P(A_1A_2A_3|B_1) = P(A_1|B_1) * P(A2|B_1) * P(A_3|B_1)
直接計算:

P(B1)P(A1A2A3B1)=12121204=0 P(B_1)*P(A_1A_2A_3|B_1) = \frac{1}{2} * \frac{1}{2} * \frac{1}{2} * \frac{0}{4} = 0

P(B2)P(A1A2A3B2)=12141212=132 P(B_2)*P(A_1A_2A_3|B_2) = \frac{1}{2} * \frac{1}{4} * \frac{1}{2} * \frac{1}{2} = \frac{1}{32}

第二個結果對應的是女孩子,那就是她了


連續數據的分類

連續型數據的進行分類一般有兩種方法,先看數據集:

文章首發:公衆號『知秋小一』

一種方法是我們將連續型數據轉換爲離散型

比如說體重特徵我們設置幾個範圍T1(100-120),T2(120-140)…這樣子連續型數據映射在相應範圍,實現離散化

按照上面離散化的處理方式即可


另一種方式是我們假設身高、體重、鞋碼都是正態分佈,通過樣本計算出均值和方差

還記得正態分佈的密度函數嗎,我們把點的值帶進去,就能得到相應的概率值。

韓梅梅: 沒看出來貝葉斯公式這麼厲害!

李雷雷: 哈哈,那是,用處也挺大的呢。另外我已經預約好了座位,明天不見不散!



總結一下

理解貝葉斯算法之前先了解貝葉斯定理,也就是後驗概率的計算;在此基礎上,通過了解樸素貝葉斯的特性,對離散和連續數據進行分類操作。

相比而言,樸素貝葉斯簡單很多,算法應用也很簡單,下節通過項目我們一起實戰一下貝葉斯分類。


貝葉斯算法的優缺點

優點:

  • 對待預測樣本進行預測,過程簡單速度快

  • 對於多分類問題同樣有效,複雜度也並不會有大程度提升

  • 在分佈獨立這個假設的情況下,貝葉斯分類器效果奇好

  • 對於類別類的輸入特徵變量,效果奇好;對於連續型變量特徵,默認符合正態分佈

缺點:

  • 測試集中的一個類別變量,訓練集中沒出現過,則概率爲0,預測就沒用了。
    可以使用平滑操作(拉普拉斯平滑)

  • 樸素貝葉斯獨立分佈的假設,實際生活中很難完全獨立

  • 樸素貝葉斯不存在bagging、boosting等模型融合的方法(因爲沒有variance可以減少)


最後,請收下這個吧

文章首發:公衆號『知秋小一』

思維導圖會被後臺二壓,不介意的同學在原文鏈接中獲取

原文鏈接: 大話系列 | 貝葉斯(上)—下雨天喫什麼?



寫在後面的話

貝葉斯分類主要是那幾個公式,大家理解了就好,不算是特別難,所以我就直接貼公示出來了

千萬不要一看見公式就自我放棄,稍微用點心思去看,你收穫的肯定不止是一個算法。


我是小一,我們 下節見

文章首發:公衆號【知秋小一】

文章同步:掘金,簡書,csdn

歡迎三連支持小一,持續更新中😀





大話系列文章:

《大話機器學習算法》決策樹—看這一篇就夠了
《大話機器學習算法》決策樹—實戰項目之泰坦尼克生存預測

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章