貝葉斯分類器與貝葉斯網路之間的關係
貝葉斯分類器是一種基於貝葉斯公式的分類器,是一種基於統計的分類器,它計算在某一特徵向量的前提下,各種分類可能出現的概率.把概率最大的那個類當作最終的分類結果.貝葉斯分類器分為2種:樸素貝葉斯分類器,貝葉斯網路.
這篇博克簡單介紹下這兩種分類器原理.
樸素貝葉斯分類器
貝葉斯公式如下
其中X代表特徵向量, C代表分類.我們的目標就是找出使得這個後驗概率最大的那個類.
其中需要注意的是X中的各個特徵分量是分佈獨立的.這樣就有:
這些概率都可以從樣本中很快統計出來,從而很容易計算出結果。
樸素貝葉斯分類器一個很經典的應用就是用來進行垃圾郵件過濾。每一封郵件都包含了一系列特徵詞,這些特徵詞就構成特徵向量X.我們只需要計算在該特徵向量出現的前提下此郵件為垃圾郵件的概率就可以進行判別了。
實際上演算法的基礎就是詞頻的計算,這個可是mapreduce這種框架的強項啊。兩輪MR之後就可以得出結果。
貝葉斯網路
樸素貝葉斯分類器工作必須有一個前提假設,特徵屬性之間的關係必須是獨立的,只有在這個假設前提下,樸素貝葉斯分類器才能工作的比較好。但是在現實世界中,這種假設並不成立。所以另一種演算法就被提出-貝葉斯網路。
貝葉斯網路的定義並不複雜,一個貝葉斯網路就是一個有向無環圖,圖中的每一個節點代表著一個隨機變數(可以理解為樣本的特徵屬性),對應著每一個節點貝葉斯網路還有一張條件概率表(CPT)。CPT表明了子節點對父節點的條件概率,也就是。對於沒有父子關係的節點們,他們之間是相互獨立的。所以就有:
這個需要注意的是,如果求得是部分變數的聯合概率分佈,那麼就必須基於上述公式進行一個全概率公式的變換,例子:
如果所有的屬性的父節點都是X1(當然除了自己),那麼上述公式就有:
這麼說可能比較晦澀,舉個例子畫個圖:
貝葉斯網路中有些變數(節點)是可以被直接觀測得到的,這些變數是可以在資料集中體現出來的,這些變數可以稱之為觀察變數.而有些變數是無法直接觀測到,無法直接在資料集中體現的,這些變數稱之為隱性變數.這個應該很好理解,舉個例子,假如在醫院的所有的醫療記錄中,只存在三個變數,高血壓,肥胖,急性腸炎.肥胖可以導致高血壓,它是高血壓的父節點,這很明顯,但我們不能只考慮這三個變數構成的網路.因為急性腸炎可能導致抵抗力下降,抵抗力下降也會導致高血壓.(好牽強的例子,大家忍忍吧,實在是醫學知識匱乏).儘管醫院的記錄中並不包含任何營養不良的醫療記錄,但是它確實是高血壓的一個可能原因,我們需要把它作為一個變數在貝葉斯網路中考慮進來,這樣的變數就是隱藏變數,我覺叫間接變數可能更好。
1)貝葉斯網路推理
貝葉斯網路一旦購建好,我們就可以計算在給定一些變數的情況下,查詢處任意變數組合的概率,這被稱之為貝葉斯網路推理,也是貝葉斯網路的應用之所在.貝葉斯網路推理演算法現在已知是一個N-P問題.下面就簡單分析一下如何來推理[例子來源於文獻4]
上圖是一個簡單的貝葉斯網路,h1,h2隱藏變數,o1,o2是可觀測變數,所有這些變數要麼是0,要麼是1。我們推理的目的就是在給定其它變數的觀測值時推理出某些變數目標(也許是隱藏變數)的值的概率分佈。本例中,就有
根據最後的推導結果,就可以根據CPT得出最後的概率分佈.
注意P(o1,o2)的推導,全概率公式.
當然這是最直接的演算法,演算法複雜度較高,現在比較常用的實際上是連線樹演算法,介面演算法等等,有很多這方面的論文討論這個.
2)貝葉斯網路的構造
上面談到了貝葉斯網路的使用,這裡再討論一下貝葉斯網路的構造.貝葉斯網路的構造需要構造兩個方面,一個是拓撲結構,另外一個是CPT.
拓撲結構的構造有兩種方法:
第一藉助於領域專家幫忙構造,由該領域專家來設計網路拓撲結構.
第二通過演算法來構造,比如基於結構空間的貪婪搜尋等等.有興趣請參考相關論文
CPT的構造需要通過樣本學習來構造,下面就簡單介紹一下梯度下降演算法構造CPT.
先有下面的定義:
代表CPT中的一個專案,表示的概率是在給定它的父親們等於它的第K個可能的值(可能是一種組合)時, 取它的第j個值的概率.舉個例子來說,對於上面的例圖Fingure 6.11,對於LC的CPT,如果LungerCancer是第三個特徵屬性,CPT就有下面的對應:
為了構造CPT,我們需要有樣本集D,包含了m個樣本,每個樣本完備得包含了所有特徵屬性.
我們的目的就是最大化,也就是最大化在目前CPT的條件概率下,出現當前D樣本分佈的概率.那麼我們的目標就變成了求函式的最優解問題.於是考慮使用梯度下降法(也就是所謂的爬山).我們想象一個等高圖模型,我們為了求該登高模型的最大值,我們該怎麼做呢?一個很自然的想法就是我們先隨便在山上找一個點,然後找到點的梯度,沿著梯度方向我們前進一個固定步長,然後繼續求梯度,繼續再沿著梯度方向前進一個固定步長,然後一直迴圈.那麼什麼時候結束呢?兩種情況下:
第一到了某一點梯度發現已經為0.那就證明該點已經到了最高值
第二在沿著該點的梯度方向前進了步長之後,發現高度沒有發生明顯的變化,這個變化很小,小於一個既定的閾值.那麼我們也認為找到了區域性最高值.
這種方法可以求到區域性最優解,但無法確保得到全域性最優解。
第一 隨機CPT表中的條目
第二 求在w初始值時的梯度,由於D是一個資料樣本集和,所以該梯度可以分解為每一個樣本在w初始值時的梯度之和.經過一系列概率公式變化(參見文獻二),就可以得到如下公式:
所以樣本的梯度值就很容易求出來了,注意上面公式的最後結果分子不是1,就是0.因為針對某一個樣本,變數和其父親出現某種分佈的概率要麼是0,要麼是100%.有了上述公式,我們針對貝葉斯網路的所有CPT條目都呼叫上述公式,就可以得到每個條目在某個樣本下的梯度.對樣本集合中的每個樣本我們都經過上面的計算,樣本集合D中每個CPT條目的梯度是所有樣本梯度的和.把所有條目的梯度組合在一起,就是整個的梯度.注意這裡的的梯度不是一個值,而是一個所有CPT條目的分佈.
第三 由於需要有一定的約束條件
所以CPT條目的分佈,也就是的分佈需要投射到一個平面上,因此需要一個平面投射轉化成
具體演算法參加下圖
貝葉斯網路的一個應用場景就是專家故障診斷系統,用來評估在故障出現的情況下各種故障原因的概率分佈.
相關文章
- 04貝葉斯演算法-貝葉斯網路演算法
- 樸素貝葉斯分類
- 高階人工智慧系列(一)——貝葉斯網路、機率推理和樸素貝葉斯網路分類器人工智慧
- 樸素貝葉斯和半樸素貝葉斯(AODE)分類器Python實現Python
- 機器學習之樸素貝葉斯分類機器學習
- 【機器學習】--貝葉斯網路機器學習
- Sklearn中的樸素貝葉斯分類器`
- 樸素貝葉斯/SVM文字分類文字分類
- [譯] Sklearn 中的樸素貝葉斯分類器
- 貝葉斯定理
- 貝葉斯公式公式
- 變分貝葉斯自編碼器
- 分類演算法-樸素貝葉斯演算法
- 樸素貝葉斯實現文件分類
- 使用貝葉斯進行新聞分類
- 貝葉斯變換
- 樸素貝葉斯分類流程圖介紹流程圖
- 機器學習讀書筆記:貝葉斯分類器機器學習筆記
- 機器學習之紅樓夢作者判斷(貝葉斯分類)機器學習
- 機器學習演算法筆記之4:貝葉斯分類器機器學習演算法筆記
- 樸素貝葉斯與Laplace平滑
- 樸素貝葉斯模型模型
- 樸素貝葉斯--新浪新聞分類例項
- HanLP-樸素貝葉斯分類預測缺陷HanLP
- 機器學習經典演算法之樸素貝葉斯分類機器學習演算法
- 概率分類之樸素貝葉斯分類(垃圾郵件分類python實現)Python
- 全機率公式與貝葉斯公式公式
- (實戰)樸素貝葉斯實現垃圾分類_201121
- 簡單易懂的樸素貝葉斯分類演算法演算法
- 貝葉斯迴歸簡介
- ML-樸素貝葉斯
- 全概率公式、貝葉斯公式公式
- 貝葉斯公式的通俗講解公式
- 樸素貝葉斯分類-實戰篇-如何進行文字分類文字分類
- 模式識別與機器學習筆記專欄之貝葉斯分類決策(一)模式機器學習筆記
- 監督學習之樸素貝葉斯
- 機器學習——貝葉斯演算法機器學習演算法
- 機器學習(三):樸素貝葉斯+貝葉斯估計+BP人工神經網路習題手算|手工推導與習題計算機器學習神經網路
- 貝葉斯神經網路(系列)第一篇神經網路