貝葉斯分類器


12/21/2017 11:55:07 AM

貝葉斯分類器的出發點是貝葉斯定理

\[P(A|B)=\frac{P(B|A)P(A)}{P(B)}. \]

貝葉斯定理由英國學者托馬斯·貝葉斯(1702~1763)提出,於1763年被發表。從發表的時間來看,這個定理的背后肯定故事很多。大家可以去了解一下相關的歷史。下面,我們來解釋一下貝葉斯分類器的原理。

一、貝葉斯決策

首先我們來描述一下需要解決的問題。假設有\(N\)種可能的類別標記,即\(Y=\{c_1,c_2,\cdots,c_N\}\)。那么對於樣本\(\boldsymbol{x}\),它屬於哪一類呢?

在這里,我們首先算出樣本\(\boldsymbol{x}\)屬於第\(i\)個類的概率,即\(P(c_i|\boldsymbol{x})\);然后,通過比較所有的\(P(c_i|\boldsymbol{x})\)得到樣本\(\boldsymbol{x}\)所屬的最佳類別。於是如何計算\(P(c_i|\boldsymbol{x})\)便稱為了問題的關鍵。

將類別\(c_i\)和樣本\(\boldsymbol{x}\)代入到上面的貝葉斯公式中,得到

\[P(c_i|\boldsymbol{x})=\frac{P(\boldsymbol{x}|c_i)P(c_i)}{P(\boldsymbol{x})}. \]

一般來說,我們稱\(P(c_i)\)先驗概率,稱\(P(\boldsymbol{x}|c_i)\)條件概率,而\(P(\boldsymbol{x})\)是用於歸一化的證據因子。對於\(P(\boldsymbol{c_i})\),我們可以通過訓練樣本中類別為\(c_i\)的樣本所占的比例進行估計;此外,由於只需要找出最大的\(P(c_i|\boldsymbol{x})\),因此我們並不需要計算\(P(\boldsymbol{x})\)

於是,當求出條件概率\(P(\boldsymbol{x}|c_i)\),問題便完美的解決了。可是問題並不簡單。

為了求解條件概率\(P(\boldsymbol{x}|c_i)\),人們基於不同假設提出了許多方法。

二、朴素貝葉斯分類器

假設樣本\(\boldsymbol{x}\)包含\(d\)個屬性,即\(\boldsymbol{x}=\{x_1,x_2,\cdots,x_d\}\)。於是有

\[P(\boldsymbol{x}|c_i)=P(x_1,x_2,\cdots,x_d|c_i). \]

這個聯合概率難以從有限的訓練樣本中直接估計得到。於是,朴素貝葉斯(Naive Bayesian,簡稱NB)采用了“屬性條件獨立性假設”:對已知類別,假設所有屬性相互獨立。於是有

\[P(x_1,x_2,\cdots,x_d|c_i)=\prod_{j=1}^d P(x_j|c_i). \]

這樣的話,我們就可以很容易地推出相應的判定准則了:

\[h_{nb}(\boldsymbol{x})=\mathop{\arg \max}_{c_i\in Y} P(c_i)\prod_{j=1}^dP(x_j|c_i). \]

條件概率\(P(x_j|c_i)\)的求解

如果\(x_j\)是標簽屬性,那么我們可以通過計數的方法估計\(P(x_j|c_i)\)

