演算法雜貨鋪:分類演算法之貝葉斯網路(Bayesian networks)

發表於2015-04-28

2.1、摘要

在上一篇文章中我們討論了樸素貝葉斯分類。樸素貝葉斯分類有一個限制條件,就是特徵屬性必須有條件獨立或基本獨立(實際上在現實應用中幾乎不可能做到完全獨立)。當這個條件成立時,樸素貝葉斯分類法的準確率是最高的,但不幸的是,現實中各個特徵屬性間往往並不條件獨立,而是具有較強的相關性,這樣就限制了樸素貝葉斯分類的能力。這一篇文章中,我們接著上一篇文章的例子,討論貝葉斯分類中更高階、應用範圍更廣的一種演算法——貝葉斯網路(又稱貝葉斯信念網路或信念網路)。

2.2、重新考慮上一篇的例子

上一篇文章我們使用樸素貝葉斯分類實現了SNS社群中不真實賬號的檢測。在那個解決方案中,我做了如下假設:

i、真實賬號比非真實賬號平均具有更大的日誌密度、各大的好友密度以及更多的使用真實頭像。

ii、日誌密度、好友密度和是否使用真實頭像在賬號真實性給定的條件下是獨立的。

但是,上述第二條假設很可能並不成立。一般來說,好友密度除了與賬號是否真實有關,還與是否有真實頭像有關,因為真實的頭像會吸引更多人加其為好友。因此,我們為了獲取更準確的分類,可以將假設修改如下:

i、真實賬號比非真實賬號平均具有更大的日誌密度、各大的好友密度以及更多的使用真實頭像。

ii、日誌密度與好友密度、日誌密度與是否使用真實頭像在賬號真實性給定的條件下是獨立的。

iii、使用真實頭像的使用者比使用非真實頭像的使用者平均有更大的好友密度。

上述假設更接近實際情況,但問題隨之也來了,由於特徵屬性間存在依賴關係,使得樸素貝葉斯分類不適用了。既然這樣,我去尋找另外的解決方案。

下圖表示特徵屬性之間的關聯:

上圖是一個有向無環圖,其中每個節點代表一個隨機變數,而弧則表示兩個隨機變數之間的聯絡,表示指向結點影響被指向結點。不過僅有這個圖的話,只能定性給出隨機變數間的關係,如果要定量,還需要一些資料,這些資料就是每個節點對其直接前驅節點的條件概率,而沒有前驅節點的節點則使用先驗概率表示。

例如,通過對訓練資料集的統計,得到下表(R表示賬號真實性,H表示頭像真實性):

縱向表頭表示條件變數,橫向表頭表示隨機變數。上表為真實賬號和非真實賬號的概率,而下表為頭像真實性對於賬號真實性的概率。這兩張表分別為“賬號是否真實”和“頭像是否真實”的條件概率表。有了這些資料,不但能順向推斷,還能通過貝葉斯定理進行逆向推斷。例如,現隨機抽取一個賬戶,已知其頭像為假,求其賬號也為假的概率:

也就是說,在僅知道頭像為假的情況下,有大約35.7%的概率此賬戶也為假。如果覺得閱讀上述推導有困難,請複習概率論中的條件概率、貝葉斯定理及全概率公式。如果給出所有節點的條件概率表,則可以在觀察值不完備的情況下對任意隨機變數進行統計推斷。上述方法就是使用了貝葉斯網路。

2.3、貝葉斯網路的定義及性質

有了上述鋪墊,我們就可以正式定義貝葉斯網路了。

一個貝葉斯網路定義包括一個有向無環圖(DAG)和一個條件概率表集合。DAG中每一個節點表示一個隨機變數,可以是可直接觀測變數或隱藏變數,而有向邊表示隨機變數間的條件依賴;條件概率表中的每一個元素對應DAG中唯一的節點,儲存此節點對於其所有直接前驅節點的聯合條件概率。

貝葉斯網路有一條極為重要的性質,就是我們斷言每一個節點在其直接前驅節點的值制定後,這個節點條件獨立於其所有非直接前驅前輩節點。

這個性質很類似Markov過程。其實,貝葉斯網路可以看做是Markov鏈的非線性擴充套件。這條特性的重要意義在於明確了貝葉斯網路可以方便計算聯合概率分佈。一般情況先,多變數非獨立聯合條件概率分佈有如下求取公式:

而在貝葉斯網路中,由於存在前述性質,任意隨機變數組合的聯合條件概率分佈被化簡成

其中Parents表示xi的直接前驅節點的聯合,概率值可以從相應條件概率表中查到。

貝葉斯網路比樸素貝葉斯更復雜,而想構造和訓練出一個好的貝葉斯網路更是異常艱難。但是貝葉斯網路是模擬人的認知思維推理模式,用一組條件概率函式以及有向無環圖對不確定性的因果推理關係建模,因此其具有更高的實用價值。

2.4、貝葉斯網路的構造及學習

構造與訓練貝葉斯網路分為以下兩步:

1、確定隨機變數間的拓撲關係,形成DAG。這一步通常需要領域專家完成,而想要建立一個好的拓撲結構,通常需要不斷迭代和改進才可以。

2、訓練貝葉斯網路。這一步也就是要完成條件概率表的構造,如果每個隨機變數的值都是可以直接觀察的,像我們上面的例子,那麼這一步的訓練是直觀的,方法類似於樸素貝葉斯分類。但是通常貝葉斯網路的中存在隱藏變數節點,那麼訓練方法就是比較複雜,例如使用梯度下降法。由於這些內容過於晦澀以及牽扯到較深入的數學知識,在此不再贅述,有興趣的朋友可以查閱相關文獻。

2.5、貝葉斯網路的應用及示例

貝葉斯網路作為一種不確定性的因果推理模型,其應用範圍非常廣,在醫療診斷、資訊檢索、電子技術與工業工程等諸多方面發揮重要作用,而與其相關的一些問題也是近來的熱點研究課題。例如,Google就在諸多服務中使用了貝葉斯網路。

就使用方法來說,貝葉斯網路主要用於概率推理及決策,具體來說,就是在資訊不完備的情況下通過可以觀察隨機變數推斷不可觀察的隨機變數,並且不可觀察隨機變數可以多於以一個,一般初期將不可觀察變數置為隨機值,然後進行概率推理。下面舉一個例子。

還是SNS社群中不真實賬號檢測的例子,我們的模型中存在四個隨機變數:賬號真實性R,頭像真實性H,日誌密度L,好友密度F。其中H,L,F是可以觀察到的值,而我們最關係的R是無法直接觀察的。這個問題就劃歸為通過H,L,F的觀察值對R進行概率推理。推理過程可以如下表示:

1、使用觀察值例項化H,L和F,把隨機值賦給R。

2、計算。其中相應概率值可以查條件概率表。

由於上述例子只有一個未知隨機變數,所以不用迭代。更一般得,使用貝葉斯網路進行推理的步驟可如下描述:

      1、對所有可觀察隨機變數節點用觀察值例項化;對不可觀察節點例項化為隨機值。

      2、對DAG進行遍歷,對每一個不可觀察節點y,計算,其中wi表示除y以外的其它所有節點,a為正規化因子,sj表示y的第j個子節點。

      3、使用第三步計算出的各個y作為未知節點的新值進行例項化,重複第二步,直到結果充分收斂。

      4、將收斂結果作為推斷值。

以上只是貝葉斯網路推理的演算法之一,另外還有其它演算法,這裡不再詳述。

相關文章