马尔科夫模型

马尔科夫模型是单重随机过程,是一个2元组:(S,A)。

当中S是状态集合,A是状态转移矩阵。

仅仅用状态转移来描写叙述随机过程。

马尔科夫模型的2个如果

有限历史性如果:t+l时刻系统状态的概率分布仅仅与t时刻的状态有关,与t时刻曾经的状态无关;

齐次性如果:从t时刻到t+l时刻的状态转移与t的值无关。

以天气模型为例

天气变化有3中状态S:{1(阴),2(云),3(晴)}

图片来自网络

则状态转移矩阵A:

这样,仅仅要知道的初始状态概率向量,就能预測接下来每天的天气了。

隐马尔科夫模型

隐马尔科夫模型是双重随机过程,是一个5元组:

V是输出集合。

表示在状态j时输出k的概率。

是初始状态概率。

用状态转移和输出概率一起来描写叙述随机过程。

以扔硬币模型为例

有个小孩手上拿着3个各不同样,也正反不均匀的硬币。他每次随机抽取1个硬币扔,扔了非常多次(比方10次),他并不告诉你他每次抽中的是哪个硬币。可是他会告诉你每次的正反结果:正正反正反正正正……

在这个问题中,我们知道观察序列(硬币的正反),可是小孩手上硬币类型的变换序列被隐藏起来了,我们不知道小孩每次拿的哪个硬币扔,因此是双重随机过程。这就隐马尔科夫过程。

这里如果模型參数已知:

A=[0.90.05 0.05;0.45 0.1 0.45;0.45 0.45 0.1];
B=[0.50.75 0.25;0.5 0.25 0.75];
Pi=[1/31/3 1/3]';

隐马尔科夫模型的3个问题

1.【概率问题】给定上述模型,观察到[正正反]的概率是多少?

O=[11 2];

2.【预測问题】给定上述模型,假设观察到上述结果,最可能的硬币转换序列(状态转换序列)是什么?

3.【学习问题】不告诉你模型參数,怎样依据观察序列得到它们?

【概率问题】

1.向前算法

向前变量:给定模型,在时刻t,状态为i,且之前的观察序列例如以下的概率。

显然有

Alpha=zeros(3,N);
Beta=zeros(3,N);
Lambda=zeros(3,N); Alpha(:,1)=B(O(1),:)'.*Pi;
Delta=Alpha;
fori=2:N
Alpha(:,i)=A'*Alpha(:,i-1).*B(O(i),:)';
end
Q1_1=sum(Alpha(:,N));

输出

Alpha=
0.166666666666667 0.150000000000000 0.0867187500000000
0.250000000000000 0.0531250000000000 0.00683593750000000
0.0833333333333333 0.0322916666666667 0.0259765625000000 Q1_1=0.119531250000000

2.向后算法

向后变量:给定模型,在时刻t,状态为i,且之后的观察序列例如以下的概率。

显然有

