貝葉斯分類器與貝葉斯網路之間的關係

ThinkAnny發表於2016-12-19

貝葉斯分類器是一種基於貝葉斯公式的分類器,是一種基於統計的分類器,它計算在某一特徵向量的前提下,各種分類可能出現的概率.把概率最大的那個類當作最終的分類結果.貝葉斯分類器分為2種:樸素貝葉斯分類器,貝葉斯網路.

這篇博克簡單介紹下這兩種分類器原理.

樸素貝葉斯分類器

貝葉斯公式如下

D0A402C92B3967E0AB4B53B70C2CB05E4D4BDF06

其中X代表特徵向量, C代表分類.我們的目標就是找出使得這個後驗概率最大的那個類.

5F141A1320298BA11E97D7D7180972EFF9C2DA08

其中需要注意的是X中的各個特徵分量是分佈獨立的.這樣就有:

E86BBD5BDC7FE8574F2B18032862D0A50B9C184C

9DEC73BEBD5ACA6224E6EE3876CCBD74F4336050

這些概率都可以從樣本中很快統計出來,從而很容易計算出結果。

樸素貝葉斯分類器一個很經典的應用就是用來進行垃圾郵件過濾。每一封郵件都包含了一系列特徵詞,這些特徵詞就構成特徵向量X.我們只需要計算在該特徵向量出現的前提下此郵件為垃圾郵件的概率就可以進行判別了。

實際上演算法的基礎就是詞頻的計算,這個可是mapreduce這種框架的強項啊。兩輪MR之後就可以得出結果。

貝葉斯網路

樸素貝葉斯分類器工作必須有一個前提假設,特徵屬性之間的關係必須是獨立的,只有在這個假設前提下,樸素貝葉斯分類器才能工作的比較好。但是在現實世界中,這種假設並不成立。所以另一種演算法就被提出-貝葉斯網路。

貝葉斯網路的定義並不複雜,一個貝葉斯網路就是一個有向無環圖,圖中的每一個節點代表著一個隨機變數(可以理解為樣本的特徵屬性),對應著每一個節點貝葉斯網路還有一張條件概率表(CPT)。CPT表明了子節點對父節點的條件概率,也就是FE956615B6B83751277E5CD07CA60D20A2B43386。對於沒有父子關係的節點們,他們之間是相互獨立的。所以就有:

431F0FAC1F5282C3834D3A0C25E537C18897E4E1

這個需要注意的是,如果求得是部分變數的聯合概率分佈,那麼就必須基於上述公式進行一個全概率公式的變換,例子:

2A0CD910F8499CC8BDF52608005414FBE84D8408

如果所有的屬性的父節點都是X1(當然除了自己),那麼上述公式就有:

C628A2C510750B5765465427BBF8CBDC5E3BCFCD

這麼說可能比較晦澀,舉個例子畫個圖:

C628F1784D015BB36C0771C8AB7C132966C26D78

貝葉斯網路中有些變數(節點)是可以被直接觀測得到的,這些變數是可以在資料集中體現出來的,這些變數可以稱之為觀察變數.而有些變數是無法直接觀測到,無法直接在資料集中體現的,這些變數稱之為隱性變數.這個應該很好理解,舉個例子,假如在醫院的所有的醫療記錄中,只存在三個變數,高血壓,肥胖,急性腸炎.肥胖可以導致高血壓,它是高血壓的父節點,這很明顯,但我們不能只考慮這三個變數構成的網路.因為急性腸炎可能導致抵抗力下降,抵抗力下降也會導致高血壓.(好牽強的例子,大家忍忍吧,實在是醫學知識匱乏).儘管醫院的記錄中並不包含任何營養不良的醫療記錄,但是它確實是高血壓的一個可能原因,我們需要把它作為一個變數在貝葉斯網路中考慮進來,這樣的變數就是隱藏變數,我覺叫間接變數可能更好。

1)貝葉斯網路推理

貝葉斯網路一旦購建好,我們就可以計算在給定一些變數的情況下,查詢處任意變數組合的概率,這被稱之為貝葉斯網路推理,也是貝葉斯網路的應用之所在.貝葉斯網路推理演算法現在已知是一個N-P問題.下面就簡單分析一下如何來推理[例子來源於文獻4]

C99BE606343ED6F15D7A3D442F52B5DE582C188D

上圖是一個簡單的貝葉斯網路,h1,h2隱藏變數,o1,o2是可觀測變數,所有這些變數要麼是0,要麼是1。我們推理的目的就是在給定其它變數的觀測值時推理出某些變數目標(也許是隱藏變數)的值的概率分佈。本例中,就有

693D5F59AEE0AC6F8115EFD45C682D7CEA22CFF7

根據最後的推導結果,就可以根據CPT得出最後的概率分佈.

注意P(o1,o2)的推導,全概率公式.

