1. 程式人生 > >機器學習---演算法---馬爾科夫

機器學習---演算法---馬爾科夫

 轉自:https://blog.csdn.net/pipisorry/article/details/46618991

1、確定性模式(Deterministic Patterns):確定性系統

  考慮一套交通訊號燈,燈的顏色變化序列依次是紅色-紅色/黃色-綠色-黃色-紅色。這個序列可以作為一個狀態機器,交通訊號燈的不同狀態都緊跟著上一個狀態。
    hmm1
  注意每一個狀態都是唯一的依賴於前一個狀態,所以,如果交通燈為綠色,那麼下一個顏色狀態將始終是黃色——也就是說,該系統是確定性的。確定性系統相對比較容易理解和分析,因為狀態間的轉移是完全已知的。

2、非確定性模式(Non-deterministic patterns):馬爾科夫

  為了使天氣那個例子更符合實際,加入第三個狀態——多雲。與交通訊號燈例子不同,我們並不期望這三個天氣狀態之間的變化是確定性的,但是我們依然希望對這個系統建模以便生成一個天氣變化模式(規律)。
  一種做法是假設模型的當前狀態僅僅依賴於前面的幾個狀態,這被稱為馬爾科夫假設,它極大地簡化了問題。顯然,這可能是一種粗糙的假設,並且因此可能將一些非常重要的資訊丟失。
  當考慮天氣問題時,馬爾科夫假設假定今天的天氣只能通過過去幾天已知的天氣情況進行預測——而對於其他因素,譬如風力、氣壓等則沒有考慮。在這個例子以及其他相似的例子中,這樣的假設顯然是不現實的。然而,由於這樣經過簡化的系統可以用來分析,我們常常接受這樣的知識假設,雖然它產生的某些資訊不完全準確。
          hmm2a

 hmm2 hmm2c
  一個馬爾科夫過程是狀態間的轉移僅依賴於前n個狀態的過程。這個過程被稱之為n階馬爾科夫模型,其中n是影響下一個狀態選擇的(前)n個狀態。最簡單的馬爾科夫過程是一階模型,它的狀態選擇僅與前一個狀態有關。這裡要注意它與確定性系統並不相同,因為下一個狀態的選擇由相應的概率決定,並不是確定性的。
  下圖是天氣例子中狀態間所有可能的一階狀態轉移情況:
    hmm3
  對於有M個狀態的一階馬爾科夫模型,共有M^2個狀態轉移,因為任何一個狀態都有可能是所有狀態的下一個轉移狀態。每一個狀態轉移都有一個概率值,稱為狀態轉移概率——這是從一個狀態轉移到另一個狀態的概率。所有的M^2個概率可以用一個狀態轉移矩陣表示。注意這些概率並不隨時間變化而不同——這是一個非常重要(但常常不符合實際)的假設。
  下面的狀態轉移矩陣顯示的是天氣例子中可能的狀態轉移概率:
    hmm4

  -也就是說,如果昨天是晴天,那麼今天是晴天的概率為0.5,是多雲的概率為0.375。注意,每一行的概率之和為1。
  要初始化這樣一個系統,我們需要確定起始日天氣的(或可能的)情況,定義其為一個初始概率向量,稱為pi向量。
          hmm5
  -也就是說,第一天為晴天的概率為1。
我們定義一個一階馬爾科夫過程如下:
   狀態:三個狀態——晴天,多雲,雨天。
   pi向量:定義系統初始化時每一個狀態的概率。
   狀態轉移矩陣:給定前一天天氣情況下的當前天氣概率。

任何一個可以用這種方式描述的系統都是一個馬爾科夫過程。

 

 轉自:http://blog.sina.com.cn/s/blog_14167e8810102x7nd.html

3、馬爾科夫模型

隨機過程最早是用於統計物理學的數學方法,研究空間粒子的隨機運動。後來這門科學蓬勃發展,隨機過程應用的領域越來越廣。這裡介紹隨機過程的一種——馬爾科夫鏈模型。

馬爾科夫的無後效性:系統在t>t0時刻所處的狀態與系統在t0時刻以前的狀態無關,這就是馬爾科夫性或者無後效性。

馬爾科夫模型具體公式描述如下

 

有隨機過程{Xn,n為整數},對於任意n和I0,I1,In,滿足條件概率: 馬爾科夫快速入門

就稱為馬爾科夫鏈。

但凡學過概率論的對這個條件概率應該都能看懂吧!

 

4、舉例說明

 

下面是一個馬爾科夫模型在天氣預測方面的簡單例子。如果第一天是雨天,第二天還是雨天的概率是0.8,是晴天的概率是0.2;如果第一天是晴天,第二天還是晴天的概率是0.6,是雨天的概率是0.4。問:如果第一天下雨了,第二天仍然是雨天的概率,第十天是晴天的概率;經過很長一段時間後雨天、晴天的概率分別是多少?

 

馬爾科夫快速入門

 

首先構建轉移概率矩陣,初學者很容易構建錯誤:

 

雨天

晴天

 

0.8

0.4

雨天

0.2

0.6

晴天

 

 

 

 

 

 

 

 

 

注意:每列和為1,分別對雨天、晴天,這樣構建出來的就是轉移概率矩陣了。

 

馬爾科夫快速入門

 

初始狀態第一天是雨天,我們記為

 

馬爾科夫快速入門

 

這裡【1,0】分別對應於雨天,晴天。

 

初始條件:第一天是雨天,第二天仍然是雨天(記為P1)的概率為:

 

 

P1 = AxP0

 

得到P1 = 【0.8,0.2】,正好滿足雨天~雨天概率為0.8,當然這根據所給條件就是這樣。

 

 

 

下面計算第十天(記為P9)是晴天概率:

 

馬爾科夫快速入門

 

 

 

>> A= [0.8 0.4;0.2 0.6];

 

>> p = [1;0];

 

>> for i = 1:9

 

p = A*p;

 

end

 

>> p

 

 

 

p =

 

 

 

    0.6668

 

    0.3332

 

得到,第十天為雨天概率為0.6668,為晴天的概率為0.3332。

 

下面計算經過很長一段時間後雨天、晴天的概率,顯然就是公式(1.1)

 

馬爾科夫快速入門

 

直接算A的n次方顯然不行,我們知道任意一個可逆矩陣總可以化為(1.2)形式。其中,T為A的特徵值對應的兩個特徵向量組成的矩陣,這兩個特徵向量分別為【2,1】、【1 -1】。D為一個對角矩陣(1.4)。

 

那麼,我們可以這樣算,就簡單多了:

 

馬爾科夫快速入門

 

顯然,當n趨於無窮即很長一段時間以後,Pn = 【0.67,0.33】。即雨天概率為0.67,晴天概率為0.33。並且,我們發現:初始狀態如果是P0 =【0,1】,最後結果仍然是Pn = 【0.67,0.33】。這表明,馬爾科夫過程與初始狀態無關,跟轉移矩陣有關。

 

 

下面,簡單驗證一下,分別求第50天,100天,1000天時,Pn的取值情況是否與理論一致:Pn = 【0.67,0.33】。 馬爾科夫快速入門

 

 

 

p =

 

 

 

    0.6667

 

    0.3333

 

 

 

 

 

p =

 

 

 

    0.6667

 

    0.3333

 

 

 

 

 

p =

 

 

 

    0.6667

 

    0.3333

 


        可以看出第50天時與第1000天在0.00001精度下是一樣的,最終結果與理論值Pn = 【0.67,0.33】一致。馬爾科夫過程與初始狀態無關,跟轉移矩陣有關。