貝葉斯
貝葉斯判定準則
爲最小化總體風險,只需要在每個樣本上選擇那個能使條件風險R(c∣x)最小的類別標記,即:
h∗(x)=c∈YargminR(c∣x)(式1)
此時,h∗(x)稱爲貝葉斯最優分類器。
已知,條件風險R(c∣x)的計算公式爲:
R(ci∣x)=j=1∑NλijP(cj∣x)(式2)
如若目標是最小化分類錯誤率,則誤判損失λij對應爲0/1損失,即:
λij={0,1,ifi=jotherwise(式3)
那麼條件風險R(c∣x)的計算公式進一步展開爲:
R(ci∣x)=1⋅P(c1∣x)+⋯+1⋅P(ci−1∣x)+0⋅P(ci∣x)+1⋅P(ci+1∣x)+⋯+1⋅P(cN∣x)=P(c1∣x)+⋯+P(ci−1∣x)+P(ci+1∣x)+⋯+P(cN∣x)(式4)
由於∑j=1NP(cj∣x)=1,所以有:
R(ci∣x)=1−P(ci∣x)(式5)
於是呢,最小化錯誤率的貝葉斯最優分類器就是:
h∗(x)=c∈YargminR(c∣x)=c∈Yargmin(1−P(c∣x))=c∈YargmaxP(c∣x)(式6)
多元正態度分佈參數的極大似然估計
已知對數似然函數爲:
LL(θc)=x∈Dc∑logP(x∣θc)(式7)
爲了便於計算,令log的底數爲e,則對數似然函數爲:
LL(θc)=x∈Dc∑lnP(x∣θc)(式8)
由於P(x∣θc)=P(x∣c)∼N(μc,σc2)那麼:
P(x∣θc)=(2π)d∣Σc∣1exp(−21(x−μc)TΣc−1(x−μc))(式9)
其中,d表示x的維數,Σc=σc2爲對稱正定協方差矩陣,∣Σc∣表示行列式,將上式代入對數似然函數可得:
LL(θc)=x∈Dc∑ln[(2π)d∣Σc∣1exp(−21(x−μc)TΣc−1(x−μc))](式10)
令∣Dc=N∣,則對數似然函數化爲:
LL(θc)=x=1∑Nln[(2π)d∣Σc∣1exp(−21(xi−μc)TΣc−1(xi−μc))]=i=1∑Nln[(2π)d1⋅∣Σc∣1exp(−21(xi−μc)TΣc−1(xi−μc))]=i=1∑N{ln(2π)d1+ln∣Σc∣1+ln[exp(−21(xi−μc)TΣc−1(xi−μc))]}=i=1∑N{−2dln(2π)−21ln∣Σc∣−21(xi−μc)TΣc−1(xi−μc)}=−2Ndln(2π)−2Nln∣Σc∣−21Σi=1N(xi−μc)TΣc−1(xi−μc)(式11)
由於參數θc的極大似然估計θ^c爲;
θ^c=θcargminLL(θc)(式12)
所以下面只需求出使得對數似然函數LL(θc)取到最大值的μ^c和∑^c,就求出了θ^c。
對LL(θc)關於μc求偏導:
∂μc∂LL(θc)=∂μc∂[−2Ndln(2π)−2Nln∣Σc∣−21i=1∑N(xi−μc)TΣc−1(xi−μc)]=∂μc∂[−21i=1∑N(xi−μc)TΣc−1(xi−μc)]]=−21i=1∑N∂μc∂[(xi−μc)TΣc−1(xi−μc)]=−21i=1∑N∂μc∂[(xiT−μcT)Σc−1(xi−μc)]=−21i=1∑N∂μc∂[(xiT−μcT)(Σc−1xi−Σc−1μc)]=−21i=1∑N∂μc∂[xiTΣc−1xi−xiTΣcTμc−μcTΣc−1xi+μcTΣc−1μc](式13)
由於xiTΣc−1μc的計算結果爲標量,所以有:
xiTΣc−1μc=(xiTΣc−1μc)T=μcT(Σc−1)Txi=μcT(ΣcT)−1xi=μcTΣc−1xi(式14)
所以(式13)可以進一步化爲:
∂μc∂LL(θc)=−21i=1∑N∂μc∂[xiTΣc−1xi−2xiTΣc−1μc+μcTΣc−1μc](式15)
由矩陣微分公式:
∂x∂aTx=a,∂x∂xTβx=(β+βT)x(式16)
可以得到;
∂μc∂LL(θc)=−21i=1∑N[0−(2xiTΣc−1)T+(Σc−1+Σc−1)Tμc]=−21i=1∑N[−(2(Σc−1)Txi)+(Σc−1+Σc−1)Tμc]=−21i=1∑N[−(2Σc−1xi)+2Σc−1μc]=i=1∑NΣc−1xi−NΣc−1μc(式17)
令偏導數爲0,得到:
∂μc∂LL(θc)=i=1∑NΣc−1xi−NΣc−1μc=0⟹i=1∑NΣc−1xi=NΣc−1μc⟹Σc−1i=1∑Nxi=NΣc−1μc⟹Nμc=i=1∑Nxi⟹μc=N1i=1∑Nxi(式18)
同樣的,對LL(θc)關於Σc求偏導得到:
Σc=N1i=1∑N(xi−μc)(xi−μc)T(式19)
最小化分類錯誤率的貝葉斯最優分類器爲:
h∗(x)=c∈YargmaxP(c∣x)(式20)
又由貝葉斯定理可以知道:
P(c∣x)=P(x)P(x,c)=P(x)P(c)P(x∣c)(式21)
所以:
h∗(x)=c∈YargmaxP(x)P(c)P(x∣c)=c∈YargmaxP(c)P(x∣c)(式22)
又由屬性條件獨立性假設:
P(x∣c)=P(x1,x2,⋯,xd∣c)=i=1∏dP(xi∣c)(式23)
所以:
h∗(x)=c∈YargmaxP(c)i=1∏dP(xi∣c)(式24)
這個就是樸素貝葉斯分類器的表達式。
對於P(c),表示的是樣本空間中各類樣本所佔的比例,根據大數定律,當訓練集包含充足的度量同分布樣本的時候,P(c)可以通過各類樣本的頻率來進行估計,即:
P(c)=∣D∣∣Dc∣(式25)
其中,D表示訓練集,∣D∣表示樣本數,Dc表示訓練集中第c類樣本的數量組成的集合,∣Dc∣表示集合Dc的樣本個數。
貝葉斯分類器python應用
from sklearn.datasets import load_breast_cancer
cancer = load_breast_cancer()
print(cancer.keys())
dict_keys(['data', 'target', 'target_names', 'DESCR', 'feature_names', 'filename'])
print("腫瘤的分類:",cancer['target_names'])
print("腫瘤的特徵:",cancer['feature_names'])
腫瘤的分類: ['malignant' 'benign']
腫瘤的特徵: ['mean radius' 'mean texture' 'mean perimeter' 'mean area'
'mean smoothness' 'mean compactness' 'mean concavity'
'mean concave points' 'mean symmetry' 'mean fractal dimension'
'radius error' 'texture error' 'perimeter error' 'area error'
'smoothness error' 'compactness error' 'concavity error'
'concave points error' 'symmetry error' 'fractal dimension error'
'worst radius' 'worst texture' 'worst perimeter' 'worst area'
'worst smoothness' 'worst compactness' 'worst concavity'
'worst concave points' 'worst symmetry' 'worst fractal dimension']
可見,腫瘤的分類分爲:惡性(Malignant),良性(benign),特徵值有很多。
X, y = cancer.data, cancer.target
from sklearn.model_selection import train_test_split
X_train, X_test, y_train, y_test = train_test_split(X,y,random_state=38)
print("訓練集形態:", X_train.shape)
print("測試集形態:", X_test.shape)
訓練集形態: (426, 30)
測試集形態: (143, 30)
from sklearn.naive_bayes import GaussianNB
gnb = GaussianNB()
gnb.fit(X_train, y_train)
print("模型得分:{:.3f}".format(gnb.score(X_test, y_test)))
模型得分:0.944