當然這是最直接的演算法,演算法複雜度較高,現在比較常用的實際上是連線樹演算法,介面演算法等等,有很多這方面的論文討論這個.

2)貝葉斯網路的構造

上面談到了貝葉斯網路的使用,這裡再討論一下貝葉斯網路的構造.貝葉斯網路的構造需要構造兩個方面,一個是拓撲結構,另外一個是CPT.

拓撲結構的構造有兩種方法:

第一藉助於領域專家幫忙構造,由該領域專家來設計網路拓撲結構.

第二通過演算法來構造,比如基於結構空間的貪婪搜尋等等.有興趣請參考相關論文

CPT的構造需要通過樣本學習來構造,下面就簡單介紹一下梯度下降演算法構造CPT.

先有下面的定義:

C85DB484E43C4825105F005447E4848406B681DE

5871866E2447A8CF1EF3A120B6ADFBD65F6FD9F9代表CPT中的一個專案,表示的概率是在給定它的父親們等於它的第K個可能的值(可能是一種組合)時, 取它的第j個值的概率.舉個例子來說,對於上面的例圖Fingure 6.11,對於LC的CPT,如果LungerCancer是第三個特徵屬性6175D62CF05599DD238481ADD92B4D7A94B82C0C,CPT就有下面的對應:

C39F647F917DF1F7846F18B0F5E60E2C0EC4636B

為了構造CPT,我們需要有樣本集D,包含了m個樣本,每個樣本完備得包含了所有特徵屬性.

我們的目的就是最大化C34D2B8E0586AF0591F5E5434D8E3CC7C06831DF,也就是最大化在目前CPT的條件概率下,出現當前D樣本分佈的概率.那麼我們的目標就變成了求函式的最優解問題.於是考慮使用梯度下降法(也就是所謂的爬山).我們想象一個等高圖模型,我們為了求該登高模型的最大值,我們該怎麼做呢?一個很自然的想法就是我們先隨便在山上找一個點,然後找到點的梯度,沿著梯度方向我們前進一個固定步長,然後繼續求梯度,繼續再沿著梯度方向前進一個固定步長,然後一直迴圈.那麼什麼時候結束呢?兩種情況下:

第一到了某一點梯度發現已經為0.那就證明該點已經到了最高值

第二在沿著該點的梯度方向前進了步長之後,發現高度沒有發生明顯的變化,這個變化很小,小於一個既定的閾值.那麼我們也認為找到了區域性最高值.

這種方法可以求到區域性最優解,但無法確保得到全域性最優解。

把這種方法用到求2FE43CE9D44D8F0C1B20AD4308F890C21EC5F0CB的區域性最優解上,就有如下演算法:

第一 隨機CPT表中的條目

第二 求B44F5C817C829294D9F787946B69F32F17AAF481在w初始值時的梯度,由於D是一個資料樣本集和,所以該梯度可以分解為每一個樣本在w初始值時的梯度之和.經過一系列概率公式變化(參見文獻二),就可以得到如下公式:

6237C7FCA0B5558B383D1B95F4E59DBC39E1FE4C

所以樣本的梯度值就很容易求出來了,注意上面公式的最後結果分子不是1,就是0.因為針對某一個樣本,變數和其父親出現某種分佈的概率要麼是0,要麼是100%.有了上述公式,我們針對貝葉斯網路的所有CPT條目都呼叫上述公式,就可以得到每個條目在某個樣本下的梯度.對樣本集合中的每個樣本我們都經過上面的計算,樣本集合D中每個CPT條目的梯度是所有樣本梯度的和.把所有條目的梯度組合在一起,就是整個0AF420178EE3DDA80A56D72C49A410AFF4C3F524的梯度.注意這裡的D11ECF801DEC4D10C73588FEDD4312C82FC6B3FE的梯度不是一個值,而是一個所有CPT條目的分佈.

第三 由於0296E8FF00D93D34A2C2EBB2699D8556783CB62F需要有一定的約束條件 12406517388BF850B99BED8E92FE56D4788FF20C
所以CPT條目的分佈,也就是FCD1165A036939FB1B0F57B1336864D46397F52B的分佈需要投射到一個平面上,因此需要一個平面投射轉化成 0F5DE59B3C97DCA59A7C144DD941C383317E27ED

第四 根據28C9044DBCAF2C90C5B1125AFD7FE20100FA01D8,按照一定的步長來更新所有的 204E0FC09796552E487D815C4DD9630EA3235182

第五 繼續迭代至 1CBF45A7BBDB9E060D1EDC0AB5F96EE2AC9EC80D=0或小於固定閾值

具體演算法參加下圖

FA8E85818C0BD8DF29E90162CAAEF41EA5351190

貝葉斯網路的一個應用場景就是專家故障診斷系統,用來評估在故障出現的情況下各種故障原因的概率分佈.

相關文章