1. 程式人生 > >樸素貝葉斯演算法-推導總結

樸素貝葉斯演算法-推導總結

  從今天起,總結機器學習演算法,先從最簡單的,樸素的貝葉斯演算法開始,為什麼最近又開始總結這些機器學習演算法那?原因很簡單,這些演算法很久之前都是推導過的,但是沒有總結,很快就忘記了,複習也不好複習,面試一問演算法題目還好,到了數學推導,就磕磕絆絆,然後被各種diss,任重而道遠。

相關知識:

(1)條件概率:

P(AB)=P(AB)P(B)P(A|B) = \frac{P(AB)}{P(B)}

(2)很顯然可以得到:

P(AB)=P(AB)P(B)=P(BA)P(A)P(AB)=P(A|B)P(B)=P(B|A)P(A)

)=P(BA)P(A)

(3)繼續推導可以得到:

P(BA)=P(AB)P(A)P(B|A) = \frac{P(AB)}{P(A)}

(4)全概率公式(這裡只給公式,先前條件就不提了):

P(A)=i=1nP(Bi)P(ABi)P(A) = \sum_{i=1}^n P({B_i})P(A|{B_i})

推導過程:

有了上面這幾個公式,基本就可以滿足要求了,下面,開始推導樸素的貝葉斯分類器,主要參考李航的《統計學習方法》中的過程。先,提出問題,現在給出一堆資料或者是訓練集:

T=(x1,y1),(x2

,y2),...,(xn,yn)T = {(x_1, y_1), (x_2, y_2), ..., (x_n, y_n)}

解釋:x表示特徵(可能有多個特徵),y表示標籤(可能是多個標籤哦)。

樸素貝葉斯演算法對條件概率分佈做了條件獨立性的假設,所以具體的條件獨立性假設是:

公式1P(X=xY=ck)=P(X(1)=x(1),...,X(n)=x(n)Y=ck)=j=1nP(X(j)=x(j)Y=ck)P({ X=x} | {Y=c_k}) = P({X^{(1)}=x^{(1)}, ..., X^{(n)}=x^{(n)}}|{Y=c_k})=\prod _{j=1}^n P(X^{(j)}=x^{(j)}|Y=c_k)

解釋:ckc_k 表示,標籤Y,中的一個值,X(1)=x(1),...,X(n)=x(n){X^{(1)}=x^{(1)}, ..., X^{(n)}=x^{(n)}} 表示一組向量,可能有n個特徵,為什麼連乘?因為假設相互獨立。

公式2P(Y=ckX=x)=P(Y=ckX=x)P(X=x)=P(X=xY=ck)P(Y=ck)kP(X=xY=ck)P(Y=ck)P(Y=c_k|X=x)=\frac{P(Y=c_k\bigcap X=x)}{P(X=x)}=\frac{P(X=x|Y=c_k)P(Y=c_k)}{\sum_{k} P( X=x| Y=c_k)P(Y=c_k)}

解釋:P(X=x)P(X=x) 這個值要通過全概率公式來求,即 kP(X=xY=ck)P(Y=ck)\sum_{k} P( X=x| Y=c_k)P(Y=c_k)

現在,把公式1帶入公式2得:
公式3P(Y=ckX=x)=P(Y=ck)jP(X(j)=x(j)Y=ck)kP(Y=ck)jP(X(j)=x(j)Y=ck)P(Y=c_k|X=x)= \frac{P(Y=c_k) \prod _{j} P(X^{(j)}=x^{(j)}|Y=c_k)}{\sum_{k} P(Y=c_k) \prod _{j} P(X^{(j)}=x^{(j)}|Y=c_k)}
其中k=1,2,3...,Kk=1,2,3...,K

解釋:現在就得出了樸素貝葉斯法分類的基本公式了。

樸素貝葉斯法分類器可表示為:

公式4y=f(x)=argmaxckP(Y=ck)jP(X(j)=x(j)Y=ck)kP(Y=ck)jP(X(j)=x(j)Y=ck)y=f(x)=argmax _{c_k}\frac{P(Y=c_k) \prod _{j} P(X^{(j)}=x^{(j)}|Y=c_k)}{\sum_{k} P(Y=c_k) \prod _{j} P(X^{(j)}=x^{(j)}|Y=c_k)}

解釋:這個公式的意思就是,在所有的標籤中,選擇一個最大的後驗概率那個標籤,作為本次分類的結果。很顯然,在最大化後驗概率的時,公式4中的分母是相同的,所以可以進一步化簡得到:

公式5y=f(x)=argmaxckP(Y=ck)jP(X(j)=x(j)Y=ck)y=f(x)=argmax _{c_k}P(Y=c_k) \prod _{j} P(X^{(j)}=x^{(j)}|Y=c_k)

演算法優缺點:

樸素貝葉斯分類演算法,監督學習演算法,而且是生成模型,優缺點主要包括(主要參考其他博文,已經給出連結):

(1)演算法優點:
  1. 對大數量訓練和查詢時具有較高的速度。即使,使用超大規模的訓練集,針對每個專案通常也只會有相對較少的特徵數,並且對專案的訓練和分類也僅僅是特徵概率的數學運算而已。(適合大量資料)
  2. 支援增量式運算。即可以實時的對新增的樣本進行訓練。
  3. 樸素貝葉斯對結果解釋容易理解
  4. 樸素貝葉斯模型發源於古典數學理論,有著堅實的數學基礎,以及穩定的分類效率。
  5. 所需估計的引數很少,對缺失資料不太敏感,演算法也比較簡單
(2)演算法缺點:
  1. 由於使用了樣本屬性獨立性的假設,所以如果樣本屬性有關聯時其效果不好。
  2. 理論上,模型與其他分類方法相比具有最小的誤差率。但是實際上並非總是如此,這是因為模型假設屬性之