樸素貝葉斯Naive Bayes-機器學習ML
參考:
1.《統計學習方法》李航
2.先驗概率與後驗概率的區別:http://blog.csdn.net/ouyang_linux007/article/details/7566339
3.樸素貝葉斯方法(Naive Bayes)原理和實現:http://blog.csdn.net/tanhongguang1/article/details/45016421#拉普拉斯平滑
4.分類演算法之樸素貝葉斯分類:https://www.cnblogs.com/leoo2sk/archive/2010/09/17/naive-bayesian-classifier.html
5.https://www.cnblogs.com/lianyingteng/p/7799445.html
樸素貝葉斯(Naive Bayesian)是基於貝葉斯定理和特徵條件獨立假設的一種分類演算法。樸素貝葉斯想必是很多人在剛學習機器學習時想去第一個學習的演算法,因為它樸素呀、簡單呀(我記得當時的想法就是這樣)。它真的那麼簡單麼?今天我們就來討論一下這個“簡單”的機器學習演算法。
貝葉斯定理
我們都知道貝葉斯定理是基於條件概率得來的,那麼什麼是條件概率呢?條件概率就是在我們知道一個事件發生的情況下,別一個事件發生的概率(突然下雨了,你會去估計你女神有沒有帶傘,這就是一個條件概率)。它的數學表示如下:
有了條件概率貝葉斯先生就開始尋思了,如何我知道了在B的條件下A的發生概率
條件獨立
樸素貝葉斯還有一個特徵條件獨立的要求,那麼什麼是條件獨立呢?我們知道如果兩個事件獨立指的是一個事件的發生不會影響到別一個事件發生的概率,數學上的表示就是:
條件獨立就是基於事件獨立提出的,我的理解為條件事件獨立,不知準不準確? 它要求的不是事件絕對獨立了(A、B可以不獨立),但是呢,兩個事件都加一個限制條件的話,我們就要求它們獨立了(一定是獨立的),其數學表示為:
樸素貝葉斯
這“樸素”兩字代表什麼呢?真的代表“簡單”的意思麼?如果你真這麼想,一陣冷笑,呵..呵..呵..(前段面過某直播平臺,就問了這個問題,我就說是簡單的意思,結果就是一聲冷笑...)。
樸素貝葉斯的思想也是非常簡單:對於給出的待分類項,求解在此項出現的條件下各個類別出現的概率,那個概率值大就認為該分類項屬於哪一類,其定理定義如下:
(1) 設 為待分類項,而每個為輸入x的一個特徵屬性。
(2) 設為一個類別集合。
(3)計算
(4)如果,則
上面定義的關鍵步驟還是步驟3的求解,這步的求解就用到了樸素貝葉斯的兩大基礎:貝葉斯公式和特徵條件獨立假設,具體求解過程如下:
1) 給定一組訓練資料集,用於訓練引數。
2) 統計得到在每種類別下各個特徵屬性的條件概率估計。(這一步使用極大似然估計或者貝葉斯估計)
3) 根據貝葉斯公式有以下推導:
依據全概率公式可知,對於所有類別來說為一個常數(全概率公式的定義可以看最後的補充部分)。因此我們只需要比較每一類的,哪個值最大,待分類項就是哪一類!因為我們有特徵條件獨立的假設,因此可以使用條件獨立公式求解:
說到這,樸素貝葉斯算是講完了,等等。。。還有上面提到的引數估計方法,好吧,下面我們稍微提一下吧。
引數估計
樸素貝葉斯通過求解的值來判斷待分類項的類別,上式中的有兩個關鍵部分是需要我們求解的。他們的求解(估計)可以通過極大似然估計和貝葉斯估計來進行。
極大似然估計
其數學表示為
貝葉斯估計
用極大似然估計可能會出現所要估計的概率值為0的情況,這樣會影響到後驗概率的計算結果,使得分類產生誤差。解決這一問題的方法是採用貝葉斯估計。
這其實就等價於在隨機變數各個取值的頻數上賦予一個整數。是指類別k中,第j個特徵取值的個數。lambda等於1是拉普拉斯平滑。
。。。(這一部分講的不好,推薦大家看看李航老師的統計學習方法一書)。。。
樸素貝葉斯的三種模型
(1)認為服從多項式分佈的多項式模型
(2)認為服從高斯分佈的高斯模型
(3)認為服從伯努利分佈的伯努利模型
樸素貝葉斯的優缺點分析
優點:演算法邏輯簡單,易於實現;適用於多分類;演算法穩定,對於不同的資料特點其分類效能差別不大,健壯性比較好;
缺點:對輸入資料的表達形式很敏感;
補充部分
全概率公式:
對一個較複雜的事件A,如果能找到一伴隨A發生的完備事件組B1、B2```,而計算各個B的概率與條件概率P(A|Bi)相對又要容易些,這時為了計算與事件A有關的概率,可能需要使用全概率公式。