算法杂货铺——分类算法之贝叶斯网络(Bayesian networks)
算法雜貨鋪——分類(lèi)算法之貝葉斯網(wǎng)絡(luò)(Bayesian networks)
2010-09-18 22:50 by T2噬菌體,?66011?閱讀,?25?評(píng)論,?收藏,?編輯2.1、摘要
????? 在上一篇文章中我們討論了樸素貝葉斯分類(lèi)。樸素貝葉斯分類(lèi)有一個(gè)限制條件,就是特征屬性必須有條件獨(dú)立或基本獨(dú)立(實(shí)際上在現(xiàn)實(shí)應(yīng)用中幾乎不可能做到完全獨(dú)立)。當(dāng)這個(gè)條件成立時(shí),樸素貝葉斯分類(lèi)法的準(zhǔn)確率是最高的,但不幸的是,現(xiàn)實(shí)中各個(gè)特征屬性間往往并不條件獨(dú)立,而是具有較強(qiáng)的相關(guān)性,這樣就限制了樸素貝葉斯分類(lèi)的能力。這一篇文章中,我們接著上一篇文章的例子,討論貝葉斯分類(lèi)中更高級(jí)、應(yīng)用范圍更廣的一種算法——貝葉斯網(wǎng)絡(luò)(又稱(chēng)貝葉斯信念網(wǎng)絡(luò)或信念網(wǎng)絡(luò))。
2.2、重新考慮上一篇的例子
????? 上一篇文章我們使用樸素貝葉斯分類(lèi)實(shí)現(xiàn)了SNS社區(qū)中不真實(shí)賬號(hào)的檢測(cè)。在那個(gè)解決方案中,我做了如下假設(shè):
????? i、真實(shí)賬號(hào)比非真實(shí)賬號(hào)平均具有更大的日志密度、各大的好友密度以及更多的使用真實(shí)頭像。
????? ii、日志密度、好友密度和是否使用真實(shí)頭像在賬號(hào)真實(shí)性給定的條件下是獨(dú)立的。
????? 但是,上述第二條假設(shè)很可能并不成立。一般來(lái)說(shuō),好友密度除了與賬號(hào)是否真實(shí)有關(guān),還與是否有真實(shí)頭像有關(guān),因?yàn)檎鎸?shí)的頭像會(huì)吸引更多人加其為好友。因此,我們?yōu)榱双@取更準(zhǔn)確的分類(lèi),可以將假設(shè)修改如下:
????? i、真實(shí)賬號(hào)比非真實(shí)賬號(hào)平均具有更大的日志密度、各大的好友密度以及更多的使用真實(shí)頭像。
????? ii、日志密度與好友密度、日志密度與是否使用真實(shí)頭像在賬號(hào)真實(shí)性給定的條件下是獨(dú)立的。
????? iii、使用真實(shí)頭像的用戶比使用非真實(shí)頭像的用戶平均有更大的好友密度。
????? 上述假設(shè)更接近實(shí)際情況,但問(wèn)題隨之也來(lái)了,由于特征屬性間存在依賴(lài)關(guān)系,使得樸素貝葉斯分類(lèi)不適用了。既然這樣,我去尋找另外的解決方案。
????? 下圖表示特征屬性之間的關(guān)聯(lián):
????? 上圖是一個(gè)有向無(wú)環(huán)圖,其中每個(gè)節(jié)點(diǎn)代表一個(gè)隨機(jī)變量,而弧則表示兩個(gè)隨機(jī)變量之間的聯(lián)系,表示指向結(jié)點(diǎn)影響被指向結(jié)點(diǎn)。不過(guò)僅有這個(gè)圖的話,只能定性給出隨機(jī)變量間的關(guān)系,如果要定量,還需要一些數(shù)據(jù),這些數(shù)據(jù)就是每個(gè)節(jié)點(diǎn)對(duì)其直接前驅(qū)節(jié)點(diǎn)的條件概率,而沒(méi)有前驅(qū)節(jié)點(diǎn)的節(jié)點(diǎn)則使用先驗(yàn)概率表示。
????? 例如,通過(guò)對(duì)訓(xùn)練數(shù)據(jù)集的統(tǒng)計(jì),得到下表(R表示賬號(hào)真實(shí)性,H表示頭像真實(shí)性):
????? 縱向表頭表示條件變量,橫向表頭表示隨機(jī)變量。上表為真實(shí)賬號(hào)和非真實(shí)賬號(hào)的概率,而下表為頭像真實(shí)性對(duì)于賬號(hào)真實(shí)性的概率。這兩張表分別為“賬號(hào)是否真實(shí)”和“頭像是否真實(shí)”的條件概率表。有了這些數(shù)據(jù),不但能順向推斷,還能通過(guò)貝葉斯定理進(jìn)行逆向推斷。例如,現(xiàn)隨機(jī)抽取一個(gè)賬戶,已知其頭像為假,求其賬號(hào)也為假的概率:
??????
????? 也就是說(shuō),在僅知道頭像為假的情況下,有大約35.7%的概率此賬戶也為假。如果覺(jué)得閱讀上述推導(dǎo)有困難,請(qǐng)復(fù)習(xí)概率論中的條件概率、貝葉斯定理及全概率公式。如果給出所有節(jié)點(diǎn)的條件概率表,則可以在觀察值不完備的情況下對(duì)任意隨機(jī)變量進(jìn)行統(tǒng)計(jì)推斷。上述方法就是使用了貝葉斯網(wǎng)絡(luò)。
2.3、貝葉斯網(wǎng)絡(luò)的定義及性質(zhì)
????? 有了上述鋪墊,我們就可以正式定義貝葉斯網(wǎng)絡(luò)了。
??????一個(gè)貝葉斯網(wǎng)絡(luò)定義包括一個(gè)有向無(wú)環(huán)圖(DAG)和一個(gè)條件概率表集合。DAG中每一個(gè)節(jié)點(diǎn)表示一個(gè)隨機(jī)變量,可以是可直接觀測(cè)變量或隱藏變量,而有向邊表示隨機(jī)變量間的條件依賴(lài);條件概率表中的每一個(gè)元素對(duì)應(yīng)DAG中唯一的節(jié)點(diǎn),存儲(chǔ)此節(jié)點(diǎn)對(duì)于其所有直接前驅(qū)節(jié)點(diǎn)的聯(lián)合條件概率。
????? 貝葉斯網(wǎng)絡(luò)有一條極為重要的性質(zhì),就是我們斷言每一個(gè)節(jié)點(diǎn)在其直接前驅(qū)節(jié)點(diǎn)的值制定后,這個(gè)節(jié)點(diǎn)條件獨(dú)立于其所有非直接前驅(qū)前輩節(jié)點(diǎn)。
????? 這個(gè)性質(zhì)很類(lèi)似Markov過(guò)程。其實(shí),貝葉斯網(wǎng)絡(luò)可以看做是Markov鏈的非線性擴(kuò)展。這條特性的重要意義在于明確了貝葉斯網(wǎng)絡(luò)可以方便計(jì)算聯(lián)合概率分布。一般情況先,多變量非獨(dú)立聯(lián)合條件概率分布有如下求取公式:
??????
????? 而在貝葉斯網(wǎng)絡(luò)中,由于存在前述性質(zhì),任意隨機(jī)變量組合的聯(lián)合條件概率分布被化簡(jiǎn)成
??????
????? 其中Parents表示xi的直接前驅(qū)節(jié)點(diǎn)的聯(lián)合,概率值可以從相應(yīng)條件概率表中查到。
????? 貝葉斯網(wǎng)絡(luò)比樸素貝葉斯更復(fù)雜,而想構(gòu)造和訓(xùn)練出一個(gè)好的貝葉斯網(wǎng)絡(luò)更是異常艱難。但是貝葉斯網(wǎng)絡(luò)是模擬人的認(rèn)知思維推理模式,用一組條件概率函數(shù)以及有向無(wú)環(huán)圖對(duì)不確定性的因果推理關(guān)系建模,因此其具有更高的實(shí)用價(jià)值。
2.4、貝葉斯網(wǎng)絡(luò)的構(gòu)造及學(xué)習(xí)
????? 構(gòu)造與訓(xùn)練貝葉斯網(wǎng)絡(luò)分為以下兩步:
????? 1、確定隨機(jī)變量間的拓?fù)潢P(guān)系,形成DAG。這一步通常需要領(lǐng)域?qū)<彝瓿?#xff0c;而想要建立一個(gè)好的拓?fù)浣Y(jié)構(gòu),通常需要不斷迭代和改進(jìn)才可以。
????? 2、訓(xùn)練貝葉斯網(wǎng)絡(luò)。這一步也就是要完成條件概率表的構(gòu)造,如果每個(gè)隨機(jī)變量的值都是可以直接觀察的,像我們上面的例子,那么這一步的訓(xùn)練是直觀的,方法類(lèi)似于樸素貝葉斯分類(lèi)。但是通常貝葉斯網(wǎng)絡(luò)的中存在隱藏變量節(jié)點(diǎn),那么訓(xùn)練方法就是比較復(fù)雜,例如使用梯度下降法。由于這些內(nèi)容過(guò)于晦澀以及牽扯到較深入的數(shù)學(xué)知識(shí),在此不再贅述,有興趣的朋友可以查閱相關(guān)文獻(xiàn)。
2.5、貝葉斯網(wǎng)絡(luò)的應(yīng)用及示例
????? 貝葉斯網(wǎng)絡(luò)作為一種不確定性的因果推理模型,其應(yīng)用范圍非常廣,在醫(yī)療診斷、信息檢索、電子技術(shù)與工業(yè)工程等諸多方面發(fā)揮重要作用,而與其相關(guān)的一些問(wèn)題也是近來(lái)的熱點(diǎn)研究課題。例如,Google就在諸多服務(wù)中使用了貝葉斯網(wǎng)絡(luò)。
????? 就使用方法來(lái)說(shuō),貝葉斯網(wǎng)絡(luò)主要用于概率推理及決策,具體來(lái)說(shuō),就是在信息不完備的情況下通過(guò)可以觀察隨機(jī)變量推斷不可觀察的隨機(jī)變量,并且不可觀察隨機(jī)變量可以多于以一個(gè),一般初期將不可觀察變量置為隨機(jī)值,然后進(jìn)行概率推理。下面舉一個(gè)例子。
????? 還是SNS社區(qū)中不真實(shí)賬號(hào)檢測(cè)的例子,我們的模型中存在四個(gè)隨機(jī)變量:賬號(hào)真實(shí)性R,頭像真實(shí)性H,日志密度L,好友密度F。其中H,L,F是可以觀察到的值,而我們最關(guān)系的R是無(wú)法直接觀察的。這個(gè)問(wèn)題就劃歸為通過(guò)H,L,F的觀察值對(duì)R進(jìn)行概率推理。推理過(guò)程可以如下表示:
????? 1、使用觀察值實(shí)例化H,L和F,把隨機(jī)值賦給R。
????? 2、計(jì)算。其中相應(yīng)概率值可以查條件概率表。
????? 由于上述例子只有一個(gè)未知隨機(jī)變量,所以不用迭代。更一般得,使用貝葉斯網(wǎng)絡(luò)進(jìn)行推理的步驟可如下描述:
????? 1、對(duì)所有可觀察隨機(jī)變量節(jié)點(diǎn)用觀察值實(shí)例化;對(duì)不可觀察節(jié)點(diǎn)實(shí)例化為隨機(jī)值。
????? 2、對(duì)DAG進(jìn)行遍歷,對(duì)每一個(gè)不可觀察節(jié)點(diǎn)y,計(jì)算,其中wi表示除y以外的其它所有節(jié)點(diǎn),a為正規(guī)化因子,sj表示y的第j個(gè)子節(jié)點(diǎn)。
????? 3、使用第三步計(jì)算出的各個(gè)y作為未知節(jié)點(diǎn)的新值進(jìn)行實(shí)例化,重復(fù)第二步,直到結(jié)果充分收斂。
????? 4、將收斂結(jié)果作為推斷值。
????? 以上只是貝葉斯網(wǎng)絡(luò)推理的算法之一,另外還有其它算法,這里不再詳述。
總結(jié)
以上是生活随笔為你收集整理的算法杂货铺——分类算法之贝叶斯网络(Bayesian networks)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 应该怎样学数据结构
- 下一篇: 算法杂货铺——k均值聚类(K-means