1. 程式人生 > >【機器學習】--機器學習之樸素貝葉斯從初始到應用

【機器學習】--機器學習之樸素貝葉斯從初始到應用

rac AC 一個 pam 數據 ast 出現 相對 解決方法

一、前述

機器學習算法中,有種依據概率原則進行分類的樸素貝葉斯算法,正如氣象學家預測天氣一樣,樸素貝葉斯算法就是應用先前事件的有關數據來估計未來事件發生的概率。

二、具體

1、背景--貝葉斯定理引入
對於兩個關聯事件(非獨立事件)A和B,同時發生的概率為:P(AB)=P(A|B)P(B)=P(B|A)P(A),所以把公式變形後可得:

貝葉斯定理,他是樸素貝葉斯算法的基礎,就是下面的這個公式:

技術分享圖片

技術分享圖片

現在我們來把這個式子擴充一下:假設B由很多個獨立事件組成,或者說,B由很多個屬性組成B1,B2...Bn他們相互獨立,那上面的式子成了這個樣子:

技術分享圖片

也就是說我們把P(B|A)替換成了P(B1|A)P(B2|A)...P(Bn|A),上面的式子也很容易看出是成立的。我們把上面的公式先記住。其實我學的時候一直在糾結這麽明顯的式子究竟會起什麽作用。

上面公式起作用的前提是假設特征和特征之間是獨立的。因此這就是樸素貝葉斯的中樸素一詞的來源。

2、案例一

對於垃圾郵件案例來說:

技術分享圖片

說明:P(spam)是先驗概率。
P(spam|Viagra)是後驗概率。

構建頻率表:

技術分享圖片

求解:
P(垃圾郵件|Viagra)=P(Viagra|垃圾郵件)*P(垃圾郵件)/P(Viagra)=(4/20)*(20/100)/(5/100)=0.8
結論:
因此,如果電子郵件含有單詞Viagra,那麽該電子郵件是垃圾郵件的概率為80%。所以,任何含有單詞Viagra的消息都需要被過濾掉。

拓展一:假設特征和特征之間是獨立的。
當有更多的特征時,則有如下公式:

技術分享圖片

分別求解垃圾郵件概率和非垃圾郵件概率:

技術分享圖片

分母可以先忽略它,垃圾郵件的總似然為:

? (4/20)*(10/20)*(20/20)*(12/20)*(20/100)=0.012

? 非垃圾郵件的總似然為:

? (1/80)*(66/80)*(71/80)*(23/80)*(80/100)=0.002

? 將這些值轉換成概率,我們只需要一步得到垃圾郵件概率為

85.7%

拓展二:假設文章中包含了4個單詞的郵件呢?

? 我們可以計算垃圾郵件的似然如下:

? (4/20)*(10/20)*(0/20)*(12/20)*(20/100)=0

? 非垃圾郵件的似然為:

? (1/80)*(14/80)*(8/80)*(23/80)*(80/100)=0.00005

? 因此該消息是垃圾郵件的概率為0/(0+0.00005)=0

? 該消息是非垃圾郵件的概率為0.00005/(0+0.00005)=1

? 問題出在Groceries

這個單詞,所有單詞Grogeries有效抵消或否決了所有其他的證據。

解決方法:

拉普拉斯估計本質上是給頻率表中的每個計數加上一個較小的數,這樣就保證了每一類中每個特征發生概率非零。

? 通常情況下,拉普拉斯估計中加上的數值設定為1,這樣就保證每一類特征的組合至少在數據中出現一次。

? 然後,我們得到垃圾郵件的似然為:

? (5/24)*(11/24)*(1/24)*(13/24)*(24/108)=0.0004

? 非垃圾郵件的似然為:

? (2/84)*(15/84)*(9/84)*(24/84)*(84/108)=0.0001

? 這表明該消息是垃圾郵件的概率為80%,是非垃圾郵件的概率為20%。
3、案例二

讓我以一個例子加以說明,假設有這樣一個數據集(本例來自樸素貝葉斯分類器的應用),

癥狀(A1) 職業(A2) 疾病(B)
打噴嚏  護士   感冒
打噴嚏  農夫   過敏
頭痛   建築工人 腦震蕩
頭痛   建築工人 感冒
打噴嚏  教師   感冒
頭痛   教師   腦震蕩

那麽一個打噴嚏的建築工人是感冒還是沒感冒呢?根據貝葉斯定理,

P(感冒|打噴嚏x建築工人) = P(打噴嚏x建築工人|感冒) x P(感冒) / P(打噴嚏x建築工人)

假定”打噴嚏”和”建築工人”這兩個特征是獨立的,因此,上面的等式就變成了

P(感冒|打噴嚏x建築工人) = P(打噴嚏|感冒) x P(建築工人|感冒) x P(感冒) / P(打噴嚏) x P(建築工人) = 0.66 x 0.33 x 0.5 / 0.5 x 0.33 = 0.66
同理,
P(非感冒|打噴嚏x建築工人) = P(打噴嚏|非感冒) x P(建築工人|非感冒) x P(非感冒) / P(打噴嚏) x P(建築工人) = 0.33 x 0.33 x 0.5 / 0.5 x 0.33 = 0.33

因為P(感冒|打噴嚏x建築工人) > P(非感冒|打噴嚏x建築工人) ,所以我們更願意相信一個打噴嚏的建築工人是感冒的。

從上面的例子可以看出,貝葉斯分類的步驟是這樣的:

技術分享圖片

2、上面的已知條件都是離散值,如果是連續值呢,對於連續值通常有兩種辦法,一是將連續值截取為離散值,然後求概率,二是假定離散值服從高斯分布,即

技術分享圖片
因為我們只需求概率的相對值,所以這裏只需計算屬性的概率密度值即可。得出結論

假設特征服從多項式分布,連續的特征適合用高斯分布的,比如鳶尾花數據集,如果是離散的特征,適合用多項式分布。

4、樸素貝葉斯分類的思想和計算過程

技術分享圖片

技術分享圖片

【機器學習】--機器學習之樸素貝葉斯從初始到應用