zoukankan      html  css  js  c++  java
  • 隐马尔科夫模型(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:

  • 相关阅读:
    常见的arp欺骗
    ARP欺骗分析
    周总结
    周总结
    周总结
    win10下 修改host文件 新添域名不生效
    周总结
    周总结
    周总结
    周总结
  • 原文地址:https://www.cnblogs.com/easoncheng/p/2737379.html
Copyright © 2011-2022 走看看