【機器學習(一)】機器學習中使用樸素貝葉斯(即最小錯誤率貝葉斯)、最小風險貝葉斯實現分類

目錄

1. 樸素貝葉斯分類(最小錯誤率貝葉斯)

1.1 理論:

1.2 樸素貝葉斯算法流程:

1.3 舉例說明

1.3.1 計算步驟:

1.3.2 程序代碼:

2. 貝葉斯估計

2.1 算法流程:

2.2 舉例說明

3 最小風險貝葉斯

3.1算法流程:

3.2 案例說明


1. 樸素貝葉斯分類(最小錯誤率貝葉斯)

首先得清楚:樸素貝葉斯就是最小錯誤率貝葉斯,同時也是最大後驗概率貝葉斯。

樸素貝葉斯是基於貝葉斯定理與特徵條件獨立假設的分類方法。

對於給定的訓練數據集,先假設輸入輸出的聯合概率分佈(特徵條件獨立);然後給定一個輸入x,利用貝葉斯頂級求出輸出y。

可以簡單的認爲訓練的數據可以得到先驗概率分佈和條件概率分佈,然後輸入一個實例,計算這個實例的後驗概率,通過後驗概率的大小判斷輸出值y。

1.1 理論:

設訓練空間爲$T=(x_1,y_1),(x_2,y_2),...,(x_N,y_N)$,是由P(X,Y)獨立同分布產生

先驗概率分佈$P(Y=c_k), k=1,2,...,K$,其中$c_k$是訓練空間的輸出標籤。

例如一個訓練數據的輸入是$(2,1),(3,1),(4,0)$那麼$P(Y=1)=$\frac{2}{3}$P(Y=0)=$\frac{1}{3}

 

條件概率分佈$P(X=x\|Y=c_k)=P(X^1=x^1,...,X^N=x^n|Y=c_k)$,可以理解爲在$Y=c_k$發生的概率下,x發生的概率,但x又有$x_1,x_2,...,x_n$,之前說過訓練空間是獨立同分布,因此$$P(X=x|Y=c_k)=P(X^1=x^1,...,X^N=x^n|Y=c_k)=$$\prod P(X^j=x^j|Y=c_k)

 

貝葉斯定理$$P(Y=c_k|X=x)=\frac{P(X=x|Y=c_k)P(Y=c_k)}{\sum(P(X=x|Y=c_k)P(Y=c_k))}$$,把條件概率分佈帶入貝葉斯公式中,可以得到:

