您當前的位置:首頁 > 寵物

Naive Bayes Classifier

作者:由 hemingkx 發表于 寵物時間:2022-08-31

本專欄是西瓜書閱讀過程中的理解總結,歡迎指正!

南瓜書-Pumpkin Book/公式精推

西瓜書閱讀筆記/Vay-keen

1、Introduction to Bayesian Classification

貝葉斯分類器是一類分類演算法的統稱,它們均以貝葉斯定理為基礎,由此得名。樸素貝葉斯分類器是貝葉斯分類器中最直觀簡潔的演算法,其後又延展出半樸素貝葉斯分類器、貝葉斯網、EM演算法等適用性更強,更為複雜的演算法,從而形成整個貝葉斯分類器理論體系。

2、Bayesian Decision Theory

貝葉斯決策論是機率框架下實施決策的一種基本方法。

對分類任務來說,在所有的相關機率都已知的理想情形下,貝葉斯決策論考慮如何基於這些機率和誤判損失來選擇最優的類別標記

。我們以一般化的多分類任務為例來解釋其基本原理。

假設有

N

種可能的類別標記,即

\mathcal Y = \{c_1, c_2, ...,c_N\}

\lambda_{i,j}

是將一個真實標記為

c_j

的樣本誤分類為

c_i

的所產生的損失。基於後驗機率

P(c_i|\boldsymbol  x)

可獲得將樣本

\boldsymbol x

分類為

 c_i

所產生的期望損失,即在樣本

\boldsymbol x

上的“條件風險”:

R(c_i|\boldsymbol  x) = \sum_{j=1}^{N}{\lambda_{ij}P(c_j|\boldsymbol  x)} \\

先驗機率:是指根據以往經驗和分析得到的機率。

後驗機率:事情已經發生,要求這件事情發生的原因是由某個因素引起的可能性的大小。

例子:屋內有狗的機率是 P(Y),聽到狗叫(事件X)後屋內有狗的機率為P(Y|X)。

後驗機率和條件機率的關係:後驗機率是條件機率在貝葉斯推論框架下的細分概念,強調條件X為事件Y的觀測證據。

接下來,我們希望尋找一個判定準則

h: \mathcal{X} \mapsto \mathcal{Y}

以最小化總體風險

R(h) = \mathbb E_{\boldsymbol x}[R(h(\boldsymbol x)|\boldsymbol x)]\\

顯然,對每個樣本

\boldsymbol x

,若

h

能最小化條件風險

R(h(\boldsymbol x)|\boldsymbol x)

,則總體風險

R(h)

也將被最小化。這就產生了

貝葉斯判定準則

:為最小化總體風險,只需在每個樣本上選擇那個能使得條件風險

R(c|\boldsymbol x)

最小的類別標記,即

h^*(\boldsymbol x) = \mathop{argmin}\limits_{c \in \mathcal{Y}} R(c|\boldsymbol x) \\

此時,

h^*

稱為貝葉斯最優分類器,相應的總體風險

R(h^*)

稱為貝葉斯風險。

1 - R(h^*)

則反映了分類器所能達到的最好效能,即透過機器學習所能產生的模型精度的理論上限。

若目標是最小化分類錯誤率,則誤判損失

\lambda_{ij}

可寫為

\lambda_{ij} = \begin{cases}  0,  & \mbox{if }i\mbox{ = }j \ ; \\ 1, & \mbox{otherwise}. \end{cases}   \\

R(c_i|\boldsymbol  x) = \sum_{j=1}^{N}{\lambda_{ij}P(c_j|\boldsymbol  x)}

,得

R(c_i​∣\boldsymbol x)=1∗P(c_1​∣\boldsymbol x)+1∗P(c_2​∣\boldsymbol x)+...+0∗P(c_i​∣\boldsymbol x)+...+1∗P(c_N​∣\boldsymbol x)\\

 \sum_{j=1}^{N}{P(c_j|\boldsymbol  x)} =1

,故此時條件風險

R(c_i|\boldsymbol x) = 1 - P(c_i|\boldsymbol x)  \\

c_i

替換為

c

,得

R(c|\boldsymbol x) = 1 - P(c|\boldsymbol x)  \\

