樸素貝葉斯法學習筆記

樸素貝葉斯法簡述

樸素貝葉斯法是一種分類方法,不管是二分類或多分類均適用.它的基本假定是輸入數據的各個特徵之間具備條件獨立性,這就是稱之爲「樸素」的緣由,而後應用貝葉斯定理,學習出數據的特徵和類標籤之間的聯合機率分佈,最後把後驗機率最大的結果做爲類標籤.雖然樸素貝葉斯法應用在分類問題中具備簡單且易於實現的特色,可是因爲它假設了輸入特徵之間具備條件獨立性,因此有時候可能分類的效果並非很好.算法

樸素貝葉斯算法的通常描述

符號約定:\(\boldsymbol{x}^{(i)}\)是輸入的第i個樣本向量,\(\boldsymbol{x}^{(i)}_j\)是第i個樣本向量的第j個特徵值,\(y^{(i)}\)爲第i個樣本的標籤.網絡

學習步驟爲:函數

首先根據訓練數據集的輸入向量\(\boldsymbol{x}^{(i)}\)和標籤\(y\)學習出兩者的聯合機率分佈\(P(X,Y)\),要求出聯合機率分佈,就得先求出先驗機率分佈\(P(Y)\)和條件機率分佈\(P(X|Y)\).對於先驗機率分佈,假設有M個樣本,根據極大似然估計,能夠得出:學習

\[P(Y=c_k) = \frac{\sum\limits^M_{i=1}I(y^{(i)}=c_k)}{M}, \quad k=1,2,...,K \tag{1} \]

其中\(c_k\)表示標籤能夠取的值,在這裏一共能夠取\(K\)個不一樣的值.\(I(x, y)\)函數則表示括號內兩個數字相等則爲1,不然爲0.因此式(1)就是表示某個標籤出現的次數佔全部標籤出現的次數的比例.再來看條件機率分佈,具體地,假設有N個特徵,能夠用公式表達以下:測試

\[P(X=x|Y=c_k) = P(X_1=x_1, X_2=x_2, ..., X_N=x_N|Y=c_k), \quad k=1,2,...,K \tag{2} \]

因爲樸素貝葉斯法假設特徵之間是條件獨立的,因此式(2)能夠寫做:spa

\[\begin{align*} P(X=x|Y=c_k) &= P(X_1=x_1, X_2=x_2, ..., X_N=x_N|Y=c_k) \\ &= P(X_1=x_1|Y=c_k)P(X_2=x_2|Y=c_k)...P(X_N=x_N|Y=c_k) \\ &= \prod\limits^{N}_{j=1}P(X_j=x_j|Y=c_k) \end{align*} \tag{3} \]

有了式(1)和式(3),咱們就能夠學習出量和機率分佈\(P(X,Y)\)it

有了聯合機率分佈,接下來就能夠進行預測的工做了.樸素貝葉斯法是輸入一個樣本向量,將後驗機率最大的標籤值做爲輸出,後驗機率的計算須要用到貝葉斯定理.後驗機率記做\(P(Y=c_k|X=x)\)\(x\)爲任一輸入樣本向量,應用貝葉斯定理可得.io

\[P(Y=c_k|X=x) = \frac{P(X=x|Y=c_k)P(Y=c_k)}{\sum\limits_{k=1}^KP(X=x|Y=c_k)P(Y=c_k)},\quad k=1,2,...,K \tag{4} \]

式(4)的分子表示在給定某一標籤值的狀況下,輸入樣本等於\(x\)的機率;分母表示輸入樣本在每一個標籤值下等於\(x\)的機率之和,即\(P(X=x)\).兩者的比值即爲輸入\(x\)而獲得某一輸出標籤的後驗機率.
考慮到式(4)中的\(P(X=x|Y=c_k)P(Y=c_k)\)已在式(3)中求出,因此把式(3)代入到式(4)中,可得:class

\[P(Y=c_k|X=x) = \frac{\left(\prod\limits^{N}_{j=1}P(X_j=x_j|Y=c_k)\right)P(Y=c_k)}{\sum\limits_{k=1}^K\left(\prod\limits^{N}_{j=1}P(X_j=x_j|Y=c_k)\right)P(Y=c_k)} \\ k=1,2,...,K \tag{5} \]

式(5)就是樸素貝葉斯法的基本公式,即對每個可能的標籤值,都計算輸入的樣本屬於這個標籤值的機率大小.而咱們的目標是推出一個樣本的具體標籤,因此在這些可能的標籤值當中,選出一個可能性也就是機率最大的那個做爲標籤.因此樸素貝葉斯分類器的預測結果就能夠表示爲:學習方法

\[\hat{y} = \operatorname*{arg\;max}\limits_{c_k}\frac{\left(\prod\limits^{N}_{j=1}P(X_j=x_j|Y=c_k)\right)P(Y=c_k)}{\sum\limits_{k=1}^K\left(\prod\limits^{N}_{j=1}P(X_j=x_j|Y=c_k)\right)P(Y=c_k)} \\ k=1,2,...,K \tag{6} \]

