貝葉斯分類器演算法及案例詳解
作者:vicky_siyu 致謝:小龍快跑jly, 巧兒、克力,Esther_or so,雨佳小和尚
本文是對貝葉斯分類器(包括樸素貝葉斯分類器,半樸素貝葉斯分類器及貝葉斯網路)演算法的演算及案例的詳細分析。本文只是在學習後進行了總結並加入了自己的理解,如有不妥之處,還望海涵,也希望大家多多指教,一起學習!
ps.建議先閱讀“理解貝葉斯分類器原理及關係 https://blog.csdn.net/weixin_43742744/article/details/85492334 ” 後再閱讀本文,會對上述幾種貝葉斯分類器有更深入的理解。
一、 樸素貝葉斯分類器
特點:假設輸入的變數的特徵屬性之間具有很強的獨立性。
即假設x1,x2,….,xn相互獨立。{若AB相互獨立,則P(AB)=P(A)P(B)}
通過這個假設,可以把聯合分佈概率轉化為多個類條件概率的乘積。
(以下公式來自SIGAI–機器學習—雷老師)
樸素貝葉斯分類器既可以處理離散數值的分類問題,也能處理連續數值的分類問題。
下面分別結合公式和案例分析如何處理這兩類問題。
1)離散型
(PS. 拉普拉斯平滑處理是平滑處理的一種方式。平滑處理是為了避免某一類樣本數量為0,導致該樣本出現的概率為0。只要有一個概率為0,預測函式將概率連乘後就為0了。為了避免這種情況,我們在分子加上λ,分母加上Kλ,保證所有概率都非零。拉普拉斯平滑是λ=1的情況。)
2)連續型
當樣本的特徵是連續型的數值時,條件概率的分佈通常假設為高斯分佈,其樸素貝葉斯被稱為高斯樸素貝葉斯。高斯分佈又分為一維正態分佈和多維正態分佈。下面依次介紹兩種正態分佈。
一維正態分佈
為了得到函式,需要求出均值和方差:
求得均值和方差後,我們可以得到某類的不同特徵屬性的高斯函式。
最大化後驗概率正比於似然與先驗的乘積,算出似然後,還需計算先驗概率。
i. 假設各類出現的概率一樣
ii. 僅考慮訓練樣本資料時
平滑處理後的概率:(λ=1時為拉普拉斯平滑修正)
案例(來源於西瓜書):[1]
判斷一個具有特徵:{色澤=青綠,根蒂=蜷縮,敲聲=濁響,紋理=清晰,臍部=凹陷,觸感=硬滑,密度=0.697,含糖率=0.460}的測試樣例瓜是否為好瓜?
先驗:P(好瓜=是)=8/17≈0.471 P(好瓜=否)=9/17≈0.529
類條件概率:
離散值屬性通過樣本統計得出,連續值屬性假設為一維正態分佈,通過樣本計算出均值和方差,再代入測試集的資料求解。
最後計算先驗與類條件概率的乘積,數值大的對應的分類為分類結果:
由計算結果可知,此瓜更有可能是好瓜。
多維正態分佈
其對數似然函式為:
下面結合案例分析。
案例[2]:某國人體特徵指標:
根據樣本估計均值向量:
男性體徵對應的三維均值向量:
同理可得:
計算協方差:(舉例計算男性身高和體重的協方差,其他同理)
得到協方差矩陣:
求出協方差矩陣的行列式和逆矩陣:
代入對數似然函式中:
已知某人身高6英尺,體重130磅,腳掌長8英寸,預測該人是男還是女。
預測樣本向量x=(6, 130, 8)T
帶入ln(L男)和ln(L女)
ln(L男) =-16.314
ln(L女) = -28.730
ln(L男)>ln(L女)
所以這個人更有可能是男人.
二、 半樸素貝葉斯分類器
因為生活中有的屬性之間有較強的聯絡,完全假設各屬性獨立是不太合理的,因此在樸素貝葉斯各屬性互相獨立的基礎上放鬆了限制條件。可以加一個父屬性(One-Dependent Estimator,ODE)或K個父屬性(K-Dependent Estimator,KDE)。若k值較大又會造成維數較多,計算困難,因此常用的是獨依賴估計,即給每個屬性增加了一個父屬性pai。
現在的問題是如何確定這個父屬性?
有三種方法:SPODE,AODE和TAN演算法。
Ps.以下對於公式的解釋均採用西瓜資料集的資料。
1) SPODE (Super-Parent ODE): 假設所有屬性都依賴同一個屬性,這個屬性稱為“超父”屬性。
採用拉普拉斯修正後的計算公式:
假設pai是色澤青綠,xi是紋理清晰,c是好瓜。
則公式中N為是否為好瓜的類別數目:2(是,否)
Dc為好瓜的數目:8
D為所有瓜的數目:17
所以P©=(8+1)/(17+2)
Dc,xi為紋理清晰的好瓜數目:7
Ni為紋理類別的數目:3(清晰,稍糊,模糊)
P(xi│c)=(7+1)/(8+3)
2) AODE ( Averaged ODE): 假設所有的屬性都做一次父屬性,相當於在SPODE的基礎上加了一個迴圈。但是如果每個屬性都作為父屬性,計算量太大了,所以加了一個限定條件,如果要作為父屬性,在樣本中出現的次數應該大於等於m(m一般取30,是一個經驗值)。
採用拉普拉斯修正後的計算公式:
假設xi是色澤為青綠,xj是紋理清晰,c是好瓜。
則公式中Dc,xi為紋理清晰的好瓜數目:7
D為所有瓜的數目:17
N為是否為好瓜的類別數目:2(是,否)
Ni為色澤類別的數目:3(烏黑,青綠,淺白)
Dc,xi,xj為色澤青綠且紋理清晰的好瓜的數目:3
Nj為紋理類別的數目:3(清晰,稍糊,模糊)
所以P(c,xi)=(7+1)/(17+2*3)
P(xj│c,xi)=(3+1)/(7+3)
3) TAN(Tree Augmented Naïve Bayes): 通過最大帶權生成樹演算法確定屬性之間的依賴關係,簡單說,就是通過計算條件互資訊,求得每個屬性最相關的屬性,然後形成一個有向邊。條件互資訊的計算公式如下:
假設xi是色澤為青綠, xj是紋理清晰,c是好瓜。
則公式I (xI,xj│y)表示的是色澤青綠與紋理清晰的條件互資訊
這裡y有兩類(是,否為好瓜),分別計算每類後累加數值即可求得條件互資訊
P(xI,xj│c)為好瓜中色澤青綠且紋理清晰的概率
P(xI│c)為好瓜中色澤青綠的概率
P(xj│c)為好瓜中紋理清晰的概率
SPODE ,AODE與TAN的關係:
SPODE:各屬性都依賴於一個超父屬性
AODE: (m>30的屬性)都作為父屬性算一遍,相當於給SPODE外面加了一個迴圈(上圖是用x2作為父屬性畫的,還有其他屬性可作為父屬性)
TAN:通過計算條件互資訊,確定每個屬性最相關的屬性,然後構造有向邊
為了更加直觀地理解,再次結合西瓜書上的案例:
判斷一個具有特徵:{色澤=青綠,根蒂=蜷縮,敲聲=濁響,紋理=清晰,臍部=凹陷,觸感=硬滑,密度=0.697,含糖率=0.460}的測試樣例瓜是否為好瓜?
SPODE:假設其他特徵都依賴於色澤為青綠
AODE:假設各個特徵都作為父屬性計算後求和,相當於在SPODE外面加了一層迴圈,只是這裡的案例沒有一個滿足m>30的條件約束,不適用AODE演算法
TAN:計算各個特徵之間的條件互資訊(以色澤為青綠、敲聲濁響、紋理清晰、臍部凹陷為例)[3]
屬性互條件資訊值:
通過表格可以看到屬性間的條件互資訊值,找到每個屬性條件互資訊最大的值及相對應的屬性,於是我們可以畫出下圖的紅線,此時是無向網路圖。為了變成有向網路圖,我們需要找一個起點,這裡我們找的是“凹陷”作為起點(哪個屬性作為起點無所謂,只要不會形成閉環就可以),畫出了下圖的藍線,構造出了有向網路圖。[3]
三、 貝葉斯網路
貝葉斯網路(Bayesian network),又稱信念網路(Belief Network),或有向無環圖模型(directed acyclic graphical model),是一種概率圖模型,於1985年由Judea Pearl首先提出。一般而言,貝葉斯網路可以用在知道某些變數的值或分佈時求另一部分的變數的概率分佈。
案例[4]:
其中,各個單詞、表示式表示的含義如下:
P(S): smoking表示吸菸
P(C|S):一個人在吸菸的情況下得肺癌(lung Cancer)的概率
P(X|C,S):因吸菸且得肺癌而需要照X光(X-ray)的概率
P(B|S):一個人在吸菸的情況下得支氣管炎(Bronchitis)的概率
P(D|C,B):因吸菸且得了支氣管炎導致呼吸困難(dyspnoea)的概率
C = 0表示lung Cancer不發生的概率,C = 1表示lung Cancer發生的概率
B等於0(B不發生)或1(B發生)也類似於C,同樣,D=1表示D發生的概率,D=0表示D不發生的概率
便可得到dyspnoea的一張概率表,如上圖的最右下角所示
關於貝葉斯網路,更多內容可參考[4].
四、 參考文獻
[1] 周志華,《機器學習》,[M],1版,北京:清華大學出版社,2016
[2] 正態貝葉斯分類器,[J/OL], https://blog.csdn.net/bbzz2/article/details/50915660
[3] 貝葉斯分類器(一):樸素貝葉斯分類器與半樸素貝葉斯分類器,[J/OL], https://blog.csdn.net/rongrongyaofeiqi/article/details/53100391
[4] 機器學習演算法----貝葉斯網路,[J/OL],
https://blog.csdn.net/sunshine_in_moon/article/details/51276119