朴素貝葉斯(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有關的概率,可能需要使用全概率公式。

