機器學習之貝葉斯網絡

原文作者:T2噬菌體 署名:張洋 鏈接:http://www.cnblogs.com/leoo2sk/archive/2010/09/18/bayes-network.html

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、將收斂結果作爲推斷值。

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

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