樸素貝葉斯法是一種分類方法,不管是二分類或多分類均適用.它的基本假定是輸入數據的各個特徵之間具備條件獨立性,這就是稱之爲「樸素」的緣由,而後應用貝葉斯定理,學習出數據的特徵和類標籤之間的聯合機率分佈,最後把後驗機率最大的結果做爲類標籤.雖然樸素貝葉斯法應用在分類問題中具備簡單且易於實現的特色,可是因爲它假設了輸入特徵之間具備條件獨立性,因此有時候可能分類的效果並非很好.算法
符號約定:\(\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個樣本,根據極大似然估計,能夠得出:學習
其中\(c_k\)表示標籤能夠取的值,在這裏一共能夠取\(K\)個不一樣的值.\(I(x, y)\)函數則表示括號內兩個數字相等則爲1,不然爲0.因此式(1)就是表示某個標籤出現的次數佔全部標籤出現的次數的比例.再來看條件機率分佈,具體地,假設有N個特徵,能夠用公式表達以下:測試
因爲樸素貝葉斯法假設特徵之間是條件獨立的,因此式(2)能夠寫做:spa
有了式(1)和式(3),咱們就能夠學習出量和機率分佈\(P(X,Y)\)了it
有了聯合機率分佈,接下來就能夠進行預測的工做了.樸素貝葉斯法是輸入一個樣本向量,將後驗機率最大的標籤值做爲輸出,後驗機率的計算須要用到貝葉斯定理.後驗機率記做\(P(Y=c_k|X=x)\),\(x\)爲任一輸入樣本向量,應用貝葉斯定理可得.io
式(4)的分子表示在給定某一標籤值的狀況下,輸入樣本等於\(x\)的機率;分母表示輸入樣本在每一個標籤值下等於\(x\)的機率之和,即\(P(X=x)\).兩者的比值即爲輸入\(x\)而獲得某一輸出標籤的後驗機率.
考慮到式(4)中的\(P(X=x|Y=c_k)P(Y=c_k)\)已在式(3)中求出,因此把式(3)代入到式(4)中,可得:class
式(5)就是樸素貝葉斯法的基本公式,即對每個可能的標籤值,都計算輸入的樣本屬於這個標籤值的機率大小.而咱們的目標是推出一個樣本的具體標籤,因此在這些可能的標籤值當中,選出一個可能性也就是機率最大的那個做爲標籤.因此樸素貝葉斯分類器的預測結果就能夠表示爲:學習方法
注意到式(6)的分母考慮了全部不一樣的標籤值並求和,不針對特定的\(c_k\),也就是和某一個具體的\(c_k\)無關,它就是一個常數,因此對於求出最大的\(c_k\)值沒有任何影響,可省略.最終的素樸貝葉斯分類器公式爲:
後驗機率最大化等價於指望風險最小化,具體證實過程見參考文獻.
先驗機率\(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)來估算:
下面來解釋下式(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):
即在分子上添加一個正數\(\lambda\),在分母上添加第j個特徵可能取值的總個數(僅訓練集)與\(\lambda\)的乘積.假若\(\lambda\)爲0,就是式(8),若是\(\lambda=1\),則稱之爲拉普拉斯平滑.那麼先驗估計式(1)一樣也能夠進行平滑處理:
式(9)-式(10)符合機率分佈的條件,稱爲貝葉斯估計.
注:樸素貝葉斯分類法認爲輸入樣本的各特徵之間是條件獨立的,若是不知足這個條件,就不是樸素貝葉斯法,而稱之爲貝葉斯網絡.
李航.統計學習方法[M].北京:清華大學出版社,2012 47-53.