馬爾科夫隨機(jī)場 Markov Random Field 一個簡單的例子

This is a toy example Markov Random Field

In this example. we are modeling a voting preferences among persons A, B, C, D. Let's say that (A,B), (B,C), (C,D)
and (D,A) are friends and friedns tend to have similar voting preferences.

mrf.png

左邊這張圖表示了我剛剛描述出的關(guān)系晨川,這個呢就是一個馬爾科夫概率圖败京。那么我們現(xiàn)在想分析什么呢?我們想得到A,B,C,D的聯(lián)合概率分布伏尼。有了聯(lián)合概率分布就有了一切脖旱。

根據(jù)馬爾科夫概率圖的定理堪遂,我們知道馬爾科夫聯(lián)合概率可以表示成最大團(tuán)上勢函數(shù)的乘積介蛉,然后再除以一個總數(shù)來把這個數(shù)值變成一個概率。我們觀察右邊圖溶褪,可以看出來最大團(tuán)有4個币旧,即:
p(A,B,C,D)=\frac{\phi(A,B)\phi(B,C)\phi(C,D)\phi(D,A)}{Z}

這個時候呢,最麻煩的部分來了猿妈,就是這個勢函數(shù)吹菱,我們也把它叫做因子(factor),這個東西呢是我們根據(jù)實(shí)際情況自己定義的正函數(shù)彭则。在我們這個例子里毁葱,我們前面提到了A和B是朋友,投票可能會互相影響贰剥,于是我們定義這樣一個勢函數(shù):
\phi(A,B)=\begin{cases} \begin{aligned} &10 \quad &\text{if } A=B=1\\ &5 \quad &\text{if } A=B=0\\ &1 \quad &\text{otherwise}\\ \end{aligned} \end{cases}

注意啊,這個是我定義在AB之間的勢函數(shù)筷频,我們能看出來這個勢函數(shù)定義的還是有一定原則的蚌成,因?yàn)槲覀冋J(rèn)為朋友會有類似的投票,所以兩個人相同時得分高凛捏,兩個人不同時得分低担忧,同時我們還認(rèn)為兩個同時投比同時不投得分高。講道理其他的團(tuán)也得有自己的勢函數(shù)坯癣,這些勢函數(shù)可以不一樣瓶盛,比如說我們定義如下的三個勢函數(shù):
\phi(B,C)=\begin{cases} \begin{aligned} &20 \quad &\text{if } B=C=1\\ &15 \quad &\text{if } B=C=0\\ &10 \quad &\text{otherwise}\\ \end{aligned} \end{cases}

\phi(C,D)=\begin{cases} \begin{aligned} &20 \quad &\text{if } C=D=1\\ &3 \quad &\text{if } C=D=0\\ &1 \quad &\text{otherwise}\\ \end{aligned} \end{cases}

\phi(D,A)=\begin{cases} \begin{aligned} &40 \quad &\text{if } D=A=1\\ &25 \quad &\text{if } D=A=0\\ &11 \quad &\text{otherwise}\\ \end{aligned} \end{cases}

有了這個勢函數(shù)我們就可以得到聯(lián)合概率分布啦,我們的目標(biāo)是為了得到一張聯(lián)合概率分布表

A B C D p
0 0 0 0
0 0 0 1
0 0 1 0
0 0 1 1
0 1 0 0
0 1 0 1
0 1 1 0
0 1 1 1
1 0 0 0
1 0 0 1
1 0 1 0
1 0 1 1
1 1 0 0
1 1 0 1
1 1 1 0
1 1 1 1

好了示罗,現(xiàn)在我們把他寫成程序惩猫,看看這張表怎么算出來

# 我們首先定義四個勢函數(shù)
def potential_ab(x,y):
    if x==y==1:
        return 10
    if x==y==0:
        return 5
    else:
        return 1
    
def potential_bc(x,y):
    if x==y==1:
        return 20
    if x==y==0:
        return 15
    else:
        return 10
    
def potential_cd(x,y):
    if x==y==1:
        return 20
    if x==y==0:
        return 3
    else:
        return 1
    
def potential_da(x,y):
    if x==y==40:
        return 10
    if x==y==25:
        return 5
    else:
        return 11
# 然后我們計(jì)算分母,分母其實(shí)就是表格中的所有組合都來一遍然后求和
all=[
    [0,0,0,0],[0,0,0,1],[0,0,1,0],[0,0,1,1],[0,1,0,0],[0,1,0,1],[0,1,1,0],[0,1,1,1],
    [1,0,0,0],[1,0,0,1],[1,0,1,0],[1,0,1,1],[1,1,0,0],[1,1,0,1],[1,1,1,0],[1,1,1,1]
]
s=0
for a,b,c,d in all:
    s+=potential_ab(a,b)*potential_bc(b,c)*potential_cd(c,d)*potential_da(d,a)
    
