天天看點

分類算法-貝葉斯網絡(Bayesian networks)2.1、摘要2.2、重新考慮上一篇的例子2.3、貝葉斯網絡的定義及性質2.4、貝葉斯網絡的構造及學習2.5、貝葉斯網絡的應用及示例

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

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

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

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

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

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

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

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

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

分類算法-貝葉斯網絡(Bayesian networks)2.1、摘要2.2、重新考慮上一篇的例子2.3、貝葉斯網絡的定義及性質2.4、貝葉斯網絡的構造及學習2.5、貝葉斯網絡的應用及示例

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

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

分類算法-貝葉斯網絡(Bayesian networks)2.1、摘要2.2、重新考慮上一篇的例子2.3、貝葉斯網絡的定義及性質2.4、貝葉斯網絡的構造及學習2.5、貝葉斯網絡的應用及示例

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

分類算法-貝葉斯網絡(Bayesian networks)2.1、摘要2.2、重新考慮上一篇的例子2.3、貝葉斯網絡的定義及性質2.4、貝葉斯網絡的構造及學習2.5、貝葉斯網絡的應用及示例

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

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

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

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

      這個性質很類似markov過程。其實,貝葉斯網絡可以看做是markov鍊的非線性擴充。這條特性的重要意義在于明确了貝葉斯網絡可以友善計算聯合機率分布。一般情況先,多變量非獨立聯合條件機率分布有如下求取公式:

分類算法-貝葉斯網絡(Bayesian networks)2.1、摘要2.2、重新考慮上一篇的例子2.3、貝葉斯網絡的定義及性質2.4、貝葉斯網絡的構造及學習2.5、貝葉斯網絡的應用及示例

      而在貝葉斯網絡中,由于存在前述性質,任意随機變量組合的聯合條件機率分布被化簡成

分類算法-貝葉斯網絡(Bayesian networks)2.1、摘要2.2、重新考慮上一篇的例子2.3、貝葉斯網絡的定義及性質2.4、貝葉斯網絡的構造及學習2.5、貝葉斯網絡的應用及示例

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

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

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

      1、确定随機變量間的拓撲關系,形成dag。這一步通常需要領域專家完成,而想要建立一個好的拓撲結構,通常需要不斷疊代和改進才可以。

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

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

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

      還是sns社群中不真實賬号檢測的例子,我們的模型中存在四個随機變量:賬号真實性r,頭像真實性h,日志密度l,好友密度f。其中h,l,f是可以觀察到的值,而我們最關系的r是無法直接觀察的。這個問題就劃歸為通過h,l,f的觀察值對r進行機率推理。推理過程可以如下表示:

      1、使用觀察值執行個體化h,l和f,把随機值賦給r。

      2、計算

分類算法-貝葉斯網絡(Bayesian networks)2.1、摘要2.2、重新考慮上一篇的例子2.3、貝葉斯網絡的定義及性質2.4、貝葉斯網絡的構造及學習2.5、貝葉斯網絡的應用及示例

。其中相應機率值可以查條件機率表。

      由于上述例子隻有一個未知随機變量,是以不用疊代。更一般得,使用貝葉斯網絡進行推理的步驟可如下描述:

      1、對所有可觀察随機變量節點用觀察值執行個體化;對不可觀察節點執行個體化為随機值。

      2、對dag進行周遊,對每一個不可觀察節點y,計算

分類算法-貝葉斯網絡(Bayesian networks)2.1、摘要2.2、重新考慮上一篇的例子2.3、貝葉斯網絡的定義及性質2.4、貝葉斯網絡的構造及學習2.5、貝葉斯網絡的應用及示例

,其中wi表示除y以外的其它所有節點,a為正規化因子,sj表示y的第j個子節點。

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

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

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

繼續閱讀