機器學習_統計模型之(二)貝葉斯網路
1. 貝葉斯網路
貝葉斯網路(Bayesian network),又稱信念網路(Belief Network),或有向無環圖模型。它用網路結構代表領域的基本因果知識。
貝葉斯網路中的節點表示命題(或隨機變數),認為有依賴關係(或非條件獨立)的命題用箭頭來連線。
令G = (I,E)表示一個有向無環圖(DAG),其中I代表圖形中所有的節點的集合,而E代表有向連線線段的集合,且令X = (Xi), i ∈ I為其有向無環圖中的某一節點i所代表的命題,則節點X的聯合概率可以表示成:
其中Pa(i)是i的父結點,是i的因。聯合概率可由各自的區域性條件概率分佈相乘得出:
p(x1,…,xk)=p(xk|x1,….,xk-1)…p(x2|x1)p(x1)
這裡順便說一下樸素貝葉斯,由於其中各個變數x相互獨立p(x2|x1)=p(x2),得出:
p(x1,…,xk)=p(xk)…p(x2)p(x1)
因此說樸素貝葉斯是貝葉斯網路的一種特殊情況。
2. 例程
(1) 功能
eBay的Bayesian-belief-networks是一個貝葉斯網路的python工具包,此例為使用該庫解決蒙提霍爾三門問題。
(2) 問題描述
蒙提霍爾是概率中的經典問題,出自美國的電視遊戲節目。問題的名字來自該節目的主持人蒙提•霍爾(Monty Hall)。參賽者會看見三扇關閉了的門,其中一扇的後面有一輛汽車,選中後面有車的那扇門可贏得該汽車,另外兩扇門後面則各藏有一隻山羊。當參賽者選定了一扇門,但未去開啟它的時候,節目主持人開啟剩下兩扇門的其中一扇,露出其中一隻山羊(主持人不會開啟有車的那扇門)。主持人其後會問參賽者要不要換另一扇仍然關上的門。問題是:換另一扇門會否增加參賽者贏得汽車的機率?答案是:不換門的話,贏得汽車的機率是1/3。換門的話,贏得汽車的機率是2/3。
這是為什麼呢?接著往下看。
(3) 下載安裝
$ git clone https://github.com/eBay/bayesian-belief-networks
(4) 程式碼
from bayesian.bbn import build_bbn
def f_prize_door(prize_door):
return 0.33333333
def f_guest_door(guest_door):
return 0.33333333
def f_monty_door(prize_door, guest_door, monty_door):
if prize_door == guest_door: # 參賽者猜對了
if prize_door == monty_door:
return 0 # Monty不會開啟有車的那扇門,不可能發生
else:
return 0.5 # Monty會開啟其它兩扇門,二選一
elif prize_door == monty_door:
return 0 # Monty不會開啟有車的那扇門,不可能發生
elif guest_door == monty_door:
return 0 # 門已經由參賽者選定,不可能發生
else:
return 1 # Monty開啟另一扇有羊的門
if __name__ == '__main__':
g = build_bbn(
f_prize_door,
f_guest_door,
f_monty_door,
domains=dict(
prize_door=['A', 'B', 'C'],
guest_door=['A', 'B', 'C'],
monty_door=['A', 'B', 'C']))
g.q()
g.q(guest_door='A')
g.q(guest_door='A', monty_door='B')
(5) 執行結果
(6) 分析
程式中構建的貝葉斯網路如下圖所示。
先看看庫是如何使用的,首先通過三個判別函式(節點對應的是判別函式,並不對應三個門)以及它們之間的依賴關係定義了網路g的結構,節點和連線關係是程式設計師根據業務邏輯定義的。而機器用來優化和計算在給定的條件下產生結果的概率。
prize_door和guest_door都是隨機的,所以概率都是0.333;而主持人知道哪扇門後是獎,所以monty_door由另外兩個結點(父結點)決定的,當參賽者猜對時,Monty會開啟另兩門之一,沒猜對時Monty只能開啟另一扇有羊的門。
從執行結果可以看到:先驗是隨機抽取的0.333,隨著限制條件依次加入,不確定性逐漸變小,最終,參賽者如果選擇換門(C)的贏率變為不換門(A)的兩倍。
相關文章
- 機器學習_統計模型之(一)貝葉斯公式機器學習模型公式
- 【機器學習】--貝葉斯網路機器學習
- 貝葉斯思想概述:從貝葉斯定理到貝葉斯網路
- 04貝葉斯演算法-貝葉斯網路演算法
- 從貝葉斯方法談到貝葉斯網路
- 貝葉斯分類器與貝葉斯網路之間的關係
- 機器學習|樸素貝葉斯演算法(二)-用sklearn實踐貝葉斯機器學習演算法
- 概率圖模型基礎 - 貝葉斯網路引數學習(貝葉斯估計+碎權更新法)模型
- 機器學習之樸素貝葉斯分類機器學習
- 樸素貝葉斯模型模型
- 機器學習——貝葉斯演算法機器學習演算法
- 機器學習(三):樸素貝葉斯+貝葉斯估計+BP人工神經網路習題手算|手工推導與習題計算機器學習神經網路
- 機器學習之貝葉斯分類(python實現)機器學習Python
- 機器學習演算法(二): 樸素貝葉斯(Naive Bayes)機器學習演算法AI
- 機器學習中的MLE、MAP和貝葉斯估計機器學習
- 一文讀懂機器學習中的貝葉斯統計學機器學習
- 機器學習|樸素貝葉斯演算法(一)-貝葉斯簡介及應用機器學習演算法
- 機器學習Sklearn系列:(四)樸素貝葉斯機器學習
- 機器學習實戰(三)--樸素貝葉斯機器學習
- 機器學習之紅樓夢作者判斷(貝葉斯分類)機器學習
- 高階人工智慧系列(一)——貝葉斯網路、機率推理和樸素貝葉斯網路分類器人工智慧
- 機器學習筆記(七)貝葉斯分類器機器學習筆記
- 貝葉斯公式公式
- 機器學習演算法筆記之4:貝葉斯分類器機器學習演算法筆記
- 機器學習經典演算法之樸素貝葉斯分類機器學習演算法
- 機器學習筆記之樸素貝葉斯分類演算法機器學習筆記演算法
- 機器學習中貝葉斯建模和機率程式設計簡介機器學習程式設計
- 貝葉斯推斷及其網際網路應用(二):過濾垃圾郵件
- 機器學習系列文章:貝葉斯決策理論機器學習
- 機器學習讀書筆記:貝葉斯分類器機器學習筆記
- 一個計算我的妻子是否懷孕的貝葉斯模型模型
- chapter6:概率及樸素貝葉斯--樸素貝葉斯APT
- 深度學習中的貝葉斯統計簡介深度學習
- 貝葉斯神經網路(系列)第一篇神經網路
- 用 Python 進行貝葉斯模型建模(4)Python模型
- 複習機器學習演算法:貝葉斯分類器機器學習演算法
- [機器學習&資料探勘]樸素貝葉斯數學原理機器學習
- 監督學習之樸素貝葉斯