於是,最小化分類錯誤率的貝葉斯最優分類器為

h^*(\boldsymbol x) = \mathop{argmax}\limits_{c \in \mathcal{Y}}  P(c|\boldsymbol x) \\

即對每個樣本

\boldsymbol  x

,選擇能使後驗機率

P(c|\boldsymbol  x)

最大的類別標記。其中,類別

c

即為樣本

\boldsymbol  x

的正確標籤類別。

3、Bayes Theory

由上可知,我們需要獲得

P(c|\boldsymbol x)

的某種表達。這在機器學習發展歷程中產生了兩種策略:

判別式模型:

給定樣本

\boldsymbol  x

的分佈,直接建模

P(c|\boldsymbol x)

,獲得類別的機率分佈,選取機率最大的類別作為決策類別。

生成式模型:

先對聯合機率分佈

P(\boldsymbol x,c)

建模,然後再由此獲得

P(c|\boldsymbol x)

深入瞭解兩者的區別:傳送門

如上,生成式模型滿足:

P(c|x) = \frac{P(\boldsymbol x, c)}{P(\boldsymbol x)} \\

當應用於分類問題時,生成式模型往往結合貝葉斯定理,後驗機率

P(c|\boldsymbol x)

變為

P(c|\boldsymbol x) = \frac{P(\boldsymbol x|c)P(c)}{P(\boldsymbol x)} \\

其中,

P(c)

是先驗機率,表達了樣本空間中各類樣本所佔的比例。根據大數定律,當訓練集包含充足的獨立同分布樣本時,

P(c)

可以透過各類樣本出現的頻率進行估計。

P(\boldsymbol x)

是用於歸一化的“證據”因子。對給定樣本

\boldsymbol  x

,證據因子

P(\boldsymbol x)

與類別標記無關,是一個常數。

P(\boldsymbol x|c)

是樣本

\boldsymbol  x

相對於類標記

c

的類條件機率。可以看出,在上式中,

P(\boldsymbol x|c)

替代聯合機率分佈

P(\boldsymbol x, c)

成為建模的關鍵,其代表每個分類類別的屬性分佈。

在分類問題中,判別式模型和生成式模型的區別:

判別式模型直接學習物件屬性到分類類別之間的對映函式。給定任意屬性分佈,判別式模型給出分類類別的機率分佈,選擇機率最大的類別。

生成式模型則具體學習每個分類類別的屬性分佈,再依據機率理論等關係,比較當前樣本屬性分佈和各分類類別對應分佈的相似性,從而作出決策。

具體示例:

如果我們要訓練一個關於貓狗分類的模型,判別式模型只需要學習二者的差異即可,比如說貓的體型會比狗小一點。而生成式模型分別學習貓長什麼樣,狗長什麼樣。有了二者的長相以後,再根據具體的長相區分。

對於類條件機率

P(\boldsymbol x|c)

來說,由於它涉及到

\boldsymbol x

所有屬性的聯合機率,直接根據樣本出現的頻率估計將會遇到嚴重的困難。例如,假設樣本的

d

個屬性都是二值的,則樣本空間將有

2^d

種可能的取值,這個數量往往遠大於訓練樣本數。因此,很多樣本取值根本不會在訓練集中出現,“未被觀測到”和“出現機率為0”通常是不同的,只依據頻率分佈進行推斷會造成統計上的偏頗。

那麼,怎麼去估計類條件機率比較好呢?

4、Naive Bayes Classifier

樸素貝葉斯分類器在這個問題上作出了一個最簡單的假設——“屬性條件獨立性假設”,即

對於已知類別,假設所有屬性相互獨立

。換言之,假設每個屬性獨立地對分類結果發生影響。這樣,樸素貝葉斯分類器便不必學習屬性的聯合分佈,而是獨立地考慮各個屬性。

基於屬性條件獨立性假設,樣本

\boldsymbol x

的後驗機率可以寫成:

P(c|\boldsymbol x) = \frac{P(c)P(\boldsymbol  x|c)}{P(\boldsymbol x)}=\frac{P(c)}{P(\boldsymbol x)}\prod_{i=1}^{d}P(x_i|c)  \\

其中,

d

為屬性數目,

