統計學習筆記(四)樸素貝葉斯法

樸素貝葉斯法

4.1 naive Bayes的學習與分類

4.1.1 基本方法

設輸入空間爲n維向量的集合XRn ,輸出空間爲類標記的集合Y={c1,c2,...,cK} 。輸入爲特徵向量xX ,輸出爲類標記yY 。X是定義在輸入空間上的隨機變量,Y是定義在輸出空間上的隨機變量。P(X,Y) 是XY的聯合概率分佈。訓練數據集

T={(x1,y1),(x2,y2),...,(xN,yN)}
根據聯合概率分佈P(X,Y) 獨立同分布產生。

樸素貝葉斯法通過訓練數據集學習聯合概率分佈P(X,Y) 。具體的,學習以下先驗概率分佈及條件概率分佈。先驗概率分佈

P(Y=ck),k=1,2,...,K

條件概率分佈
P(X=x|Y=ck)=P(X(1)=x(1),X(2)=x(2),...,X(n)=x(n)),k=1,2,...,K

樸素貝葉斯法對條件概率分佈作了條件獨立性假設。假設
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).....(4.3)

樸素貝葉斯法實際上學習到了生成數據的機制,所以屬於生成模型。

樸素貝葉斯法分類時,對給定的輸入 x ,通過學習到的模型計算後驗概率分佈P(Y=ckX=x) ,將後驗概率最大的類作爲x的類輸出。後驗概率計算根據貝葉斯定理進行:

P(Y=ckX=x)=P(X=xY=ck)P(Y=ck)Kk=1P(X=xY=ck)P(Y=ck)(4.4)

(注:其實公式4.4右半部分的分母能進一步簡化爲 P(X=x) ,因爲式中對 Y 的每一種情況下 X=x 的概率求和,也就是 X=x 的概率 P(X=x) 。)

將(4.3)帶入(4.4),
P(Y=ckX=x)=P(Y=ck)nj=1P(X(j)=x(j)Y=ck)kP(Y=ck)nj=1P(X(j)=x(j)Y=ck)(4.5)

於是,樸素貝葉斯分類器
y=f(x)=argmaxckP(Y=ck)jP(X(j)=x(j)|Y=ck)kP(ck)jP(X(j)=x(j)|Y=ck)......(4.6)

分母對於任何一個ck 都是相同的,所以只需讓分子最大化即可。分類器簡化爲
y=f(x)=argmaxckP(ck)jP(X(j)=x(j)|Y=ck).........(4.7)

(注:其實我上一個注已經解釋過了,文中這樣解釋也不是不可以,就是太繁瑣了。什麼叫對任何一個 ck 都是相同的?就是說這個分母其實和 ck 沒什麼關係。具體來說,這個分母其實就是 P(X=x) ,它對於樸素貝葉斯分類器來說是一個常數。不知我這樣說讀者理解了嗎?)

4.1.2 後驗概率最大化的含義

樸素貝葉斯法將實例分類到後驗概率最大的類中,這等價於期望風險最小化。理解就好,也很好理解我不寫了。

4.2 樸素貝葉斯法的參數估計

4.2.1 極大似然估計

在樸素貝葉斯法中,學習意味着估計 P(Y=ck)P(X(j)=x(j)|Y=ck) 。可以利用極大似然估計法估計相應的概率。
先驗概率的極大似然估計是

P(Y=ck)=Ni=1I(yi=ck)N,k=1,2,...,K       (4.8)

設第j個特徵向量 x(j) 的可能取值的集合爲 {aj1,aj2,...,ajSj} ,條件概率 P(X(j)=ajl|Y=ck) 的極大似然估計是
P(X(j)=xjl|Y=ck)=Ni=1I(x(j)i=ajl,yi=ck)Ni=1I(yi=ck)j=1,2,...,n;l=1,2,...,Sj;k=1,2,...,K......(4.9)

式(4.9)中,x(j)i 是第i個特徵向量的第j個特徵;ajl 是第j個特徵的第l 個可能的取值;I 是指示函數取值爲0和1。

4.2.2 採用極大似然估計的學習和分類的算法

(上面的數學公式輸入得我要吐了,更確切的說是邊tu邊寫到這裏。總算到算法了,離代碼不遠了。)
算法4.1 樸素貝葉斯算法
輸入:訓練數據 T={(x1,y1),(x2,y2),...(xN,yN)} ,其中 xi=(x(1)i,x(2)i,...x(n)i)Tx(j)i 是第i 個樣本的第j 個特徵,x(j)i{aj1,aj2,...,ajSj}ajl 是第j 個特徵可能取得第l 個值,j=1,2,...,nl=1,2,...,Sjyi{c1,c2,...,cK} ;實例x
輸出:實例x 的分類。
(1)計算先驗概率及條件概率

P(Y=ck)=Ni=1I(yi=ck)N,k=1,2,...,KP(X(j)=ajl|Y=ck)=Ni=1I(x(j)i=ajl,yi=ck)Ni=1I(yi=ck)j=1,2,...,n;l=1,2,...,Sj;k=1,2,...,K

(2)對於給定的 n 維實例 x=(x(1),x(1),...,x(n))T ,計算
P(Y=ck)j=1nP(X(j)=x(j)|Y=ck),k=1,2,...,K

(3)確定實例x 的類
y=f(x)=argmaxckP(ck)jP(X(j)=x(j)|Y=ck)

在此式中,運算符
argmaxck
的意義是對參數 ck 賦值從 c1cK ,取其中的最大值。

4.2.3 貝葉斯估計

爲了避免概率爲0的情況對計算結果的影響,採用貝葉斯估計。直接上貝葉斯估計的公式。

Pλ(X(j)=xjl|Y=ck)=Ni=1I(x(j)i=ajl,yi=ck)+λNi=1I(yi=ck)+Sjλj=1,2,...,n;l=1,2,...,Sj;k=1,2,...,KSj:j

對於任意的 jlPλ(X(j)=xjl|Y=ck) 仍然是一個概率(0Pλ1 )。

代碼

這裏我想弄一個文本分類的代碼。還在構思中。

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