機器學習筆記(七)貝葉斯分類器

fjssharpsword發表於2017-03-03

7.貝葉斯分類器

7.1貝葉斯決策論

貝葉斯決策論(Bayesiandecision theory)是概率框架下實施決策的基本方法。對分類任務來說,在所有相關概率都已知的理想情形下,貝葉斯決策論考慮如何基於這些概率和誤判損失來選擇最優的類別標記。這其實是關係到兩個基本概念:多大可能是這個類別以及可能誤判的損失?機器學習就是從中選擇誤判損失最小的最大概率類別作為其分類標識。



回顧下貝葉斯模型的數學推論過程,首先是要保證貝葉斯分類器產生的總體誤判損失是最小的,而要得到最小,關鍵就是從中選擇後驗概率最大的類別標記。顯然,基於貝葉斯準則來最小化鞠策風險,現在第一就是要獲得後驗概率P(c|x),故此機器學習的主要任務就是基於有限的訓練樣本集儘可能準確地估計出後驗概率P(c|x)。

對於後驗概率的估計,大體有兩種策略:1)判別式模型(discriminative models):給定x,通過直接建模P(c|x)來預測c,決策樹、BP神經網路、支援向量機等都顯然屬於該範疇,預設模型並通過樣本集訓練出引數進而再優化;2)生成式模型(generative models):先對聯合概率分佈P(x,c)建模,然後再由此獲得P(c|x)。

貝葉斯分類器就是基於條件概率而開展:P(c|x)= P(x,c)/P(x),基於貝葉斯定理,P(c|x)=P(c)P(x|c)/P(x),其中P(c)是類先驗(prior)概率;P(x|c)是樣本x相對於類標記c的類條件概率(class-conditional probability),或稱為似然(likelihood);P(x)是用於歸一化的證據因子。對給定樣本,證據因子P(x)與類標記無關,因此估計P(c|x)的問題就轉化為如何基於訓練集D來估計先驗P(c)和似然(條件)P(x|c)。

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

P(x|c)的訓練:類條件概率P(x|c),涉及到關於x所有屬性的聯合概率,直接根據樣本出現的頻率來估計有困難。例如,假設樣本的d個屬性都是二值的,則樣本空間將有2d中可能的取值,在現實應用中,這個值往往大於訓練樣本數m,也就是說,很多樣本的取值在訓練集中根本沒有出現,直接使用頻率來估計P(x|c)顯然不可行,因為“未被觀測到”和“出現概率為零”通常是不同的。那怎麼求解呢?極大似然估計來也。

7.2極大似然估計

既然無法直接通過頻率來估計,那麼估計類條件概率的策略可以這樣:先假定其具有某種確定的概率分佈形式,再基於訓練樣本對概率分佈的引數進行估計。



這種引數化的方法雖然能使條件概率估計變得相對簡單,但估計結果的準確性依賴於所假設的概率分佈形式是否符合潛在的真實資料分佈。在現實應用中,要做出能較好地接近潛在真實分佈的假設,往往需要在一定程度上利用關於應用任務本身的經驗知識,否則若僅憑猜測來假設概率分佈形式,很可能產生誤導性結果。既然是似然,經驗自然是重要的。

7.3樸素貝葉斯分類器

上文可知,基於貝葉斯公式P(c|x)=P(c)P(x|c)/ P(x)來估計後驗概率P(c|x)的困難是:類條件概率P(x|c)是所有屬性的聯合概率,難以從有限的訓練樣本直接估計而得。為解決該問題,樸素貝葉斯分類器(naïve bayes classifer)採用了屬性條件獨立性假設(attributeconditional independence assumption),對已知類別,假設所有屬性相互獨立。換言之,假設每個屬性獨立地對分類結果發生影響。


文中的西瓜集例子,可以很好地理解上面的求解,重點是計算樣本集中不同屬性的類別數。可參考CSDN部落格http://blog.csdn.net/fjssharpsword/article/details/53021776來理解。


如此,通過拉普拉斯修正避免了因訓練集樣本不充分而導致概率估值為零的問題,並且在訓練集變大時,修正過程所引入的先驗(Prior)的影響也會逐漸變得可忽略,使得估值趨向於實際概率值。