\[P(x_j|c_i)=\frac{P(x_j,c_i)}{P(c_i)}\approx\frac{\#(x_j,c_i)}{\#(c_i)}. \]

其中,\(\#(x_j,c_i)\)表示在訓練樣本中\(x_j\)\(c_i\)共同出現的次數。

如果\(x_j\)是數值屬性,通常我們假設類別\(c_i\)中的所有樣本第\(j\)個屬性的值服從正態分布。我們首先估計這個分布的均值\(\mu\)和方差\(\sigma\),然后計算\(x_j\)在這個分布中的概率密度\(p(x_j|c_i)\)

例子

下面我們通過經典的西瓜問題來舉個例子。

訓練集如上,我們現在對下面的測試例“測1”進行分類

首先估計類先驗概率\(P(c_i)\),有

\begin{align}
&P(好瓜=是)=\frac{8}{17}=0.471 \newline
&P(好瓜=否)=\frac{9}{17}=0.529
\end{align}

然后,為每個屬性估計條件概率(這里,對於連續屬性,假定它們服從正態分布)

於是,有

\begin{align}
P(&好瓜=是)\times P_{青綠|是} \times P_{蜷縮|是} \times P_{濁響|是} \times P_{清晰|是} \times P_{凹陷|是}\newline
&\times P_{硬滑|是} \times p_{密度:0.697|是} \times p_{含糖:0.460|是} \approx 0.063 \newline\newline
P(&好瓜=否)\times P_{青綠|否} \times P_{蜷縮|否} \times P_{濁響|否} \times P_{清晰|否} \times P_{凹陷|否}\newline
&\times P_{硬滑|否} \times p_{密度:0.697|否} \times p_{含糖:0.460|否} \approx 6.80\times 10^{-5}
\end{align}

由於$0.063>6.80\times 10^{-5} $,因此,朴素貝葉斯分類器將測試樣本“測1”判別為“好瓜”。

更多的問題

這里需要注意的問題,還有

  • 數值下溢問題:多個概率值相乘,得到的結果往往非常小;通常采用取對數的方式,將連乘轉化為連加,以避免數值下溢。

  • 平滑:某些屬性值在訓練集中沒有與某個類同時未出現,如“敲聲=清脆,好瓜=是”,這樣將得到\(P_{清脆|是}=0\);為避免這樣的情況出現,常使用拉普拉斯修正

三、半朴素貝葉斯分類器

朴素貝葉斯采用了“屬性條件獨立性假設”,但這個假設的確是有些草率了。因為往往屬性之間包含着各種依賴。於是,人們嘗試對這個假設進行一定程度的放松,由此產生了“半朴素貝葉斯分類器”(semi-naive Bayes classifiers)的學習方法。

半朴素貝葉斯分類器的基本想法是適當考慮一部分屬性間的相互依賴信息。獨依賴估計(One-Dependent Estimator,簡稱ODE)是半朴素貝葉斯分類器最常用的一種策略。顧名思義,獨依賴是假設每個屬性在類別之外最多依賴一個其他屬性,即

\[P(x|c_i)=\prod_{j=1}^d P(x_j|c_i,{\rm pa}_j). \]

其中,\({\rm pa}_j\)為屬性\(x_i\)所依賴的屬性,稱為\(x_i\)的父屬性。假設父屬性\({\rm pa}_j\)已知,那么可以使用下面的公式估計\(P(x_j|c_i,{\rm pa}_j)\)

\[P(x_j|c_i,{\rm pa}_j)=\frac{P(x_j,c_i,{\rm pa}_j)}{P(c_i,{\rm pa}_j)}. \]

於是,問題的關鍵變成了如何確定每個屬性的父屬性。不同的做法產生了不同的獨依賴分類器。

  • SPODE(Super-Parent ODE)假設所有的屬性都依賴於同一個屬性,稱為超父。

  • TAN(Tree Augmented naive Bayes)則在最大帶權生成樹算法的基礎上發展的一種方法。

  • AODE(Averaged ODE)是一種集成學習的方法,嘗試將每個屬性作為超父來構建SPODE,與隨機森林的方法有所相似。

下面具體描述一下TAN。

TAN

TAN的實施步驟如下:

  1. 計算任意屬性之間的條件互信息$$I(x_i,x_j|y)=\sum_{x_i,x_j;c_k\in Y}P(x_i,x_j|c_k)\log\frac{P(x_i,x_j|c_k)}{P(x_i|c_k)P(x_j|c_k)};$$
  2. 以屬性為節點構建完全圖,節點間的權重設為相應的互信息;
  3. 構建此完全圖的最大帶權生成樹,挑選根變量,將邊置為有向;
  4. 加入類別結點\(y\),增加從\(y\)到每個屬性的有向邊。

容易看出,條件互信息\(I(x_i,x_j|y)\)刻畫了屬性\(x_i\)\(x_j\)在已知類別情況下的相關性。因此,通過最大生成樹算法,TAN實際上僅保留了強相關屬性之間的依賴性。

在這里,我們通過將屬性條件獨立性假設放松為獨立依賴假設,獲得了泛化性能的提升。那么如果更進一步,考慮屬性間的高階依賴,能否可以進一步提升泛化性能呢?也就是說,將\(P(x|c_i)=\prod_{j=1}^d P(x_j|c_i,{\rm pa}_j)\)中的\({\rm pa}_j\)擴展為包含\(k\)個屬性的集合\({\rm\bf{pa}}_j\),從而將ODE拓展為\(k\)DE。需要注意的是,隨着\(k\)的增加,准確地估計概率\(P(x_j|c_i,{\rm\bf{pa}_j})\)所需的訓練樣本數量將以指數級增加。因此,若訓練數據非常充分,泛化性能有可能提升;但在有限樣本的條件下,則會陷入估計高階聯合概率的泥沼。

四、貝葉斯網絡

貝葉斯網絡(Bayesian network)也稱信念網(belief network),它借助有向無環圖(Directd Acyclic Graph,簡稱DAG)來刻畫屬性之間的依賴關系,並使用條件概率表(Conditional Probability Table,簡稱CPT)來描述屬性的聯合概率分布。

具體來說,一個貝葉斯網絡\(B\)由結構\(G\)和參數\(\Theta\)兩部分構成,即\(B=(G,\Theta)\)。網絡結構\(G\)是一個有向無環圖,其中的每一個結點對應一個屬性,若兩個屬性由直接依賴關系,則它們由一條邊連接起來;參數\(\Theta\)則是定量描述這種依賴關系。假設屬性\(x_i\)\(G\)中的父節點集為\(\pi_i\),則\(\Theta\)包含了每個屬性的條件概率表\(\theta_{x_i|\pi_i}=P_{B}(x_i|\pi_i)\)

下面給出了西瓜問題的一種貝葉斯網結構以及屬性“根蒂”的條件概率表。

未完待續...[后面太難,頭昏腦漲]

參考

[1] 周志華. 機器學習[M]. 清華大學出版社, 2016.

本文鏈接:http://www.superzhang.site/blog/classification-based-on-bayesian


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM