馬爾可夫鏈?zhǔn)且粋€(gè)相當(dāng)常見、相當(dāng)簡單的對隨機(jī)過程進(jìn)行統(tǒng)計(jì)建模的方式。它們被應(yīng)用在很多領(lǐng)域,從文本生成到金融建模。一個(gè)比較流行的例子是 SubredditSimulator(https://www.reddit.com/r/SubredditSimulator/),它使用馬爾科夫鏈自動(dòng)創(chuàng)建整個(gè) subreddit 的內(nèi)容??傊?,馬爾可夫鏈在概念上是非常直觀,并且易于理解的,不使用任何高級的統(tǒng)計(jì)或者數(shù)學(xué)概念就可以實(shí)現(xiàn)。馬爾科夫鏈?zhǔn)侨腴T概率建模和數(shù)據(jù)科學(xué)技術(shù)的很好的開端。
簡介
首先,我們用一個(gè)很常見的例子來描述它們:
試想有兩種可能的天氣狀態(tài):晴天或者陰天。你總是可以直接地觀察當(dāng)前的天氣狀態(tài),而且保證是之前提及的兩者之一?,F(xiàn)在,你決定預(yù)測明天的天氣。假設(shè)在這個(gè)過程中有一個(gè)潛在的轉(zhuǎn)移,因?yàn)楫?dāng)前的天氣會(huì)對第二天的天氣狀態(tài)有所影響。因此,作為一個(gè)敬業(yè)的人,你收集了幾年的天氣數(shù)據(jù),然后計(jì)算得到陰天之后出現(xiàn)晴天的概率是 0.25。你還注意到,廣泛地講,陰天之后發(fā)生陰天的概率是 0.75,因?yàn)橹挥袃煞N可能的天氣狀態(tài)。你現(xiàn)在可以利用這個(gè)分布,根據(jù)當(dāng)?shù)啬壳暗奶鞖鉅顟B(tài)去預(yù)測未來幾天的天氣。
這個(gè)例子描述了馬爾科夫鏈的很多關(guān)鍵概念。馬爾科夫鏈本質(zhì)上是由一系列滿足馬爾科夫性質(zhì)的轉(zhuǎn)移組成,這些轉(zhuǎn)換服從某種概率分布。
我們來觀察一下在這個(gè)例子中,如何僅僅通過觀察從當(dāng)天到第二天的轉(zhuǎn)換就得到概率分布。這其實(shí)說的就是馬爾科夫性,即馬爾科夫過程獨(dú)有的讓狀態(tài)轉(zhuǎn)移沒有記憶的性質(zhì)。這通常使它們無法成功地生成會(huì)出現(xiàn)某些期望潛在趨勢的序列。例如,馬爾科夫鏈可能根據(jù)詞頻來模仿一個(gè)作者的寫作風(fēng)格,但是它無法生成包含深層含義的文本或者蘊(yùn)含某種主題意義的文本,因?yàn)檫@些文本都是基于更長的文本序列開發(fā)的。因此,它們?nèi)狈ι烧Z境相關(guān)內(nèi)容的能力,因?yàn)樗鼈儫o法考慮到之前的整條狀態(tài)鏈。
天氣預(yù)測例子的可視化
模型
形式上,馬爾科夫鏈?zhǔn)且粋€(gè)概率自動(dòng)機(jī)。狀態(tài)轉(zhuǎn)移的概率分布通常表示為馬爾科夫鏈的轉(zhuǎn)移矩陣。如果馬爾科夫鏈有 N 個(gè)可能的狀態(tài),那么這個(gè)轉(zhuǎn)移矩陣就是 N**x**N 的矩陣,使得元素 (I, J) 代表從狀態(tài) I 轉(zhuǎn)移到狀態(tài) J 的概率。此外,狀態(tài)轉(zhuǎn)移矩陣必須是隨機(jī)矩陣,它的每一行元素之和必須是 1。這完全是能夠講得通的,因?yàn)槊恳恍写硭约旱母怕史植肌?/p>
馬爾科夫鏈的一般視圖,圓圈代表狀態(tài),邊代表轉(zhuǎn)移。
具有三個(gè)可能狀態(tài)的狀態(tài)轉(zhuǎn)移矩陣。
此外,馬爾科夫鏈也會(huì)有一個(gè)初始狀態(tài)向量,由一個(gè) N x 1 的向量表示,用這個(gè)向量來描述從 N 個(gè)狀態(tài)中的某個(gè)狀態(tài)開始的概率分布。初始向量中的元素 I 代表該馬爾科夫鏈從 I 狀態(tài)開始的概率。
具有四個(gè)可能狀態(tài)的初始向量。
這兩個(gè)實(shí)體通常就是用來描述一個(gè)馬爾科夫鏈所需的全部內(nèi)容了。
我們知道如何獲得從一個(gè)狀態(tài)轉(zhuǎn)移到另一個(gè)狀態(tài)的可能性,但是如何知道經(jīng)過多個(gè)步驟后發(fā)生轉(zhuǎn)移的概率呢?為了將這個(gè)也形式化,我們現(xiàn)在要定義在 M 個(gè)步驟中從狀態(tài) I 轉(zhuǎn)移到狀態(tài) J 的概率。事實(shí)證明,這是很容易的。給定一個(gè)狀態(tài)轉(zhuǎn)移矩陣 P,這可以通過計(jì)算矩陣 P 的 M 次冪中的元素 (I, J) 來決定。然而,對于 M 值比較大的情況,如果您對簡單的線性代數(shù)比較熟悉,更有效的方法是先將矩陣對角化,然后再計(jì)算它的 M 次冪。
結(jié)論
既然你已經(jīng)了解了馬爾可夫鏈的基本知識,現(xiàn)在就應(yīng)該能夠用你選擇的語言輕松地實(shí)現(xiàn)它們。如果你不擅長編程,還有許多更高級的馬爾可夫鏈和馬爾可夫過程的屬性可以深入研究。在我看來,馬爾科夫鏈沿著理論路線的自然發(fā)展將是隱馬爾可夫過程或 MCMC(馬爾科夫鏈蒙特卡羅)。簡單的馬爾可夫鏈?zhǔn)瞧渌鼜?fù)雜的建模技術(shù)的基本組成,因此,掌握了這些知識,你現(xiàn)在可以去嘗試更多這種主題的技術(shù),例如信念建模和采樣。
聯(lián)系客服