在現實任務中樸素貝葉斯分類器有很多種使用方式。例如,若任務對預測速度要求較高,則對給定訓練集,可將樸素貝葉斯分類器涉及的所有概率估值事先計算好儲存起來,這樣在進行預測時只需查表即可進行判別;若任務資料更替頻繁,則可採用懶惰學習(lazy learning)方式,先不進行任何訓練,待收到預測請求時再根據當前資料集進行概率估值;若資料不斷增加,則可在現有估值基礎上,僅對新增樣本的屬性值所涉及的概率估值進行計數修正即可實現增量學習。懶惰學習和增量學習的思維,其實也是貫穿一種分治策略。   

7.4半樸素貝葉斯分類器

為解決貝葉斯公式中估計後驗概率P(c|x)中類條件概率P(x|c)估計的困難,樸素貝葉斯分類器假設屬性條件獨立性,但在現實任務中這個假設並不總能成立。為此,在屬性條件獨立假設基礎上,進一步考慮屬性間的關係,提出半樸素貝葉斯分類器(semi-naïve bayes classifier)的學習方法。

半樸素貝葉斯分類器的基本想法是適當考慮一部分屬性間的相互依賴資訊,從而既不需進行聯合概率完全計算,又不至於徹底忽略了比較強的屬性依賴關係。獨依賴估計(one-dependent estimator,ode)是半樸素貝葉斯分類器最常用的一種策略。所謂獨依賴,就是假設每個屬性在類別之外最多僅依賴一個其他屬性,即:



 

7.5貝葉斯網

屬性之間的依賴關係,可通過貝葉斯網(bayesian network)也稱信念(belief network)網來刻畫,其藉助有向無環圖(Directed Acyclic Graph,DAG)並使用條件概率表(ConditionalProbability Table,CPT)來描述屬性的聯合概率分佈。假定所有屬性均為離散型,對於連續屬性,條件概率表可推廣為條件概率密度函式。

具體來說,一個貝葉斯網B由結構G和引數Θ兩部分構成,即B=<G,Θ>。網路結構G是一個有向無環圖,其每個結點對應一個屬性,若兩個屬性有直接依賴關係,則它們由一條邊連線起來;引數Θ定量描述了這種依賴關係。假設屬性xi在G中的父結點集為πi,則Θ包含了每個屬性的條件概率表:Θxi|πi=PB(xi|πi)。文中有圖和表分別展示G和B。


2)學習

若貝葉斯網結構已知,即屬性間的依賴關係已知,按照上文定義,只需通過對訓練樣本計數,估計出每個結點的條件概率表即可。但現實應用中並不知曉網路結構,因此,貝葉斯網學習的首要任務是根據訓練資料集來找出結構最恰當的貝葉斯網。評分搜尋是求解這一問題的常用辦法,具體來說,先定義一個評分函式(score function),以此來評估貝葉斯網與訓練資料的契合度,然後基於這個評分函式來尋找結構最優的貝葉斯網。評分函式定義了獲得怎樣貝葉斯網的歸納偏好。

要找結構,先定義評分函式,然後基於評分函式找最優結構。常用評分函式通常基於資訊理論準則,此類準則將學習問題看作一個資料壓縮任務,學習的目標是找到一個能以最短編碼長度描述訓練資料的模型,此時編碼的長度包括了描述自身需要的位元組長度和使用該模型描述資料所需的位元組長度。對貝葉斯網學習而言,模型就是一個貝葉斯網,同時,每個貝葉斯網描述了一個在訓練資料上的概率分佈,自由一套編碼機制能使那些經常出現的樣本有更短的編碼。於是,應該選擇那個綜合編碼長度(包括描述網路和編碼資料)最短的貝葉斯網,這就是最小描述長度(minimal description length,MDL)準則。

給定訓練集D={x1,x2,…,xn},貝葉斯網B=<G, Θ>在D上的評分函式為:


然而,從所有可能的網路結構空間搜尋(屬性數d的規模決定)最優貝葉斯網結構是一個NP問題,難以快速求解。有兩種常用的策略能在有限時間內求得近似解:

第一種貪心法,從某個網路結構出發,每次調整一條邊(增、刪、改方向),直到評分函式不再降低為止;

