2013-03-12 25 views
6

我是隱馬爾可夫模型的新手。我理解主要思想,並且我嘗試了一些Matlab內置的HMM函數來幫助我理解更多。隱馬爾可夫模型每種狀態的多個觀察值

如果我有觀察序列和相應的狀態,例如

seq = 2  6  6  1  4  1  1  1  5  4 
states = 1  1  2  2  2  2  2  2  2  2 

我可以使用hmmestimate函數來計算過渡和發射概率矩陣爲:

[TRANS_EST, EMIS_EST] = hmmestimate(seq, states) 

TRANS_EST =

0.5000 0.5000 
    0 1.0000 

EMIS_EST =

 0 0.5000   0   0   0 0.5000 
0.5000   0   0 0.2500 0.1250 0.1250 

在這個例子中,觀察結果只是一個值。

下面的示例圖片描述了我的情況。 My situation 如果我有狀態:{睡眠,工作,體育},並且我有一組觀察值:{發光,開燈,心率> 100 .....} 如果我使用數字來表示每個觀察值,在我的處境每個州在同一時間有多個觀測,

seq = {2,3,5}  {6,1}  {2}  {2,3,6}  {4}  {1,2}  {1}  
states = 1    1  2   2   2  2  2  

我不知道如何實現這個Matlab中得到的過渡和發射概率矩陣。我很迷茫,下一步該做什麼?我使用正確的方法嗎?

謝謝!

+0

嗨,leon,我正在處理類似的問題。你有沒有找到解決辦法?我一直在廣泛搜索,但甚至找不到一篇論文或一個實現示例來驗證具有多個觀測變量對於HMM是可能的。據我所知,具有多個觀察序列(具有相同變量)是可能的,但如果序列實際上屬於不同的變量,我不確定情況是什麼。 – Rhubarb 2013-07-03 16:25:53

+0

Hi Berkan,HMM不適合這個問題。我正在研究其他選項 – leon 2013-07-04 17:13:44

+0

我剛剛在您的博客上發送了一條消息。你能詳細說明爲什麼你認爲HMM不適合這個嗎?我一直在閱讀這一個星期,如上所述,對這個問題還不太確定。我認爲你一直在看問題的時間比我長,所以任何指示或解釋(至於爲什麼不可能)將非常受歡迎。 – Rhubarb 2013-07-05 08:51:22

回答

3

如果你知道隱藏狀態序列,那麼最大似然估計是瑣碎:這是規範化的經驗計數。換句話說,計算轉換和排放,然後將每行中的元素除以該行中的總計數。

在你有多個觀測變量的情況下,將觀測值編碼爲一個向量,其中每個元素給出該時間步長隨機變量之一的值,例如, '{燈= 1,電腦= 0,心率> 100 = 1,位置= 0}'。關鍵是你需要在每個時間步驟有相同數量的觀測值,否則事情會變得更加困難。

+0

感謝您的回答,我stil不知道如何把矢量插入matlab hmmestimate函數? – leon 2013-03-13 09:53:06

+0

你不能使用hmmestimate,但你可以很容易地寫一個for循環,在每個狀態上循環並計算輸出轉換和排放,然後正常化。 – jerad 2013-03-13 15:36:08

1

我想你有兩個選擇。 1)將多個觀察值編碼成一個數字。例如,如果您知道觀測值的最大可能值爲N,並且在每個狀態下最多可能有K個觀測值,則可以將觀測值的任意組合編碼爲介於0和N^K - 1之間的數字。這樣做,你假設{2,3,6}和{2,3,5}不分享任何東西,它們是兩個完全不同的觀察結果。 2)或者你可以有多個排放分佈的每個州。我沒有使用matlab中的內置函數進行HMM估計,所以我不知道它是否支持它。但是這個想法是,如果你在一個州有多個排放分配,排放可能性只是它們的產物。這就是傑拉德所暗示的。

相關問題