print("總和z=",s)
總和z= 73480
# 下面我們以第一行為例蚜点,求概率轧房,a=0,b=0,c=0,d=0
a=0
b=0
c=0
d=0
p_hat=potential_ab(a,b)*potential_bc(b,c)*potential_cd(c,d)*potential_da(d,a)
p=p_hat/s
print("(A,B,C,D)=(0,0,0,0)的概率p=",p)
(A,B,C,D)=(0,0,0,0)的概率p= 0.033682634730538924
# 下面我們以第二行為例,求概率绍绘,a=0,b=0,c=0,d=1
a=0
b=0
c=0
d=1
p_hat=potential_ab(a,b)*potential_bc(b,c)*potential_cd(c,d)*potential_da(d,a)
p=p_hat/s
print("(A,B,C,D)=(0,0,0,1)的概率p=",p)
(A,B,C,D)=(0,0,0,1)的概率p= 0.01122754491017964
# 下面我們以第三行為例奶镶,求概率,a=0,b=0,c=1,d=0
a=0
b=0
c=1
d=0
p_hat=potential_ab(a,b)*potential_bc(b,c)*potential_cd(c,d)*potential_da(d,a)
p=p_hat/s
print("(A,B,C,D)=(0,0,1,0)的概率p=",p)
(A,B,C,D)=(0,0,1,0)的概率p= 0.0074850299401197605
# 下面我們以第三行為例陪拘,求概率厂镇,a=0,b=0,c=1,d=1
a=0
b=0
c=1
d=1
p_hat=potential_ab(a,b)*potential_bc(b,c)*potential_cd(c,d)*potential_da(d,a)
p=p_hat/s
print("(A,B,C,D)=(0,0,1,1)的概率p=",p)
(A,B,C,D)=(0,0,1,1)的概率p= 0.1497005988023952

好了好了,寫三行差不多了左刽,我們來看看哈捺信。首先我們得到的結(jié)果都是概率,其次我們這個概率是符合我們的預(yù)期的悠反,就是是朋友的就大概率一起投残黑,小概率一起不投馍佑,非常非常小的概率一個投一個不投


?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市梨水,隨后出現(xiàn)的幾起案子拭荤,更是在濱河造成了極大的恐慌,老刑警劉巖疫诽,帶你破解...
    沈念sama閱讀 211,639評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件舅世,死亡現(xiàn)場離奇詭異,居然都是意外死亡奇徒,警方通過查閱死者的電腦和手機(jī)雏亚,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,277評論 3 385
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來摩钙,“玉大人罢低,你說我怎么就攤上這事∨值眩” “怎么了网持?”我有些...
    開封第一講書人閱讀 157,221評論 0 348
  • 文/不壞的土叔 我叫張陵,是天一觀的道長长踊。 經(jīng)常有香客問我功舀,道長,這世上最難降的妖魔是什么身弊? 我笑而不...
    開封第一講書人閱讀 56,474評論 1 283
  • 正文 為了忘掉前任辟汰,我火速辦了婚禮,結(jié)果婚禮上阱佛,老公的妹妹穿的比我還像新娘帖汞。我一直安慰自己,他們只是感情好凑术,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,570評論 6 386
  • 文/花漫 我一把揭開白布涨冀。 她就那樣靜靜地躺著,像睡著了一般麦萤。 火紅的嫁衣襯著肌膚如雪鹿鳖。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,816評論 1 290
  • 那天壮莹,我揣著相機(jī)與錄音翅帜,去河邊找鬼。 笑死命满,一個胖子當(dāng)著我的面吹牛涝滴,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 38,957評論 3 408
  • 文/蒼蘭香墨 我猛地睜開眼歼疮,長吁一口氣:“原來是場噩夢啊……” “哼杂抽!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起韩脏,我...
    開封第一講書人閱讀 37,718評論 0 266
  • 序言:老撾萬榮一對情侶失蹤缩麸,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后赡矢,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體杭朱,經(jīng)...
    沈念sama閱讀 44,176評論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,511評論 2 327
  • 正文 我和宋清朗相戀三年吹散,在試婚紗的時候發(fā)現(xiàn)自己被綠了弧械。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,646評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡空民,死狀恐怖刃唐,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情界轩,我是刑警寧澤唁桩,帶...
    沈念sama閱讀 34,322評論 4 330
  • 正文 年R本政府宣布,位于F島的核電站耸棒,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏报辱。R本人自食惡果不足惜与殃,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,934評論 3 313
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望碍现。 院中可真熱鬧幅疼,春花似錦、人聲如沸昼接。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,755評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽慢睡。三九已至逐工,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間漂辐,已是汗流浹背泪喊。 一陣腳步聲響...
    開封第一講書人閱讀 31,987評論 1 266
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留髓涯,地道東北人袒啼。 一個月前我還...
    沈念sama閱讀 46,358評論 2 360
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親蚓再。 傳聞我的和親對象是個殘疾皇子滑肉,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,514評論 2 348

推薦閱讀更多精彩內(nèi)容