$$P(Y=c_k|X=x)=\frac{P(Y=c_k)\prod (P(X^j=x^j|Y=c_k))}{\sum(P(Y=c_k)\prod (P(X^j=x^j|Y=c_k))}$$

通過這個貝葉斯定理,輸入一個x,我們就可以計算在x的條件概率下y的概率。這是樸素貝葉斯分類算法的基本公式。

 

因此樸素貝葉斯分類器可以表示爲:$$y=f(x)=arg max=\frac{P(Y=c_k)\prod (P(X^j=x^j|Y=c_k))}{\sum(P(Y=c_k)\prod (P(X^j=x^j|Y=c_k))}$$

 

1.2 樸素貝葉斯算法流程:

輸入:訓練數據$T=(x_1,y_1),(x_2,y_2),...,(x_N,y_N)$,其中$x_i=(x_{i}^{1},x_{i}^{2},...,x_{i}^{n})$$y_i\in(c_1,c_2,...,c_k)$

輸出:某個輸入x的分類

  1. 計算先驗概率和條件概率$$P(Y=c_k)=\frac{\sum I(y_i=c_k)}{N}$$$$P(X^j=a_{jl}|Y=c_k)=\frac{\sum I(x_{i}^{j}=a_j_l,y_i=c_k)}{\sum I(y_i=c_k)}$$
  2. 輸入的實例$x=(x_{i}^{1},x_{i}^{2},...,x_{i}^{n})$,計算後驗概率:$$P(Y=c_k|X=x)=P(Y=c_k)\prod P(X^j=x^j|Y=c_k)$$
  3. 確定輸入實例x的類,在輸出y:y=arg max P(Y=c_k|X=x)

1.3 舉例說明

例如有一個表格,輸入是X($x^1,x^2$),輸出是Y。$x^1$的取值有1,2,3,$x^2$的取值有S,M,L。求給一個輸入x=(2,S)的輸出標記類y的值。

1.3.1 計算步驟:

1.3.2 程序代碼:

from sklearn.naive_bayes import GaussianNB

# x_1 取值1 ,2 ,3
# x_2 取值s,m , l用4, 5, 6代替
X_train = [[1, 4], [1, 5], [1, 5], [1, 4], [1, 4], [2, 4], [2, 5], [2, 5], [2, 6], [2, 6],
           [3, 6], [3, 5], [3, 5], [3, 6], [3, 6]]
y_train = [-1, -1, 1, 1, -1, -1, -1, 1, 1, 1, 1, 1, 1, 1, -1]

clf = GaussianNB()
clf.fit(X_train, y_train)
print(clf.predict([[2,4]]))

輸出結果爲-1,這和手動計算結果一致。

 

2. 貝葉斯估計

從上面,可以使用樸素貝葉斯完成分類,但是如果出現概率爲0的情況時,會影響到後驗概率計算的結果,產生偏差,所以引入貝葉斯估計算法,就是在原來的最小錯誤率貝葉斯的基礎上增加一個參數\lambda和權重$S_j$

條件概率的貝葉斯估計公式爲:$$P(x^j=a_{j}^{l}|Y=c_k)=\frac{\sum I(x_{i}^{j}=a_jl,y_i=c_k)+\lambda }{\sum I(y_i=c_k)+S_j\lambda }$$,可以看到,在隨機變量各個取值的頻數上加了一個正數\lambda\lambda >0),\lambda =0時就是極大似然估計,也是樸素貝葉斯,\lambda =1時稱爲拉普拉斯平滑。

$S_j$是每個輸入的維度,例如上個例題中,X分爲x^1,x^2的輸入均是3維的,即x^1輸入是\{1,2,3\},所以$S_j=3$

先驗概率的貝葉斯估計公式爲:$$P(Y=c_k)=\frac{\sum I(y_i=c_k)+\lambda }{N+K\lambda }$$,其中K是y的種類個數,如y=\{1,-1\},那麼K=2。

 

2.1 算法流程:

輸入:訓練數據$T=(x_1,y_1),(x_2,y_2),...,(x_N,y_N)$,其中$x_i=(x_{i}^{1},x_{i}^{2},...,x_{i}^{n})$$y_i\in(c_1,c_2,...,c_k)$

輸出:某個輸入x的分類

確定\lambda =1, $S_j$=3,K=2

  1. 計算先驗概率和條件概率:$$P(Y=c_k)=\frac{\sum I(y_i=c_k)+\lambda }{N+K\lambda }$$, $$P(x^j=a_{j}^{l}|Y=c_k)=\frac{\sum I(x_{i}^{j}=a_jl,y_i=c_k)+\lambda }{\sum I(y_i=c_k)+S_j\lambda }$$
  2. 輸入的實例$x=(x_{i}^{1},x_{i}^{2},...,x_{i}^{n})$,計算後驗概率$$P(Y=c_k|X=x)=P(Y=c_k)\prod P(X^j=x^j|Y=c_k)$$
  3. 確定輸入實例x的類,在輸出y:y=arg max P(Y=c_k|X=x)

2.2 舉例說明

同樣是上一個例題問題,計算過程如下:

 

3 最小風險貝葉斯

在做決策的時候,我們往往不僅僅關心錯誤率是否最小。有時,我們更加關心某種決策帶來的損失是否可以接受,以及接受的程度是多少。例如,在判斷病人是否得傳染病時,若把正常人判定爲病人,那麼患者就需要多承擔費用。若把傳染病人判定成正常人,那麼會帶來更多人感染的風險,損失將會是巨大的。

從這可以看出,引入風險後的貝葉斯是一種符合現實生活中的情景的。因此,需要事先做大量的調查,找到損失的分佈,計算決策表

引入風險函數,或者損失函數。假設x取w_j,採用\alpha _i作爲當前風險。那麼損失函數定義爲:\lambda (\alpha _i,w_j),i=1,2,...,k;j=1,2,...,c。按照損失函數的形式求出一個矩陣,稱之爲決策表。把決策表中的損失和樸素貝葉斯求到的分類概率乘起來,得到條件風險。最後選擇最小風險的方式,選出風險最小的分類。

3.1算法流程:

  1. 計算先驗概率和條件概率$$P(Y=c_k)=\frac{\sum I(y_i=c_k)}{N}$$$$P(X^j=a_{jl}|Y=c_k)=\frac{\sum I(x_{i}^{j}=a_j_l,y_i=c_k)}{\sum I(y_i=c_k)}$$
  2. 輸入的實例$x=(x_{i}^{1},x_{i}^{2},...,x_{i}^{n})$,計算後驗概率:$$P(Y=c_k|X=x)=P(Y=c_k)\prod P(X^j=x^j|Y=c_k)$$
  3. 利用決策表計算後驗風險:R(\alpha _i|x)=\sum_{j=1}^{c}\lambda (\alpha _i|x_j)P(Y=c_k|X=x)
  4. 選擇最小風險,輸出y:$y=arg min R(\alpha _i|x)$

3.2 案例說明

繼續 以上面案例爲例,通過樸素貝葉斯部分內容,得到

P(Y=1)P(x^1=2|Y=1)P(x^2=sLY=1)=\frac{1}{45}

P(Y=-1)P(x^1=2|Y=1)P(x^2=sLY=1)=\frac{1}{15}

假設決策表如下:

  1 -1
1 0 1
-1 6 0

所以得到的後驗風險爲:

R(\alpha _1|x)=\sum_{j=1}^{2}\lambda _1_jP(Y=c_j|x)=\frac{1}{15}

R(\alpha _2|x)=\sum_{j=1}^{2}\lambda _2_jP(Y=c_j|x)=\frac{6}{45}=\frac{2}{15}

所以R(\alpha _1|x)<R(\alpha _2|x),根據最小風險,選擇y=-1作爲最後的結果輸出。

決策表是假設出來的,在現實生活中,決策表是通過大量的樣本估計出來的。從決策表中可以看出,把1估計成-1的風險是1,把-1估計成1的風險則是6,因此把-1估計錯誤的風險代價要大得多。

 

--------------------------------------------------------------------------------------------------------------------------------------------------------

2020-6-18更新了最小風險貝葉斯部分內容。

 

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