1. 程式人生 > >機器學習之樸素貝葉斯(Naive Bayes)

機器學習之樸素貝葉斯(Naive Bayes)

貝葉斯概率以18世紀的一位神學家托馬斯·貝葉斯(Thomas Bayes)的名字命名。

一、為什麼叫樸素貝葉斯?

樸素貝葉斯是經典機器學習演算法之一,是基於概率論的分類演算法,其原理簡單,易於實現,多使用於文字分類,如垃圾郵件過濾、新聞分類等。

樸素貝葉斯中的樸素是來源於該演算法是基於屬性條件獨立性假設,即對於已知類別,假設所有屬性(特徵)相互獨立;而貝葉斯則是其基於貝葉斯定理而得到的。

所以說樸素貝葉斯演算法就是基於"屬性條件獨立"和“貝葉斯定理”推導得到的演算法

二、演算法原理

1、貝葉斯決策論

在講解原理之前,我們先來認識一下貝葉斯決策論,貝葉斯決策論(Bayesian decision theory)是概率框架下實施決策的基本方法。

對分類任務來說,在所有相關概率都已知的理想情形下,貝葉斯決策論考慮如何基於這些概率和誤判損失來選擇最優的類別標記。

有N種可能的類別標記,即y=\left \{ c_1,c_2,...,c_N \right \}\lambda_i_j是將標記為c_j判定為c_i所產生的損失。基於後驗概率P(c_i|x)可獲得將樣本x分類為分類為c_i所產生的期望損失(expected loss),即在樣本x上的“條件風險”(conditional risk):

R(c_i|x) = \sum_{j=1}^{N}\lambda _i_jP(c_j|x)

貝葉斯判定準則(Bayes decision rule): 為最小化總體的風險,只需在每個樣本上選擇那個能使條件風險R(c|x)最小的類別標記,即

h^*(x)=\underset{c\epsilon y}{arg min}R(c|x)

此時,h^* 稱為貝葉斯最優分類器。

具體來說,若目標是最小化分類錯誤率,則誤判損失\lambda_i_j可以寫為 

                                    \lambda_i_j=\left \{ ^{0,\ if \ i=j}_{1, \ otherwise}

 。

那麼此時的條件風險為:

                                   R(c|x) = 1-P(c|x)

於是,最小化分類錯誤率的貝葉斯最優分類器為:

                                    h^*(x) = \underset{c\epsilon y}{argmax}P(c|x)

也就是說,對每個樣本x,選擇能使後驗概率P(c|x)最大的類別標記。

不難看出,如果想使用貝葉斯判定準則來最小化決策風險,則需要先得到後驗概率P(c|x)。後驗概率的獲得主要有兩種策略:

  1. 判別式模型:給定x,通過直接建模P(c|x)來預測c。
  2. 生成式模型:先對聯合概率分佈P(x,c)進行建模,然後在獲得P(c|x)。

下面,我們來講生成式模型:

                                                P(c|x)=\frac{P(x,c)}{P(x)}

由貝葉斯定理,P(c|x)可寫為:

                                                P(c|x) = \frac{P(c)P(x|c)}{P(x)}

其中,P(c)是先驗概率;P(x|c)是樣本x相對於類標記c的類條件概率,或稱為“似然”;P(x)是用於歸一化的證據因子,在給定x的情況,P(x)與屬於哪個類無關,所以估計P(c|x)的問題就被轉換為如何基於訓練資料D來估計先驗概率P(c)和似然P(x|c)。

2、極大似然估計

對於這個函式:P(x|θ) 輸入有兩個:x表示某一個具體的資料;θ表示模型的引數。

  1. 如果θ是已知確定的,x是變數,這個函式叫做概率函式(probability function),它描述對於不同的樣本點x,其出現概率是多少。
  2. 如果x是已知確定的,θ是變數,這個函式叫做似然函式(likelihood function), 它描述對於不同的模型引數θ,出現x這個樣本點的概率是多少。

極大似然估計方法(Maximum Likelihood Estimate,MLE)也稱為最大概似估計或最大似然估計,是求估計的另一種方法。它是建立在極大似然原理的基礎上的一個統計方法。也就是在引數θ的可能取值範圍內,選取使L(θ)達到最大的引數值θ,作為引數θ的估計值

3、樸素貝葉斯

樸素貝葉斯是貝葉斯決策論的一部分,其假設“屬性間條件獨立”,也就是說,對於已知的類別,假設所有的屬性相互獨立。從前面貝葉斯決策論,我們知道:

                                                P(c|x) = \frac{P(c)P(x|c)}{P(x)}

也就是估計P(c|x)的問題就被轉換為如何基於訓練資料D來估計先驗概率P(c)和似然(類條件概率)P(x|c)。P(x|c)是所有屬性上的聯合概率,難以從有限的訓練樣本直接估計而得,而樸素貝葉斯的屬性條件獨立假設則避開了該障礙。

基於屬性間條件獨立假設,對上式可以重寫為:

                                               P(c|x)=\frac{P(c)P(x|c)}{P(x)}=\frac{P(c)}{P(x)}\prod _{i=1}^{d}P(x_i|c)

其中d為屬性數目,x_ix在第i個屬性上的取值。

又由於對於給定的x,其對所有的類別來說P(x)都是相同的,所以基於風險(損失)最小化準則得到後驗概率最大化準則可以寫為:

                                               h_{nb}(x) = \underset{c\epsilon y}{arg\ max}{\ P(c)\prod_{i=1}^{d}P(x_i|c)}

這就是樸素貝葉斯分類器的表示式,即對於給定的樣本x,我們計算每個類別的後驗概率P(c_k|x)

                                              P(c_k|x) = P(c_k)\prod_{i=1}^{d}P(x_i|c_k)

而其中得到的後驗概率P(c_k|x)最大的類別c_k作為分類的結果。