讓我們假設我有一組隨機觀察:Matlab的 - 生成HMM
obs = [1, 2, 3, 5, 5, 5, 5, 5]
這些意見在HMM代表1點的狀態。在Matlab中,我想對這些觀測建模,所以我可以使用維特比算法來創建一種分類器。
我遇到的問題是我真的不知道從哪裏開始在Matlab中生成模型。工具箱中的功能似乎沒有這個功能。
是否有一個特定的圖書館,這將使我能夠執行這樣的程序,以模擬一系列觀察?
讓我們假設我有一組隨機觀察:Matlab的 - 生成HMM
obs = [1, 2, 3, 5, 5, 5, 5, 5]
這些意見在HMM代表1點的狀態。在Matlab中,我想對這些觀測建模,所以我可以使用維特比算法來創建一種分類器。
我遇到的問題是我真的不知道從哪裏開始在Matlab中生成模型。工具箱中的功能似乎沒有這個功能。
是否有一個特定的圖書館,這將使我能夠執行這樣的程序,以模擬一系列觀察?
來定義你需要至少在一個離散的HMM:一個數量模型,一個n X n
轉移概率的m
更多鈔票觀測(排放)和n X m
矩陣的概率在每個國家的每個排放清單狀態n
的。你有什麼是一系列的觀察,從那個角度看,你無法定義一個HMM。
所以我首先看看this教程表格mathworks以掌握基本知識。這裏使用的函數是統計工具箱的一部分。
然後,您首先創建一個猜測HMM中的統計數量。假設你有2個統計數據(如上面提到的教程) 下一步將是創建發射矩陣和轉換矩陣的初始猜測。如果你的可能發射是1 2 3 4 5
而你的狀態是2
那麼你將得到一個2x5
發射概率矩陣和一個2x2
轉換矩陣。
現在讓我們假設你猜狀態1產生1 2 3
和狀態2產生4 5
然後(均勻分佈)的發射矩陣是這樣的:
>> emis=[1/3 1/3 1/3 0 0; 0 0 0 1/2 1/2]
emis =
0.3333 0.3333 0.3333 0 0
0 0 0 0.5000 0.5000
還猜測,美國不從狀態1變爲2幾次後,然後呆在那裏。你的猜測就有點像這樣:
>> trans = [.8 .2; 0 1]
trans =
0.8000 0.2000
0 1.0000
,你可以看看你的HMM會產生什麼:從你用觀測序列與功能訓練你的HMM點
>> [seq,states] = hmmgenerate(6, trans, emis)
seq =
2 1 3 2 4 5
states =
1 1 1 1 2 2
hmmestimate
或hmmtrain
。
定義一個你至少需要的分立HMM:你的模型的一個狀態'n',一個'n×n'轉換概率,一個'm'可視觀測值(發射)和一個m×n'的列表矩陣和每個狀態下每個發射的概率。你有什麼是一系列的觀察,從那個角度看,你無法定義一個HMM。 – ben
@ben謝謝!但是,我確實有一個C++庫,可以根據觀察值生成一個HMM,並給出狀態總數?這將計算轉換概率和排放量。 – Phorce