马尔科夫模型系列文章(一)——马尔科夫模型
前言:我發(fā)現(xiàn)網(wǎng)上很多博客在講馬爾科夫相關(guān)的知識點的時候, 總是講的不是很清楚,有的純粹只關(guān)注理論,看不太懂,有的一上來就搞幾個算例,更是一片懵逼,有的又將一些概念一會兒換一個說法,一會兒是馬爾科夫過程,一會兒是馬爾科夫模型,一會兒是馬爾科夫鏈,傻傻分不清楚,也不好理解,決定自己抽點時間,好好寫一下,會詳細(xì)介紹馬爾科夫模型、馬爾科夫鏈、隱馬爾可夫模型、條件隨機場等相關(guān)的概念和案例,本文為第一篇。文中的理解方式是按照自己的理解方式來敘述的,不適合于每個人。
一、馬爾科夫模型
1.1 馬爾可夫過程
???????馬爾可夫過程(Markov process)是一類隨機過程。由俄國數(shù)學(xué)家A.A.馬爾可夫于1907年提出。該過程具有如下特性:在已知目前狀態(tài)(現(xiàn)在)的條件下,它未來的演變(將來)不依賴于它以往的演變?(過去?)。例如森林中動物頭數(shù)的變化構(gòu)成——馬爾可夫過程。在現(xiàn)實世界中,有很多過程都是馬爾可夫過程,如液體中微粒所作的布朗運動、傳染病受感染的人數(shù)、車站的候車人數(shù)等,都可視為馬爾可夫過程。(這里雖然我也不清楚這些現(xiàn)象到底是不是,姑且就認(rèn)為是吧!)
馬爾科夫過程中最核心的幾個概念:過去,現(xiàn)在,將來。其中最核心的在于“現(xiàn)在”如何理解。
在馬爾可夫性的定義中,"現(xiàn)在"是指固定的時刻,但實際問題中常需把馬爾可夫性中的“現(xiàn)在”這個時刻概念推廣為停時(見隨機過程)。例如考察從圓心出發(fā)的平面上的布朗運動,如果要研究首次到達(dá)圓周的時刻?τ以前的事件和以后的事件的條件獨立性,這里τ為停時,并且認(rèn)為τ是“現(xiàn)在”。如果把“現(xiàn)在”推廣為停時情形的“現(xiàn)在”,在已知“現(xiàn)在”的條件下,“將來”與“過去”無關(guān),這種特性就叫強馬爾可夫性。具有這種性質(zhì)的馬爾可夫過程叫強馬爾可夫過程。在相當(dāng)一段時間內(nèi),不少人認(rèn)為馬爾可夫過程必然是強馬爾可夫過程。首次提出對強馬爾可夫性需要嚴(yán)格證明的是J.L.杜布。直到1956年,才有人找到馬爾可夫過程不是強馬爾可夫過程的例子。馬爾可夫過程理論的進一步發(fā)展表明,強馬爾可夫過程才是馬爾可夫過程真正研究的對象。
(這段話實在是太過于抽象了,不好理解,心里有數(shù)就行,因為這里的過去、現(xiàn)在、將來和我們生活中是有所差別的,不太好理解!)
所以:一個馬爾科夫過程就是指過程中的每個狀態(tài)的轉(zhuǎn)移只依賴于之前的?n個狀態(tài),這個過程被稱為?n階馬爾科夫模型,其中?n是影響轉(zhuǎn)移狀態(tài)的數(shù)目。最簡單的馬爾科夫過程就是一階過程,每一個狀態(tài)的轉(zhuǎn)移只依賴于其之前的那一個狀態(tài),這也是后面很多模型的討論基礎(chǔ),很多時候馬爾科夫鏈、隱馬爾可夫模型都是只討論一階模型,甚至很多文章就將一階模型稱之為馬爾科夫模型,現(xiàn)在我們知道一階只是一種特例而已了。
對于一階馬爾科夫模型,則有:
如果第 i 時刻上的取值依賴于且僅依賴于第 i?1 時刻的取值,即
? 從這個式子可以看出,xi 僅僅與 xi-1有關(guān),二跟他前面的都沒有關(guān)系了,這就是一階過程。
??
總結(jié):馬爾科夫過程指的是一個狀態(tài)不斷演變的過程,對其進行建模后稱之為馬爾科夫模型,在一定程度上,馬爾科夫過程和馬爾科夫鏈可以打等號的。
1.2 馬爾科夫性(無后效型)
在馬爾科夫過程中,在給定當(dāng)前知識或信息的情況下,過去(即當(dāng)前以前的歷史狀態(tài))對于預(yù)測將來(即當(dāng)前以后的未來狀態(tài))是無關(guān)的。這種性質(zhì)叫做無后效性。簡單地說就是將來與過去無關(guān),值與現(xiàn)在有關(guān),不斷向前形成這樣一個過程。
1.3?馬爾可夫鏈
時間和狀態(tài)都是離散的馬爾可夫過程稱為馬爾可夫鏈,簡記為Xn=X(n),n=0,1,2…馬爾可夫鏈?zhǔn)请S機變量X1,X2,X3…的一個數(shù)列。
這種離散的情況其實草是我們所討論的重點,很多時候我們就直接說這樣的離散情況就是一個馬爾科夫模型。
(1)關(guān)鍵概念——狀態(tài)空間
馬爾可夫鏈?zhǔn)请S機變量X1,X2,X3…Xn所組成的一個數(shù)列,每一個變量Xi 都有幾種不同的可能取值,即他們所有可能取值的集合,被稱為“狀態(tài)空間”,而Xn的值則是在時間n的狀態(tài)。
(2)關(guān)鍵概念——轉(zhuǎn)移概率(Transition Probability)
馬爾可夫鏈可以用條件概率模型來描述。我們把在前一時刻某取值下當(dāng)前時刻取值的條件概率稱作轉(zhuǎn)移概率。
上面是一個條件概率,表示在前一個狀態(tài)為s的條件下,當(dāng)前狀態(tài)為t的概率是多少。
(3)關(guān)鍵概念——轉(zhuǎn)移概率矩陣
很明顯,由于在每一個不同的時刻狀態(tài)不止一種,所以由前一個時刻的狀態(tài)轉(zhuǎn)移到當(dāng)前的某一個狀態(tài)有幾種情況,那么所有的條件概率會組成一個矩陣,這個矩陣就稱之為“轉(zhuǎn)移概率矩陣”。比如每一個時刻的狀態(tài)有n中,前一時刻的每一種狀態(tài)都有可能轉(zhuǎn)移到當(dāng)前時刻的任意一種狀態(tài),所以一共有n*n種情況,組織成一個矩陣形式如下:
1.4 馬爾可夫模型的應(yīng)用
??????馬爾可夫模型(Markov Model)是一種統(tǒng)計模型,廣泛應(yīng)用在語音識別,詞性自動標(biāo)注,音字轉(zhuǎn)換,概率文法、序列分類等各個自然語言處理等應(yīng)用領(lǐng)域。經(jīng)過長期發(fā)展,尤其是在語音識別中的成功應(yīng)用,使它成為一種通用的統(tǒng)計工具。到目前為止,它一直被認(rèn)為是實現(xiàn)快速精確的語音識別系統(tǒng)的最成功的方法之一。
二、馬爾科夫模型的案例之一——天氣預(yù)報
下面是一個馬爾科夫模型在天氣預(yù)測方面的簡單例子。如果第一天是雨天,第二天還是雨天的概率是0.8,是晴天的概率是0.2;如果第一天是晴天,第二天還是晴天的概率是0.6,是雨天的概率是0.4。問:如果第一天下雨了,第二天仍然是雨天的概率是多少?,第十天是晴天的概率是多少?;經(jīng)過很長一段時間后雨天、晴天的概率分別是多少?
首先構(gòu)建轉(zhuǎn)移概率矩陣,由于這里每一天的狀態(tài)就是晴天或者是下雨兩種情況,所以矩陣是2x2的,如下:
| 雨天 | 晴天 | ? |
| 0.8 | 0.4 | 雨天 |
| 0.2 | 0.6 | 晴天 |
注意:每列和為1,分別對雨天、晴天,這樣構(gòu)建出來的就是轉(zhuǎn)移概率矩陣了。如下:
假設(shè)初始狀態(tài)第一天是雨天,我們記為
這里【1,0】分別對于雨天,晴天。
初始條件:第一天是雨天,第二天仍然是雨天(記為P1)的概率為:
P1 = AxP0
得到P1 = 【0.8,0.2】,正好滿足雨天~雨天概率為0.8,當(dāng)然這根據(jù)所給條件就是這樣。
下面計算第十天(記為P9)是晴天概率:
得到,第十天為雨天概率為0.6668,為晴天的概率為0.3332。
下面計算經(jīng)過很長一段時間后雨天、晴天的概率,顯然就是下面的遞推公式了:
2.2 遞推公式的改進?
雖然上面構(gòu)造了一個遞推公式,但是直接計算矩陣A的n次方是很難計算的,我們將A進行特征分解(譜分解)一下,得到:
?
現(xiàn)在遞推公式變成了下面的樣子:
?
顯然,當(dāng)n趨于無窮即很長一段時間以后,Pn = 【0.67,0.33】。即雨天概率為0.67,晴天概率為0.33。并且,我們發(fā)現(xiàn):初始狀態(tài)如果是P0 =【0,1】,最后結(jié)果仍然是Pn = 【0.67,0.33】。這表明,馬爾科夫過程與初始狀態(tài)無關(guān),跟轉(zhuǎn)移矩陣有關(guān)。
?
三、再看一個例子——DAN的CPG島
為什么還要看這個例子,因為在上面的天氣預(yù)報我們是直接給出了概率轉(zhuǎn)移矩陣,但是在實際應(yīng)用中這個概率轉(zhuǎn)移事先是不知道的,那該怎么辦呢?需要自己去做統(tǒng)計才能得到。
問題描述:基因組上CpG相對富集的區(qū)域被稱作CpG島,接下來我們要從給定的一定DNA序列,判斷它是否來自CpG島,這屬于一個兩分類問題。——這屬于一個序列分類問題。
DNA序列每個位置上的核苷酸都可以被當(dāng)作一個有四種可能取值的離散隨機變量x={A,T,G,C} 。
在上述問題中我們要考慮連續(xù)位置上出現(xiàn)的CpG雙核苷酸,可以用馬爾科夫模型來表示這種相鄰位置之間的依賴關(guān)系。如果第
i 時刻上的取值依賴于且僅依賴于第i?1時刻的取值,即
則我們把這個串稱作一個一階馬爾科夫鏈(模型)。
?
對于DNA序列來說,每一位置的取值有四種,我們把它們稱作四種狀態(tài),轉(zhuǎn)移概率就是一個4?4 的矩陣,稱作轉(zhuǎn)移概率矩陣或狀態(tài)轉(zhuǎn)移矩陣,如下圖。
如果知道兩類(CpG島與非CpG島)的狀態(tài)轉(zhuǎn)移矩陣,那么對于一個序列樣本,我們就可以用上述公式分別計算每一類模型下觀察到該特定序列的可能性或似然度?,用同樣的類別似然比(或?qū)?shù)似然比)來進行類別判斷。
3.1 關(guān)鍵問題——狀態(tài)轉(zhuǎn)移矩陣的確定
那么怎樣去確定馬爾科夫狀態(tài)轉(zhuǎn)移矩陣(離散概率模型)呢?
首先收集充分的、有代表性的一些CpG島序列的片段和一些非CpG島序列的片段,用它們構(gòu)成兩類訓(xùn)練樣本。在每一類樣本中,統(tǒng)計在所有位置上出現(xiàn)A、T、C、G的次數(shù),再統(tǒng)計在每個A、T、C、G后面出現(xiàn)A、T、C、G次數(shù),然后用下面兩個公式來統(tǒng)計概率:
加號表示的是正樣本,減號表示的是負(fù)樣本。得到如下的轉(zhuǎn)移矩陣:
對于任意一段待判別的DNA序列,可以根據(jù)狀態(tài)轉(zhuǎn)移矩陣計算它屬于CpG島的似然比,再通過與一定的閾值比較進行判別。大于閾值的為正樣本,否則為負(fù)樣本,計算過程就與上面類似了,建立遞推關(guān)系。
?
四、馬爾科夫模型與時間序列的關(guān)系與區(qū)別
乍一看,馬爾科夫模型與時間序列是有一定的關(guān)系,有時候甚至有人說馬爾科夫過程的狀態(tài)序列就是一個時間序列,的確,從時間的推移角度來說,這么說好像沒很么問題,但是它們之間還是有很多區(qū)別的,個人總結(jié)以下幾點:
(1)馬爾科夫模型是概率模型。每一個時間點的觀測值體現(xiàn)為狀態(tài)值,所謂狀態(tài)值就是某一個類別的概率,這跟時間序列顯然不一樣;
(2)馬爾科夫模型當(dāng)前狀態(tài)與之前狀態(tài)的關(guān)系是通過轉(zhuǎn)移概率、轉(zhuǎn)移概率矩陣來決定的,這也是和時間序列不一樣的地方。
總結(jié)
以上是生活随笔為你收集整理的马尔科夫模型系列文章(一)——马尔科夫模型的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java错误switch找不到符号,Ja
- 下一篇: spring boot集成oss