第二種通過給網路結構施加約束來削減搜尋空間,如將網路結構限定為樹形結構等,模型要理想才能計算出,現實是複雜的。

3)推斷

貝葉斯網路訓練好之後就能用來回答查詢(query),即通過一些屬性變數的觀測值來推測其他屬性變數的取值。通過已知變數觀測值來推測待查詢變數的過程稱為推斷(inference),已知變數觀測值稱為證據(evidence)。輸入證據,通過模型推斷出結論。

最理想的是直接根據貝葉斯網定義的聯合概率分佈來精確計算後驗概率;然而,這樣的精確推斷已被證明是NP難得。換言之,當網路結點較多,連線稠密時,難以精確推斷,需藉助近似推斷,通過降低精度要求,在有限時間內求得近似解。在現實應用中,貝葉斯網的近似推斷常採用吉布斯取樣演算法(Gibbs sampling)來完成,這是一種隨機採用的方法,下面說明該演算法。

問題:令Q={Q1,Q2,…,Qn}表示待查詢變數,E={E1,E2,…,Ek}為證據變數,已知其取值為e={e1,e2,…,ek}。目標是計算後驗概率P(Q=q|E=e),其中q={q1,q2,…,qn}是待查詢變數的一組取值。

解答:

先隨機產生一個和證據E=e一致的樣本q0作為初始點,然後每步從當前樣本出發產生下一個樣本。具體來說,在第t次取樣中,演算法先假設qt= qt-1,然後對非證據變數逐個進行取樣改變其取值,取樣概率根據貝葉斯網B和其他變數的當前取值(即Z=z)計算獲得。


吉布斯取樣是在貝葉斯網所有變數的聯合狀態空間與證據E=e一致的子空間中進行隨機漫步(random walk)。每一步僅依賴前一步的狀態,這是一個馬爾可夫鏈(Markov chain)。在一定條件下,無論從什麼初始狀態開始,馬爾可夫鏈第t步的狀態分佈在t->∞時必收斂於一個平穩分佈(stationary distribution);對於吉布斯取樣來說,這個分佈恰好就是P(Q|E=e)。因此,在T很大時,吉布斯取樣相當於根據P(Q|E=e)取樣,從而保證收斂於P(Q=q|E=e)。

值得注意的是,由於馬爾可夫鏈通常需要很長時間才能趨於平穩分佈,因此吉布斯取樣演算法的收斂速度較慢。此外,若貝葉斯網中存在極端概率0或1,則不能保證馬爾可夫鏈存在平穩分佈,此時吉布斯取樣會給出錯誤的估計結果。

 

7.6EM演算法

上文的假設是訓練樣本所有屬性變數的值都已被觀測到,即訓練樣本是完整的。但在現實應用中往往會遇到不完整的訓練樣本,即訓練樣本的屬性變數值未知。問題是在這種存在未觀測變數的情形下,是否仍能對模型引數進行估計呢?

未觀測變數也稱為隱變數(latent variable)。令X表示已觀測變數集,Z表示隱變數集,Θ表示模型引數。若欲對Θ作極大似然估計,則應最大化對數似然:LL(Θ|X,Z)=ln P(X,Z|Θ)。不過Z是隱變數,無法直接求解,可通過對Z計算期望,來最大化已觀測資料的對數邊際似然(marginal likelihood):


簡單來說,EM演算法使用兩個步驟交替計算:第一步是期望E步,利用當前估計的引數值來計算對數似然的期望值;第二步是最大化M步,尋找能使E步產生的似然期望最大化的引數值。然後新得到的引數值重新被用於E步,…,直至收斂到區域性最優解。

EM演算法可以看作用座標下降法(coordinate descent)來最大化對數似然下界的過程。事實上,隱變數估計問題也可通過梯度下降等優化演算法求解,但由於求和的項數將隨著隱變數的數目以指數級上升,會給梯度計算帶來麻煩。而EM演算法則可看作一種非梯度優化方法。

座標下降法是一種非梯度優化方法,在每步迭代中沿一個座標方向進行搜尋,通過迴圈使用不同的座標方向來達到目標函式的區域性極小值。


相關文章