統計學習方法-樸素貝葉斯

統計學習方法-樸素貝葉斯法

先提出以下問題:

  1. 樸素貝葉斯法、貝葉斯公式、貝葉斯估計分別是什麼?
  2. 貝葉斯公式的物理意義什麼?
  3. 貝葉斯網絡是什麼?

樸素貝葉斯法

樸素貝葉斯法 = 貝葉斯定理 + 特徵條件獨立.

輸入XRnX \in R^n空間是n維向量集合,輸出空間y={c1,c2,...,cK}y=\{c_1,c_2,...,c_K\}. 所有的X和y都是對應空間上的隨機變量. P(X,Y)P(X,Y)是X和Y的聯合概率分別. 訓練數據集(由P(X,Y)P(X,Y)獨立同分布產生):
T={(x1,y1),(x2,y2),...,(xN,yN)}T=\{(x_1,y_1),(x_2,y_2),...,(x_N,y_N)\}
假設我們有這樣的數據集怎麼進行樸素貝葉斯算法學習呢?我們知道樸素貝葉斯法主要有兩個條件組成,我們先看第一個貝葉斯定理:

  1. 我們之前學到過的公式:
    (1)P(ab)=P(a,b)P(b)=P(ba)P(a)aAP(ba)P(a)P(a|b)=\frac{P(a,b)}{P(b)}=\frac{P(b|a)P(a)}{\sum_{a \in A}P(b|a)P(a)} \tag{1}
  2. 公式1是我們之前學到過的,下面我們基於機器學習法訓練數據做一個變化:
    (2)P(Y=ckX=x)=P(X=xY=ck)P(Y=ck)kP(X=xY=ck)P(Y=ck)P(Y=c_k|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)} \tag{2}

從公式2中我們已經看到了"後驗概率最大化",對於上述的P(Y=ckX=x)P(Y=c_k|X=x)我們一般這樣解釋,當給定(X=x)(X=x)的條件下,Y=ckY=c_k的概率,這就是條件概率. 這就簡單了,我們只需要對於位置的x,計算其對應的ck,k[1,2,...,K]c_k,k \in [1,2,...,K]的概率,選擇最大的概率作爲這個x的類別進行了.

現在我們只要一定可以找到最好的結果了,這就開心了,下面就是怎麼計算,路通了,怎麼走就很簡單了. 我們再看公式(2), 因爲我們的x是向量形式,那麼條件概率是:
(3)P(X=xY=ck)=P(X(1)=x(1),X(2)=x(2),...,X(n)=x(n)Y=ck),k=1,2,..,KP(X=x|Y=c_k)=P(X^{(1)}=x^{(1)},X^{(2)}=x^{(2)},...,X^{(n)}=x^{(n)}|Y=c_k), k=1,2,..,K \tag{3}

從公式3中,我們看到這裏有"無數"的參數,很難進行直接估計計算,還記得我們提到的另外一個條件就是條件獨立性的假設. 這裏假設在給定Y=ckY=c_k的條件下,X的每一個特徵維度是獨立,而且這還是一個很強的假設. 因此我們有:
(4)P(X=xY=ck)=P(X(1)=x(1),X(2)=x(2),...,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^{(2)}=x^{(2)},...,X^{(n)}=x^{(n)}|Y=c_k)=\prod_{j=1}^{n}P(X^{(j)}=x^{(j)}|Y=c_k) \tag{4}

我們將公式4帶入公式2中,而且我們是比大小,並且分母是一樣的,於是就得到了公式(5):
(5)y=argmaxckP(Y=ck)jP(X(j)=x(j)Y=ck)y=arg max_{c_k}P(Y=c_k)\prod_{j}P(X^{(j)}=x^{(j)}|Y=c_k) \tag{5}

從公式(5)中,我們只需要計算出,P(X(j)=x(j)Y=ck)P(X^{(j)}=x^{(j)}|Y=c_k)P(Y=ck)P(Y=c_k)兩個參數就行了.接下來就是基於數據進行參數計算,這就是貝葉斯法的參數估計.

