Viterbi algorithm

HMM(隐马尔可夫模型)是用来描述隐含未知参数的统计模型,举一个经典的例子:一个东京的朋友每天根据天气{下雨,天晴}决定当天的活动{公园散步,购物,清理房间}中的一种,我每天只能在twitter上看到她发的推“啊,我前天公园散步、昨天购物、今天清理房间了!”,那么我可以根据她发的推特推断东京这三天的天气。在这个例子里,显状态是活动,隐状态是天气。

任何一个HMM都可以通过下列五元组来描述:

:param obs:观测序列
:param states:隐状态
:param start_p:初始概率(隐状态)
:param trans_p:转移概率(隐状态)
:param emit_p: 发射概率 (隐状态表现为显状态的概率)

6cbb8645gw1egs40a3bpmj208n09574o

伪码如下:

states = ("Rainy", "Sunny")

observations = ("walk", "shop", "clean")

start_probability = {"Rainy": 0.6, "Sunny": 0.4}

transition_probability = { "Rainy" : {"Rainy": 0.7, "Sunny": 0.3}, "Sunny" : {"Rainy": 0.4, "Sunny": 0.6},
    }

emission_probability = { "Rainy" : {"walk": 0.1, "shop": 0.4, "clean": 0.5}, "Sunny" : {"walk": 0.6, "shop": 0.3, "clean": 0.1},
}
文章导航