我试图学习Baum-Welch算法(用于隐马尔可夫模型)。我了解前向-后向模型的基本理论,但是有人能用一些代码来帮助解释它是很好的(我发现读代码更容易,因为我可以到处玩来理解它)。我检查了github和bitbucket,没有发现任何容易理解的东西。
网络上有很多HMM教程,但是概率已经提供,或者在拼写检查的情况下,添加单词的出现来建立模型。如果有人能用仅有的观测数据来创建Baum-Welch模型,那就太酷了。例如,在http://en.wikipedia.org/wiki/Hidden_Markov_model#A_concrete_example中,如果您只有:
states = ('Rainy', 'Sunny')
observations = ('walk', 'shop', 'clean')
这只是一个例子,我认为任何能解释它的例子,我们都可以用好的来更好地理解它。我有一个我正在试图解决的特定问题,但我认为展示代码,让人们可以从中学习并应用到他们自己的问题上(如果这是不可接受的,我可以发布我自己的问题)可能更有价值。不过,如果可能的话,用python(或java)编写它会很好。
提前谢谢!
以下是几年前我为一门课写的一些代码,基于Jurafsky/Martin中的演示(第二版,第6章,如果你可以阅读这本书的话)。这真的不是很好的代码,没有使用它绝对应该使用的numpy,让数组被1索引而不是仅仅将公式调整为0索引是很糟糕的,但是,好吧,也许它会有帮助。Baum Welch在代码中被称为“向前向后”。
示例/测试数据基于实现一些HMM相关算法的Jason Eisner's spreadsheet。注意,模型的实现版本使用了吸收结束状态,而其他状态具有转换概率,而不是假设预先存在的固定序列长度。
(如果您愿意,也可以使用as a gist。)
hmm.py
,其中一半是基于以下文件测试代码:observations.txt
,用于测试的观察序列:example.hmm
,用于生成数据的模型相关问题 更多 >
编程相关推荐