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:

  • 相关阅读:
    Android NDK学习(1) 简介
    wmsys.wm_concat结果长度限制的问题
    onInterceptTouchEvent和onTouchEvent调用时序
    滑动到底部或顶部响应的ScrollView实现
    Android ViewPager使用详解
    android include标签的使用,在RelativeLayout中使用include标签需注意!!!!!
    Eclipse中如何在指定工程中搜索指定的字符串
    android:windowSoftInputMode属性详解
    cocos2d-x中关于touch事件的响应
    《从零开始学Swift》学习笔记(Day 6)——哎呀常量和变量都该什么时候用啊?
  • 原文地址:https://www.cnblogs.com/easoncheng/p/2737379.html
Copyright © 2011-2022 走看看