參數估計

一般使用極大似然估計法進行相應的概率估計. 先驗概率P(Y=ck)P(Y=c_k)的極大似然估計是:
(6)P(Y=ck)=i=1NI(yi=ck)N,k=1,2,...,KP(Y=c_k)=\frac{\sum_{i=1}^{N}I(y_i=c_k)}{N}, k=1,2,...,K \tag{6}

我們先設第j個特徵x(j)x^{(j)}可能取值集合爲{aj1,aj2,...,ajsj,}\{a_{j1},a_{j2},...,a_{js_j},\},條件概率的極大似然估計是:
(7)P(X(j)=x(j)Y=ck)=i=1NI(xij=ajl,yi=ck)i=1NI(yi=ck)P(X^{(j)}=x^{(j)}|Y=c_k)=\frac{\sum_{i=1}^{N}I(x_i^j=a_{jl},y_i=c_k)}{\sum_{i=1}^{N}I(y_i=c_k)} \tag{7}
j=1,2,...,n;l=1,2,..,Sj;k=1,2,...Kj=1,2,...,n;l=1,2,..,S_j;k=1,2,...K

我們可以看到,基於數據估計的參數,將公式6和7帶入公式5就得到了樸素貝葉斯分類器,本來我們是應該結束了,但是如何先驗概率和條件概率,任何一個爲0的話,整個估計的乘積就都是0了. 所有我們需要防止這個情況出現,就出現了貝葉斯估計.

貝葉斯估計

由於用極大似然進行估計的值,可能出現概率值爲0的情況. 這才提出了使用貝葉斯估計,先驗概率和條件概率分別對應的公式就是:
(8)P(Y=ck)=i=1NI(yi=ck)+λN+Kλ,k=1,2,...,KP(Y=c_k)=\frac{\sum_{i=1}^{N}I(y_i=c_k)+\lambda}{N+K \lambda}, k=1,2,...,K \tag{8}

(9)P(X(j)=x(j)Y=ck)=i=1NI(xij=ajl,yi=ck)+λi=1NI(yi=ck)+SjλP(X^{(j)}=x^{(j)}|Y=c_k)=\frac{\sum_{i=1}^{N}I(x_i^j=a_{jl},y_i=c_k)+\lambda}{\sum_{i=1}^{N}I(y_i=c_k)+S_j\lambda} \tag{9}

我們可以看出就是對每一個變量的多加了一個頻數λ0\lambda \geq 0. 當λ=0\lambda = 0時,就是極大似然估計. 通常取值λ=1\lambda = 1,這就是拉普拉斯平滑(Laplace smoothing). 顯然這樣的話所有的估計值都是正數,而且不會改變之前的序關係.

回顧

  1. 樸素貝葉斯法就是我們提到的這個分類器模型
  2. 貝葉斯定理就是我們使用到公式(2)
  3. 貝葉斯估計,就是防止出現0值的,參數估計法
  4. 貝葉斯網絡,就是輸入變量之間存在概率依存關係,這是就是貝葉斯網絡

再看貝葉斯公式, 它的目的是什麼先驗估計後驗,並儘可能使後驗最大化. 先驗概率固定的時候,只能通過條件概率的值來改變後驗概率. 看公式(10)和下圖直接給出先驗和後驗的關係:
(10)P(Y=ckX=x)=P(X=xY=ck)P(Y=ck)P(Y=c_k|X=x)=P(X=x|Y=c_k)P(Y=c_k) \tag{10}


先驗和後驗關係圖

總結

樸素貝葉斯法簡單好用,計算量小,文本分類經常使用. 而且是貝葉斯網絡的基礎,還有就是強大的貝葉斯定理,它可以解釋任何的機器學習的程度(可能是一句玩笑,哈哈).

注: 生活如此,問題不大. 喵~

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章