Naive Bayes 算法的原理-1

0 綜述

Naive bayes classifer算法,中文名稱是樸素貝葉斯分類器,或者叫樸素貝葉斯方法,屬於有監督學習(Supervised Learning)的範疇。

它的主要思想是,基於帶類型標籤的數據,用貝葉斯條件概率公式和全概率公式,計算(訓練)出標籤類型的的先驗概率和條件概率。如果訓練完畢,有新的數據過來,將新的數據帶入由以上訓練出來的先驗概率和條件概率組成的計算公式,算出每個類型標籤相對應的概率,其中最大的那個類型就是Naive bayes分類算法的分類結果。

上面的說明可能有點不容易理解,那我們看一個例子來對naive bayes方法有個更直觀的認識。很多文獻與教材都是拿垃圾郵件識別器來說明樸素貝葉斯算法。我也拿垃圾郵件過濾器(Spam Email Filter)說事情:在構造分類器的時候,我們首先需要訓練數據,訓練數據就是一大坨郵件,即郵件的文本加上是否是垃圾郵件的標籤,在這裏X就是由一些字符串組成的向量,Y的值是1或者0,1代表是垃圾郵件,0代表不是。然後通過某些映射,將字符串向量轉化成數字向量,一般的方法是將單詞字符串在字典裏的索引值作爲數值。然後用這些數據計算出需要的先驗概率和條件概率。具體細節就是下個章節的內容。

1 Naive Bayes 算法的分類過程

一般情況下,對於機器學習的算法的闡述總是從訓練數據的算法開始介紹,但是對於樸素貝葉斯算法,我準備先從分類算法開始分析,個人認爲這種順序更容易被人理解。

1.1 從分類回溯

所謂分類過程,就是用訓練好的模型去判斷新的數據屬於哪一類。在此我先將垃圾郵件分類器的例子做更一般化的處理:

y = C_k \quad (k = 1, ..., K)

即分類器總共有K個分類。我們先不考慮計算細節,爲了計算出新的數據x屬於哪一類,憑直覺應該運用貝葉斯條件概率計算K個類型中每個類型的條件概率,也叫後驗概率。

\Pr(y = C_k | X = x) \quad (k = 1, ..., K)

然後其中概率最大的那個就是我們的分類結果,用數學語言可以寫成:

y=\underset{C_k}{\mathrm{argmax}} \Pr(y = C_k | X = x)

1.2 後驗概率 \Pr(y = C_k | X = x)的計算

通過應用Bayes條件概率,可以得到:

\Pr(y = C_k | X = x) = \frac{\Pr(X = x | y = C_k) \Pr(y = C_k)}{\Pr(X = x)}

然後再應用全概率公式:

\Pr(y = C_k | X = x) = \frac{\Pr(X = x | y = C_k) \Pr(y = C_k)}{\sum_k \Pr(X = x | y = C_k) \Pr(y = C_k)}

其實可以不用管分母上的,所以最終的分類計算公式變爲:

y=\underset{C_k}{\mathrm{argmax}} Pr(X = x | y = C_k) \Pr(y = C_k)

1.3 樸素貝葉斯假設(Naive Bayes assumption)

從剛纔對垃圾郵件過濾器的介紹,我們知道數據X其實是個向量,爲了計算後驗概率更加方便,我們需要假設X裏各個元素條件概率相互獨立,這是樸素貝葉斯假設的主要內容。另外還要假設每個數據X有n個元素:

X = [x^{(1)}, x^{(2)}, ... , x^{(n)}]

將上面向量展開帶入後驗概率Pr(X = x | y = C_k)

\begin{eqnarray}Pr(X = x | y = C_k) &=&\Pr(X^{(1)}=x^{(1)}, X^{(2)}=x^{(2)}, ... , X^{(n)}=x^{(n)}|y = C_k)\\ &=& \prod_{j=1}^{n} \Pr(X^{(j)}=x^{(j)} | y = C_k) \end{eqnarray}

然後將上面的結果帶入到之前的分類計算公式得到:

y=\underset{C_k}{\mathrm{argmax}} \prod_{j=1}^{n} \Pr(X^{(j)}=x^{(j)} | y = C_k) \Pr(y = C_k)

1.4 分類過程總結

有了上面的計算式子,我們就可以對新的數據進行分類了。所以接下來改看看如何通過對訓練數據進行訓練,計算出上面式子需要的\Pr(y = C_k)\Pr(X^{(j)}=x^{(j)} | y = C_k)

To be continued

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