[2]. 馬爾科夫鏈
state transition matrix中,第i行表示狀態i轉移到其它狀態的概率,第j列表示其它狀態轉移到狀態j的概率。
在上面的推導中,$\bold$是列向量,推導得到的$x_1$是$p^t \bold$,如果$\bold$是行向量,則$x_1$是$\bold p$。
假設初始狀態是牛市的概率0.3,熊市的概率是0.4,橫盤的概率是0.3,即$\bold=[0.1, 0.7, 0.2]$,並假設一天**狀態轉移一次,我們想知道後面每一天的**情況。
import numpy as np執行結果:import matplotlib.pyplot as plt
n = 30 # 狀態轉移次數
states = np.zeros((n, 3))
states[0, :] = [0.1, 0.7, 0.2] # 初始狀態
trans_mat = np.array([[0.9, 0.075, 0.025], [0.15, 0.8, 0.05], [0.25, 0.25, 0.5]]) # 狀態轉移矩陣
for i in range(n-1):
states[i+1, :] = np.dot(states[i, :], trans_mat)
print('after {} transitions'.format(n))
print(states[n-1, :])
plt.figure()
plt.plot(range(n), states[:, 0], label='bull market')
plt.plot(range(n), states[:, 1], label='bear market')
plt.plot(range(n), states[:, 2], label='stagnant market')
plt.xlabel('n')
plt.ylabel('probability')
plt.legend(loc='best')
plt.show()
從圖中我們可以看到,經過約20次狀態轉移後,概率分布不再變化,牛市的概率為0.624,熊市的概率為0.312,橫盤的概率為0.062。
即使初始狀態設定為不同的值,最終的概率分布還是一樣的,比如我們把初始值設為[0.6, 0.1, 0.3],執行程式的結果為:
因此,馬爾科夫鏈有這麼乙個性質:狀態轉移一定次數之後,概率分布將達到穩定狀態,即使初始概率分布不同,最終也能達到穩定分布。
但是,具備這個性質是需要一些前提條件的:
自然語言處理和語音
乙個字可以認為是乙個狀態,已知前面的字,**後面可能出現的字,這就可以用到馬爾科夫鏈了。
馬爾科夫模型與隱馬爾科夫模型
隨機過程 是隨時間而隨機變化的過程。又稱為隨機函式。馬爾科夫模型 vmm 它描述了一類重要的隨機過程。乙個系統有有限個狀態集s 隨時間推移,該系統將同某一狀態轉移到另一狀態。q s1,s2,sn 為一隨機變數序列,隨機變數取值為狀態集s中的乙個狀態,設時間t時狀態為qt。對系統的描述通常是給出當前時...
隱馬爾科夫模型
隱馬爾科夫 hiddenmarkov model 簡稱為hmm,hmm資料相當豐富,推薦參見 hmm學習最佳範例與崔曉源的部落格 一文,本文只對hmm進行簡要介紹,然後說明開源ghmm實現在linux環境的搭建,hmm的開源實現有眾多不同語言的實現。馬爾科夫模型 一階馬爾科夫模型假設為 1 t l時...
馬爾科夫模型(未完)
馬爾科夫模型 不考慮動作 考慮動作狀態完全可見 馬爾科夫鏈 mc 馬爾可夫決策過程 mdp 狀態不完全可見 隱馬爾可夫模型 hmm 不完全可觀察馬爾可夫決策過程 pomdp 馬爾科夫鏈 狀態空間中經過從乙個狀態到另乙個狀態的轉換的隨機過程。該過程要求具備 無記憶 的性質 下一狀態的概率分布只能由當前...