機器學習第七篇——樸素貝葉斯

今天要和大家談的樸素貝葉斯也是一種機器學習分類算法,但它和其他機器學習分類算法不太一樣。對於大多數的機器學習分類算法,諸如 邏輯迴歸  決策樹SVM等,他們都是判別方法,也就是直接學習出特徵X和類別Y之間的關係,但樸素貝葉斯是基於貝葉斯決策理論和特徵屬性獨立假設的生成方法。

下面我們先來了解貝葉斯決策理論。

一、貝葉斯決策理論

貝葉斯決策論是概率框架下實施決策的基本方法。對分類任務來說,在所有相關概率都已知的理想情況下,貝葉斯決策論考慮如何基於這些概率和誤判損失來選擇最優的類別標記。下面我們舉個多分類任務。

假設類別標記有N種可能,即Y=\left \{ \right.c_{1},c_{2},...,c_{N}\left. \right \}\lambda _{ij}是將一個真實標記爲c_{j}的樣本誤分類爲c_{i}所產生的代價。則將一個樣本x分類爲c_{i}所產生的期望代價如下:

                                                         R(c_{i}|x)=\sum_{j=1}^{N}\lambda _{ij}P(c_{j}|x)

這個式子的含義:在我們不知道樣本x的真實標記的情況下,我們主觀的判斷這個樣本屬於c_{i},這個式子就爲我們的主觀判斷施加一個代價。如果我們主觀判斷的標記和真實標記一樣,則這個代價會很小,反之代價會很大。

我們希望我們主觀判斷的標記和樣本的真實標記一致,也就是選擇一個代價最小的主觀判斷,數學描述如下:

                                                        h^{*}(x)=argmin R(c|x)     

\lambda _{ij}=\left\{\begin{matrix} 0 &if i = j & \\ 1& otherwise& \end{matrix}\right. , 則   R(c_{i}|x)=1 - P(c_{i}|x),於是最小化代價等價於 h^{*}(x)=argmax P(c|x)。於是對每一樣本x,我們選擇使後驗概率P(c|x)最大的類別標記。

所以,我們要最小化代價等價於求最大的後驗概率P(c|x),但這通常是很難直接獲得的,我們可以考慮貝葉斯公式。

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

其中P(c)是類先驗概率,表達了樣本空間中各類樣本所佔的比例,根據大數定律,當訓練集包含充足的獨立同分布樣本時,P(c)可通過各類樣本出現的頻率來進行估計

P(x|c)是樣本x相對於類標記c的類條件概率,由於它涉及關於x所有屬性的聯合概率,直接根據樣本出現的頻率來估計將會遇到嚴重的問題。例如,樣本x有d個屬性都是二值的,則樣本空間將有2^{d}中可能的取值,但如果d很大,則樣本空間的可能取值數遠大於訓練樣本數,這時候有許多可能的樣本沒有出現在訓練集中,但它們的概率不一定爲0。這就是“未被觀察到”和"概率爲0"的矛盾問題。

P(x)是歸一化因子,對於比較P(c_{i}|x)P(c_{j}|x)的大小沒有影響。

下面我們的一個難點是求P(x|c),一種可行的思路是假設P(x|c)具有確定形式並且被參數向量\theta _{c}唯一確定,則我們可利用極大似然估計法求出\theta _{c}

比如我們假設P(x|c)服從N(U_{c},\sigma _{c}^{2})的高斯分佈,則利用極大似然估計求出:

                                                     U_{c}=\frac{1}{|D_{c}|}\sum_{x\varepsilon D_{c}}^{ }x,    \sigma _{c}^{2} = \frac{1}{|D_{c}|}\sum_{x\varepsilon D_{c}}^{ }(x-U_{c})(x-U_{c})^{T}

其中,D_{c}爲訓練集中類別標記爲c的樣本集合。

很明顯,這種方法有個致命的缺陷:如果假設的概率分佈形式不符合潛在的真實數據分佈,則估計結果很不好。

二、樸素貝葉斯

爲什麼我們求P(x|c)會很困難,原因在於它涉及關於x所有屬性的聯合概率,難以從有限的訓練樣本直接估計。爲了避免這個障礙,樸素貝葉斯就假設所有屬性相互獨立,有了這個假設,求P(x|c)就有如下公式。

                                                     P(x|c) = \coprod_{i=1}^{d}P(x_{i}|c)

其中d爲屬性個數,x_{i}爲x在第i個屬性上的取值。

下面我們的任務就是求出每個P(x_{i}|c)。對離散屬性來說,它的值爲在類別標記爲c的訓練樣本中,第i個屬性取值爲x_{i}的樣本所佔的比例。即P(x_{i}|c)=\frac{|D_{c,x_{i}}|}{|D_{c}|}

雖然樸素貝葉斯所假設的屬性獨立在現實情況中很少滿足,但這並不影響它的使用,特別是在文本分類中效果良好,一個具體的例子可以參照 留言檢測。

 

 

 

 

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