Beta(:,N)=ones(N,1);
fori=N:-1:2
Beta(:,i-1)=bsxfun(@times,A,B(O(i),:))*Beta(:,i);
end
Q1_2=sum(Pi.*B(1,:)'.*Beta(:,1));

输出

Beta=
0.252187500000000 0.500000000000000 1
0.202968750000000 0.587500000000000 1
0.321093750000000 0.412500000000000 1 Q1_2=0.119531250000000

【预測问题】

Viterbi算法

Viterbi变量:给定模型,在时刻t,状态为i,观察到的最佳转换序列为的概率。

显然有

这里须要把最佳路径记录下来

Q2=zeros(1,N);
fori=2:N
Delta(:,i)=max(bsxfun(@times,A,Delta(:,i-1)))'.*B(O(i),:)';
[~,Lambda(:,i)]=max(bsxfun(@times,A,Delta(:,i-1)));
end
[~,Q2(N)]=max(Delta(:,N));
fori=N:-1:2
Q2(i-1)=Lambda(Q2(i),i);
end

输出

Delta=
0.166666666666667 0.0750000000000000 0.0337500000000000
0.250000000000000 0.0281250000000000 0.00316406250000000
0.0833333333333333 0.0281250000000000 0.00949218750000000

最优序列

1     1     1

【学习问题】

1.有监督模式

在有大量标签数据下,直接用频率近似概率參数就可以。

2.无监督模式

Baum-Welch算法

定义变量:在给定模型和观察序列O,在t时刻状态为i,在t+1时刻状态为j的概率

则关于模型參数的一种预计方法为

欢迎參与讨论并关注本博客微博以及知乎个人主页兴许内容继续更新哦~

转载请您尊重作者的劳动,完整保留上述文字以及文章链接,谢谢您的支持!

隐马尔科夫模型(HMM)及事实上现的更多相关文章

  1. 隐马尔科夫模型HMM学习最佳范例

    谷歌路过这个专门介绍HMM及其相关算法的主页:http://rrurl.cn/vAgKhh 里面图文并茂动感十足,写得通俗易懂,可以说是介绍HMM很好的范例了.一个名为52nlp的博主(google ...

  2. 猪猪的机器学习笔记(十七)隐马尔科夫模型HMM

    隐马尔科夫模型HMM 作者:樱花猪 摘要: 本文为七月算法(julyedu.com)12月机器学习第十七次课在线笔记.隐马尔可夫模型(Hidden Markov Model,HMM)是统计模型,它用来 ...

  3. 隐马尔科夫模型HMM(二)前向后向算法评估观察序列概率

    隐马尔科夫模型HMM(一)HMM模型 隐马尔科夫模型HMM(二)前向后向算法评估观察序列概率 隐马尔科夫模型HMM(三)鲍姆-韦尔奇算法求解HMM参数(TODO) 隐马尔科夫模型HMM(四)维特比算法 ...

  4. 隐马尔科夫模型HMM(一)HMM模型

    隐马尔科夫模型HMM(一)HMM模型基础 隐马尔科夫模型HMM(二)前向后向算法评估观察序列概率 隐马尔科夫模型HMM(三)鲍姆-韦尔奇算法求解HMM参数(TODO) 隐马尔科夫模型HMM(四)维特比 ...

  5. 隐马尔科夫模型HMM(三)鲍姆-韦尔奇算法求解HMM参数

    隐马尔科夫模型HMM(一)HMM模型 隐马尔科夫模型HMM(二)前向后向算法评估观察序列概率 隐马尔科夫模型HMM(三)鲍姆-韦尔奇算法求解HMM参数(TODO) 隐马尔科夫模型HMM(四)维特比算法 ...

  6. 隐马尔科夫模型HMM(四)维特比算法解码隐藏状态序列

    隐马尔科夫模型HMM(一)HMM模型 隐马尔科夫模型HMM(二)前向后向算法评估观察序列概率 隐马尔科夫模型HMM(三)鲍姆-韦尔奇算法求解HMM参数 隐马尔科夫模型HMM(四)维特比算法解码隐藏状态 ...

  7. 用hmmlearn学习隐马尔科夫模型HMM

    在之前的HMM系列中,我们对隐马尔科夫模型HMM的原理以及三个问题的求解方法做了总结.本文我们就从实践的角度用Python的hmmlearn库来学习HMM的使用.关于hmmlearn的更多资料在官方文 ...

  8. 机器学习之隐马尔科夫模型HMM(六)

    摘要 隐马尔可夫模型(Hidden Markov Model,HMM)是统计模型,它用来描述一个含有隐含未知参数的马尔科夫过程.其难点是从可观察的参数中确定该过程的隐含参数,然后利用这些参数来作进一步 ...

  9. 隐马尔科夫模型HMM

    崔晓源 翻译 我们通常都习惯寻找一个事物在一段时间里的变化规律.在很多领域我们都希望找到这个规律,比如计算机中的指令顺序,句子中的词顺序和语音中的词顺序等等.一个最适用的例子就是天气的预测. 首先,本 ...

  10. 隐马尔科夫模型HMM介绍

    马尔科夫链是描述状态转换的随机过程,该过程具备“无记忆”的性质:即当前时刻$t$的状态$s_t$的概率分布只由前一时刻$t-1$的状态$s_{t-1}$决定,与时间序列中$t-1$时刻之前的状态无关. ...

随机推荐

  1. Android应用开发之(通过ClipboardManager, ClipData进行复制粘贴)

    在开发一些系统应用的时候,我们会用到Android的剪贴板功能,比如将文本文件.或者其他格式的内容复制到剪贴板或者从剪贴板获取数据等操作.Android平台中每个常规的应用运行在自己的进程空间中,相对 ...

  2. Lucene.Net 2.3.1开发介绍 —— 二、分词(一)

    原文:Lucene.Net 2.3.1开发介绍 -- 二.分词(一) Lucene.Net中,分词是核心库之一,当然,也可以将它独立出来.目前Lucene.Net的分词库很不完善,实际应用价值不高.唯 ...

  3. ASI简单实现网络编程

    使用iOS SDK中的HTTP网络请求API,相当的复杂,调用比較麻烦.ASIHTTPRequest 对CFNetwork API进行了封装.而且使用起来非常easy的一套API,在非常多比較老旧的项 ...

  4. 深入认识Tigase XMPP Server(上)

    深入认识Tigase XMPP Server(上) 作者:chszs,转载需注明.博客主页:http://blog.csdn.net/chszs 本文的目的是深入认识Tigase XMPP Serve ...

  5. drupal 7 模块开发,hook_form

    因为不是系统学习,只能把每天自己学习到的东西零碎的记录下来. 一来方便自己记忆,二来可供大家查阅. 后续有精力再去做进一步的整理. 1 开发一个模块分为有下面几个文件 hook.admin.inc h ...

  6. hdu1695(莫比乌斯反演)

    传送门:GCD 题意:求[1,n],[1,m]gcd为k的对数. 分析:莫比乌斯入反演门题,gcd(x,y)==k等价于gcd(x/k,y/k)==1,求出[1,n][1,m]互质的对数,在减去[1, ...

  7. ImportError: No module named _sqlite3 - 代码分享

    ImportError: No module named _sqlite3 - 代码分享 ImportError: No module named _sqlite3 作者:86市场网       点击 ...

  8. 上下文菜单与TrackPopupMenu

    这算是一个演示程序吧,想不到上下文菜单也是採用ON_COMMAND宏来进行消息映射,在这里,我发现一个问题:从CWnd派生的类ON_UPDATE_COMMAND_UI_RANGE似乎没有效果,不知道应 ...

  9. mysql登录报错 ERROR 1045 (28000)

    1.现象: [root@localhost ~]# mysql -u root -p Enter password:  ERROR 1045 (28000): Access denied for us ...

  10. 【CSS3】transform-origin原点旋转

    忙乱, 点 -moz-transform-origin: 0 0; -webkit-transform-origin:0 0; -o-transform-origin:0 0; 以右上角给原点 -mo ...