隐马尔科夫模型(HMM)【转】

Alice 和Bob是好朋友,但是他们离得比较远,每天都是通过电话了解对方那天作了什么。Bob仅仅对三种活动感兴趣:公园散步,购物以及清理房间。他选择做什么事情只凭当天天气。Alice对于Bob所住的地方的天气情况并不了解,但是知道总的趋势。在Bob告诉Alice每天所做的事情基础上,Alice想要猜测Bob所在地的天气情况。

Alice认为天气的运行就像一个马尔可夫链。其有两个状态 “雨”和”晴”,但是无法直接观察它们,也就是说,它们对于Alice是隐藏的。每天,Bob有一定的概率进行下列活动:“散步”,“购物”, 或 “清理”。 因为Bob会告诉Alice他的活动,所以这些活动就是Alice的观察数据。这整个系统就是一个隐马尔可夫模型HMM

Alice知道这个地区的总的天气趋势,并且平时知道Bob会做的事情。也就是说这个隐马尔可夫模型的参数是已知的。可以用程序语言(Python) 写下来:

     // 状态数目,两个状态:雨或晴
     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},
     }

在这些代码中,

  • start_probability代表了Alice对于Bob第一次给她打电话时的天气情况的不确定性(Alice知道的只是那个地方平均起来下雨多些)。在这里,这个特定的概率分布并非平衡的,平衡概率应该接近(在给定变迁概率的情况下){‘Rainy’: 0.571, ‘Sunny’: 0.429}。
  • transition_probability 表示马尔可夫链下的天气变迁情况,在这个例子中,如果今天下雨,那么明天天晴的概率只有30%。
  • 代码emission_probability 表示了Bob每天作某件事的概率。如果下雨,有 50% 的概率他在清理房间;如果天晴,则有60%的概率他在外头散步。

 

cited from:

posted on 2012-10-24 16:21  EasonCheng  阅读(472)  评论(0编辑  收藏  举报

导航