x_i

\boldsymbol x

在第

i

個屬性上的取值。

略去對於所有的類別相同的

P(\boldsymbol x)

,樸素貝葉斯分類器表達為:

h_{nb}(\boldsymbol x) = \mathop{argmax}\limits_{c \in \mathcal{Y}}P(c)\prod_{i=1}^{d}P(x_i|c)   \\

D_c

表示訓練集

D

中第

c

類樣本組成的集合,若有充足的獨立同分布樣本,則可容易地估計出類先驗機率:

P(c) = \frac{|D_{c}|}{|D|}\\

對離散屬性而言,令

D_{c,x_i}

表示

D_c

中在第

i

個屬性上取值為

x_i

的樣本組成的集合,則條件機率

P(x|c_i)

可估計為

P(x_i|c) = \frac{|D_{c,x_i}|}{|D_{c}|}\\

對連續屬性,可考慮機率密度函式,

p(x_i|c) \sim \mathcal{N}(\mu_{c,i},\sigma^2_{c,i})

,其中

\mu_{c,i}

\sigma^2_{c,i}

分別是第

c

類樣本在第

i

個屬性上取值的均值和方差,則有

p(x_i|c) = \frac {1}{\sqrt{2\pi}\sigma_{c,i}}exp \Bigg (-\frac{(x_i-\mu_{c,i})^2}{2\sigma_{c,i}^2} \Bigg )\\

為了避免其他屬性攜帶的資訊被訓練集中未出現的屬性值“抹去”,在估計機率值時通常要進行“平滑”,常用的平滑方式是拉普拉斯平滑。具體來說,令

N

表示訓練集

D

中可能的類別數,

N_i

表示第

i

個屬性可能的取值數,則對應的兩式分別修正為:

\hat P(c) = \frac{|D_{c}|+1}{|D|+N}\\

\hat P(x_i|c) = \frac{|D_{c,x_i}|+1}{|D_{c}|+N_i}\\

5、Maximum Likelihood Estimation

更一般的情形下,我們應當如何估計類條件機率呢?

在一般情形下,我們往往假定類條件機率具有某種確定的機率分佈形式,再基於訓練樣本對機率分佈的引數進行估計。具體地,記關於類別

c

的類條件機率為

P(\boldsymbol x|c)

,假設

P(\boldsymbol x|c)

具有確定的形式並且被引數向量

\boldsymbol \theta_{c}

唯一確定,則我們的任務就是利用訓練集

D

估計引數

\boldsymbol \theta_{c}

。 為了明確起見,我們將

P(\boldsymbol x|c)

記為

P(\boldsymbol x|\boldsymbol \theta_c)

我們可以採用極大似然法進行估計機率分佈的引數。

D_c

表示訓練集

D

中第

c

類樣本組成的集合,假設這些樣本是獨立同分布的,則引數

\boldsymbol \theta_c

對於資料集

D_c

的似然是

P(D_c|\boldsymbol \theta_c) = \prod_{\boldsymbol x \in D_c}^{}P(\boldsymbol x|\boldsymbol \theta_c)  \\

\boldsymbol \theta_c

進行極大似然估計,就是去尋找能最大化似然

P(D_c|\boldsymbol \theta_c)

的引數值

\hat {\boldsymbol \theta}_c

,直觀上看極大似然估計是試圖在

\boldsymbol  \theta_c

所有可能的取值中,找到一個能使資料出現的“可能性最大的值”。

為了防止下溢,我們通常使用對數似然

\begin{align} LL(\boldsymbol  \theta_c) &= logP(D_c|\boldsymbol  \theta_c) \\    &= \sum_{\boldsymbol  x \in D_c}^{}{logP(\boldsymbol  x|\boldsymbol  \theta_c)}     \end{align} \\

此時引數

\boldsymbol \theta_c

的極大似然估計

\hat{\boldsymbol \theta}_c

\hat {\boldsymbol \theta}_c = \mathop{argmin}\limits_{\boldsymbol \theta_c} LL(\boldsymbol \theta_c)  \\

6、Reference

演算法雜貨鋪——分類演算法之樸素貝葉斯分類

標簽: 貝葉斯  樣本  機率  屬性  類別