理解樸素貝葉斯分類的拉普拉斯平滑
這個男生的四個特徵是長相不帥,性格不好,身高矮,不上進,我們最終得出的結論是女生不嫁!很多人說這是一道送分題,哈哈哈哈。我們用數學演算法也說明了不靠譜是取不到老婆滴!
那麼我們再來一個例子,假如此時另外一對情侶,這對情侶中,男生的四個特徵是,長相帥,性格爆好,身高高,上進,那麼他的女朋友嫁還是不嫁呢?可能又會有小夥伴說這是一道送分題,是不是,我們下面用事實說話!
下面通過例子來引出拉普拉斯平滑過程!
還是下面的訓練數據:
四個特徵集合分別長相{帥,不帥}、性格{爆好,好,不好}、身高{高,中,矮}、上進與否{上進,不上進}
我們此時要求出該男生在四個特徵分別是長相帥,性格爆好,身高高,上進的情況下,他對應的嫁與不嫁的概率誰大誰小,從而得出結論!
也就是要比較p(嫁|長相帥,性格爆好,身高高,上進)與p(不嫁|長相帥,性格爆好,身高高,上進)的概率大小。
按照樸素貝葉斯演算法公式,我們可以得到如下公式:
由於倆者的分母都是p(長相帥)、p(性格爆好)、p(身高高)、p(上進),那麼我們可以不算分母,比較的時候只比較倆個公式分子大小即可。好的,下面我們開始計算,先計算在四個特徵的條件下,嫁的概率。
我們需要分別計算p(性格爆好|嫁)、p(長相帥|嫁)、p(身高高|嫁)、p(上進|嫁)
首先我們來算p(性格爆好|嫁)=?我們觀察訓練數據,發現如下:
而這個錯誤的造成是由於訓練量不足,會令分類器質量大大降低。為了解決這個問題,我們引入Laplace校準(這就引出了我們的拉普拉斯平滑),它的思想非常簡單,就是對沒類別下所有劃分的計數加1,這樣如果訓練樣本集數量充分大時,並不會對結果產生影響,並且解決了上述頻率為0的尷尬局面。
引入拉普拉斯平滑的公式如下:
其中ajl,代表第j個特徵的第l個選擇,代表第j個特徵的個數,K代表種類的個數。為1,這也很好理解,加入拉普拉斯平滑之後,避免了出現概率為0的情況,又保證了每個值都在0到1的範圍內,又保證了最終和為1的概率性質!
我們可以通過下面例子更加深刻的理解這個公式:(現在我們是加入拉普拉斯平滑)
加入拉普拉斯平滑後
我們先需要分別計算p(性格爆好|嫁)、p(長相帥|嫁)、p(身高高|嫁)、p(上進|嫁),p(嫁)
p(性格爆好|嫁)=?統計滿足要求的如下面紅色部分
沒有一個滿足是性格爆好的條件,但是此時概率不為0,按照加入拉普拉斯平滑後的公式:性格特徵的個數為爆好,好,不好,三種情況,那麼為3,則最終概率為1/9 (嫁的個數為6+特徵個數為3)
p(長相帥|嫁)=?統計滿足條件的如下面紅色部分:
由上圖可知滿足要求的為3個,按照加入拉普拉斯平滑後的公式:
長相特徵的個數為帥,不帥,倆種情況,那麼為2,則最終概率p(長相帥|嫁)為4/8 (嫁的個數為6+特徵個數為2)
p(身高高|嫁) = ?統計滿足條件的如下面紅色部分:
由上圖可知滿足要求的為3個,按照加入拉普拉斯平滑後的公式:
身高特徵的個數為高,中,矮情況,那麼為3,則最終概率p(身高高|嫁)為4/9 (嫁的個數為6+特徵個數為3)
p(上進|嫁)=?統計滿足要求的如下面紅色部分:
由上圖可知滿足要求的為5個,按照加入拉普拉斯平滑後的公式:
上進特徵的個數為上進,不上進情況,那麼為2,則最終概率p(上進|嫁)為6/8 (嫁的個數為6+特徵個數為2)
p(嫁) = ?滿足要求的如下紅色標註:
由上圖可知滿足要求的為6個,按照加入拉普拉斯平滑後的公式:
種類的個數為嫁,不嫁情況,那麼K為2,則最終概率p(嫁)為7/14 = 1/2 (嫁的個數為6+種類個數為2)
到這裡為止,我們已經算出了在該男生條件下,嫁的概率為:
p(嫁|長相帥、性格爆好、身高高、上進) = 1/9*4/8*4/9*6/8*1/2
下面我們需要算出p(不嫁|長相帥、性格爆好、身高高、上進)的概率,然後與上面的數值進行比較即可,演算法與上面完全一模一樣!這裡也走一遍。
我們需要估計出p(長相帥|不嫁)、p(性格爆好|不嫁)、p(身高高|不嫁)、p(上進|不嫁),p(不嫁)的概率分別為多少。
p(長相帥|不嫁)=?滿足要求如下面紅色標註:
由上圖可知滿足要求的為5個,按照加入拉普拉斯平滑後的公式:
長相帥特徵的個數為不帥,帥情況,那麼為2,則最終概率p(長相不帥|不嫁)為6/8 (不嫁的個數為6+特徵個數為2)
p(性格爆好|不嫁)=?滿足要求如下面紅色標註:
沒有一個滿足是性格爆好的條件,但是此時概率不為0,按照加入拉普拉斯平滑後的公式:
性格特徵的個數為爆好,好,不好,三種情況,那麼為3,則最終概率p(性格爆好|不嫁)為1/9 (不嫁的個數為6+特徵個數為3)
p(身高高|不嫁)=?滿足要求如下面紅色標註:
沒有一個滿足是身高高的條件,但是此時概率不為0,按照加入拉普拉斯平滑後的公式:
身高特徵的個數為高,中,矮,三種情況,那麼為3,則最終概率p(身高高|不嫁)為1/9 (不嫁的個數為6+特徵個數為3)
p(上進|不嫁)=?滿足要求如下面紅色標註:
由上圖可知滿足要求的為3個,按照加入拉普拉斯平滑後的公式:
上進特徵的個數為上進,不上進情況,那麼為2,則最終概率p(上進|不嫁)為4/8 (不嫁的個數為6+特徵個數為2)
p(不嫁)=?滿足要求的如紅色標註:
由上圖可知滿足要求的為6個,按照加入拉普拉斯平滑後的公式:
種類的個數為嫁,不嫁情況,那麼K為2,則最終概率p(不嫁)為7/14 = 1/2 (不嫁的個數為6+種類個數為2)
到這裡為止,我們已經算出了在該男生條件下,不嫁的概率為:
p(不嫁|長相帥、性格爆好、身高高、上進) = 5/8*1/9*1/9*3/8*1/2
結論
於是我們可以得到
p(嫁|長相帥、性格爆好、身高高、上進) = 1/9*4/8*4/9*6/8*1/2 > p(不嫁|長相帥、性格爆好、身高高、上進) = 6/8*1/9*1/9*4/8*1/2
於是我們可以大膽的告訴女生,這樣的好男人,貝葉斯告訴你了,該嫁!!!
這就是我們使用拉普拉斯平滑後計算的整個演算法過程!
希望對大家的理解有幫助~歡迎大家指錯交流!
參考:李航博士《統計學習方法》
演算法雜貨鋪--分類演算法之樸素貝葉斯分類(Naive Bayesian classification)
封面圖來自於:演算法雜貨鋪--分類演算法之樸素貝葉斯分類(Naive Bayesian classification)
致謝:德川,皓宇,繼豪,施琦
推薦閱讀:
※隱馬爾可夫模型的預測問題----維特比演算法
※A Dataset for Research on Short-Text Conversation
※PaperWeekly 第47期 | 開學啦!咱們來做完形填空:「訊飛杯」參賽歷程
TAG:机器学习 | 深度学习DeepLearning | 自然语言处理 |