我無法理解如何在包HMM中使用方法baumWelch
。在R中使用HMM包
按照documentation我們首先要初始化我們隱馬爾可夫模型
hmm = initHMM(c("A","B"), c("L","R"), transProbs=matrix(c(.8,.2,.2,.8),2),
emissionProbs=matrix(c(.6,.4,.4,.6),2)
這意味着國家命名爲「A」和「B」的排放量被命名爲「L」和「R」我們有傳輸和發射概率。
到目前爲止好,但現在的教程將創建觀察之列:
observations = sample(c("L","R"),prob=c(.8,.2),size=100,replace=TRUE)
這是一個維向量作爲觀察名單。根據Rabiner的經典論文的描述,正向和反向概率是根據一系列觀察值計算出來的,例如上述代碼中的變量observations
。即我們需要這種observations
的矩陣,以便甚至遠程訓練任何東西。我該怎麼做?
編輯:
在排放上面的例子中是 「L」 和 「R」。應使用這些排放物創建obesevation序列O.例如O = LRRRLLLRR等假設長度爲t
在前向算法中使用了這種類型的觀察,該算法給定完整的馬爾可夫模型,觀察序列O將生成維度矩陣nxt,其中n是狀態數在我們的HMM中,這樣一個矩陣的第i個元素被解釋爲「在時間j,產生了觀測序列的第j個元素並處於狀態i」。
現在向前以及向後和其他幾種算法都用於Baum-Welch訓練算法。
我相信Baum-Welch的輸入應該是觀測序列列表,而不是排放列表。在我的版本中,矩陣輸入的維數應該是t乘以m,其中t是觀測序列的長度,m是這種序列的數量。
我如何理解這裏的輸入?我們有一百個長度爲1的觀測序列嗎?我該如何在HMM中提供這樣一個矩陣來保證方法
如果你不明白統計方法的原理,你應該問[stats.se]或[datascience.se]。這實際上不是一個適用於堆棧溢出的特定編程問題。 – MrFlick
我理解這些原則,實際上我應該更好地表述它,並不是說我認爲觀察應該是一個矩陣,它應該是一個不可改變的事實。我在這裏問的是,是否有人使用過這個軟件包,並且可以澄清如何理解這個特定的例子以及如何編寫正確的東西。 –
現在還不清楚你的問題到底是什麼。你不明白他們爲什麼要創建觀測矢量而不是矩陣?預期矩陣的維度是什麼?它的內容是什麼?你指的是什麼文件的一部分? – MrFlick