注意到式(6)的分母考慮了全部不一樣的標籤值並求和,不針對特定的\(c_k\),也就是和某一個具體的\(c_k\)無關,它就是一個常數,因此對於求出最大的\(c_k\)值沒有任何影響,可省略.最終的素樸貝葉斯分類器公式爲:

\[\hat{y} = \operatorname*{arg\;max}\limits_{c_k}\left(\prod\limits^{N}_{j=1}P(X_j=x_j|Y=c_k)\right)P(Y=c_k) \\ k=1,2,...,K \tag{7} \]

後驗機率最大化等價於指望風險最小化,具體證實過程見參考文獻.

參數估計

先驗機率\(P(Y=c_k)\)的求解方法在上文已經給出,用的是極大似然估計法,即式(1).下面來估算參數\(P(X_j=x_j|Y=c_k)\),這個參數的意思是在給定的標籤下,樣本的的某個特徵取某一個值的機率,而對於\(\prod\limits^{n}_{j=1}P(X_j=x_j|Y=c_k)\)則是考慮全部特徵,而後把全部這些機率相乘以後獲得的結果.對於某一個特徵來說,能夠取不少個不一樣的值,那麼在給定了標籤以後取每個值的機率分別是多少呢?在有M個訓練樣本的狀況下,能夠用式(8)來估算:

\[P(X_j=a_{jl}|Y=c_k) = \frac{\sum\limits^{M}_{i=1}I(\boldsymbol{x}^{(i)}_j=a_{jl},y^{(i)}=c_k)}{\sum\limits^{M}_{i=1}I(y_i=c_k)} \\ j = 1,2,...,N; \quad l = 1,2,...,S_j; \quad k = 1,2,...,K \tag{8} \]

下面來解釋下式(8).\(a_{jl}\)表示樣本第j個特徵所取得第l個值,分母\(\sum\limits^{M}_{i=1}I(y_i=c_k)\)表示在全部訓練樣本中,標籤\(c_k\)一共出現的次數,分子\(\sum\limits^{M}_{i=1}I(\boldsymbol{x}^{(i)}_j=a_{jl},y^{(i)}=c_k)\)則表示在全部標籤爲\(c_k\)的樣本中,第j個特徵取值\(a_{jl}\)的總數,兩者之商則是在給定標籤\(c_k\)的狀況下,樣本的第j個特徵取值\(a_{jl}\)的機率.式(8)是針對某一個特徵取某一個數值的機率計算,能夠由此算出全部的特徵取其對應的某一個數值的機率,而後就能夠利用式(7)對任一給定的測試樣原本預測它的標籤了.這就是樸素貝葉斯分類的主要思想,簡單的應用例子參見參考文獻\(p_50\),能夠獲取以上算法的直觀感覺.

平滑處理

仔細考察式(8),咱們能夠很容易地發現,若是給定一個測試樣本,它在第j個特徵下的值,歷來沒有在訓練樣本中出現過,那麼對於該值,用式(8)計算就等於0了,即機率爲0,這實際上是不符合現實狀況的,假若這麼處理,那麼樸素貝葉斯分類的泛化能力就會很是差.那麼如何解決這個問題?咱們能夠在式(8)的分子分母上添加一個常數項,避免出現計算的機率爲0的狀況,具體如式(9):

\[P_{\lambda}(X_j=a_{jl}|Y=c_k) = \frac{\sum\limits^{M}_{i=1}I(\boldsymbol{x}^{(i)}_j=a_{jl},y^{(i)}=c_k)+\lambda}{\sum\limits^{M}_{i=1}I(y_i=c_k)+S_j\lambda} \\ j = 1,2,...,N; \quad l = 1,2,...,S_j; \quad k = 1,2,...,K \tag{9} \]

即在分子上添加一個正數\(\lambda\),在分母上添加第j個特徵可能取值的總個數(僅訓練集)與\(\lambda\)的乘積.假若\(\lambda\)爲0,就是式(8),若是\(\lambda=1\),則稱之爲拉普拉斯平滑.那麼先驗估計式(1)一樣也能夠進行平滑處理:

\[P_{\lambda}(Y=c_k) = \frac{\sum\limits^M_{i=1}I(y^{(i)}=c_k)+\lambda}{M+K\lambda}, \quad k=1,2,...,K \tag{10} \]

式(9)-式(10)符合機率分佈的條件,稱爲貝葉斯估計.

\[\begin{equation} \left\{ \begin{array}{lr} P_{\lambda}(X_j=a_{jl}|Y=c_k) > 0 \\ \sum\limits^{S_j}_{l=1}P_{\lambda}(X_j=a_{jl}|Y=c_k) = 1 \end{array} \right. \end{equation} \tag{11} \]

\[\begin{equation} \left\{ \begin{array}{lr} P_{\lambda}(Y=c_k) > 0 \\ \sum\limits^{K}_{k=1}P_{\lambda}(Y=c_k) = 1 \end{array} \right. \end{equation} \tag{12} \]

注:樸素貝葉斯分類法認爲輸入樣本的各特徵之間是條件獨立的,若是不知足這個條件,就不是樸素貝葉斯法,而稱之爲貝葉斯網絡.

參考文獻

李航.統計學習方法[M].北京:清華大學出版社,2012 47-53.

相關文章
相關標籤/搜索