**HMM预测算法——Viterbi算法**

HMM是一个生成模型,表示状态序列和观测序列的联合分布,但是状态序是隐藏的,不可观测的。
Viterbi算法实际上用动态规划(dynamic programming)求HMM预测问题,用DP求概率最大路径,即寻找满足观测序列意义上最优隐含的状态序列。
(一)Viterbi算法可以分为两步:
第一步:从t=1开始,依次找到t=(1,2,,,T)时刻状态为i的各路径的最大概率。当t=T时,就可以得到最优路径的概率P*(t=T的最大概率)及其终结点;
第二步:从开始,由后向前逐步回溯求得结点,得到最优路径。
(二)Viterbi算法重要步骤详解
首先定义两个变量 (分别读“德尔塔”、“可赛”)。表示在观测时刻t状态为i的所以单个路径中概率最大值

定义在t时刻状态为i的所以单个路径中概率最大的路径的第t-1个结点。表示的是一个由其上一次状态值产生的状态。

定义为所以路径中对应的最大终结点的值,即最大的那个状态值

下面贴上维特比算法(来自李航教授的《统计学习方法》)
(三)Viterbi算法

(四)Viterbi算法R语言中简单例子
因为我都是基于R来作数据分析的,所以简单的在R里面学习下Viterbi算法,可以在RStudio中利用“F1”和“F2”的帮助文档和源码更进来快速学习。

# Initialise HMM
hmm = initHMM(c("A","B"), c("L","R"), transProbs=matrix(c(.6,.4,.4,.6),2),emissionProbs=matrix(c(.6,.4,.4,.6),2))
print(hmm)
# Sequence of observations
observations = c("L","L","R","R")
# Calculate Viterbi path
viterbi = viterbi(hmm,observations)
print(viterbi)

(五)扩展思考
1、HMM中计算概率问题与Viterbi中的递推关系式很类似,他们有联系吗?
2、HMM与CRF条件随机场,最大熵模型之间的关系。
3、概率上下文无关文法是HMM的进一步扩展。
(六)学习总结
学习的目的不仅仅只是掌握了Viterbi这个算法,更应该通过该算法去理解算法在模型中的运用的方法和设计的思想,学会在类似的问题上举一反三。下面是我对这块的知识小总结,也是我的小心得,希望能得到前辈们的批评和指导。
1、HMM的3个基本问题总结
概率计算问题
直接计算法、向前-向后算法
学习问题
监督学习(极大似然估计)、非监督学习(Baum-Welch或EM算法)
预测问题
近似算法、Viterbi算法
2、学习算法和模型没有什么捷径,见到公式就拿笔推推,见到算法就上机运行,然后真正的应用到应用问题中(这你才可以说,这玩意你理解了,至于能不能更深入前移学习,那需要下更多的功夫)。
3、DP和贪心算法在最优解问题上的异同,在理解DP中的递推表达式中,其中的回溯具体是怎样查找路径的,不能就只是看着牛人的成果自我感觉会了。

参考文献
[1] 悉尼科大徐亦达博士的机器学习公开课中关于HMM的部分
[2] 李航教授的《统计学习方法》第十章
[3] 《7月算法》里周博老师机器学习视频讲解

HMM预测算法——Viterbi算法相关推荐

  1. 基于Hmm模型和Viterbi算法的中文分词和词性标注

    使用 python 实现基于Hmm模型和Viterbi算法的中文分词及词性标注:使用 最大概率算法 进行优化.最终效果:人民日报语料:分词(F1:96.189%):词性标注(F1:97.934%) 完 ...

  2. 机器学习知识点(二十四)隐马尔可夫模型HMM维特比Viterbi算法Java实现

    1.隐马尔可夫模型HMM    学习算法,看中文不如看英文,中文喜欢描述的很高深.    http://www.comp.leeds.ac.uk/roger/HiddenMarkovModels/ht ...

  3. HMM模型和Viterbi算法

    一.隐含马尔可夫模型(Hidden Markov Model) 1.简介 隐含马尔可夫模型并不是俄罗斯数学家马尔可夫发明的,而是美国数学家鲍姆提出的,隐含马尔可夫模型的训练方法(鲍姆-韦尔奇算法)也是 ...

  4. 一文读懂 HMM 模型和 Viterbi 算法

    隐含马尔可夫模型(Hidden Markov Model) 隐含马尔可夫模型并不是俄罗斯数学家马尔可夫发明的,而是美国数学家鲍姆提出的,隐含马尔可夫模型的训练方法(鲍姆-韦尔奇算法)也是以他名字命名的 ...

  5. HMM模型与viterbi算法

    2021SC@SDUSC HMM(Hidden Markov Model): 隐式马尔科夫模型.HMM 模型可以应用在很多领域,所以它的模型参数描述一般都比较抽象,HMM 的典型介绍就是这个模型是一个 ...

  6. HMM——viterbi算法

    对于一个特殊的隐马尔科夫模型(HMM)及一个相应的观察序列,我们常常希望能找到生成此序列最可能的隐藏状态序列. 1.穷举搜索 我们使用下面这张网格图片来形象化的说明隐藏状态和观察状态之间的关系: 我们 ...

  7. 解决隐马模型中预测问题的算法是?

    感想 隐马尔可夫模型涉及的算法很多,周志华的<机器学习>,李航的<统计学系方法>都有讲过,可能当时理解的不深,导致现在都忘干净了,现在是时候弥补一下了. problem 解决隐 ...

  8. viterbi算法_HMM模型和Viterbi算法如何应用于分词

    首先感谢以下博主的分享,第一,二个链接是讲的HMM模型,第三个文章讲的是Viterbi算法 结巴分词3--基于汉字成词能力的HMM模型识别未登录词 - 老顽童2007 - 博客园​www.cnblog ...

  9. HMM——维特比算法(Viterbi algorithm)

    1. 前言 维特比算法针对HMM第三个问题,即解码或者预测问题,寻找最可能的隐藏状态序列: 对于一个特殊的隐马尔可夫模型(HMM)及一个相应的观察序列,找到生成此序列最可能的隐藏状态序列. 也就是说给 ...

最新文章

  1. 腾讯云存储产品矩阵全面升级,发布三维生态战略
  2. How to track an installation through client log-fi
  3. c# 拼接lambda表达式 (转载)
  4. ASP字符串函数大全
  5. shell批量监控网站状态码
  6. 深度学习之循环神经网络(1)序列表示方法
  7. android 点对点语音,使用Android SIP Stack进行点对点SIP呼叫?
  8. localStorage使用总结,页面跳转,保存值
  9. 介绍目前计算机网络的新技术,当前计算机网络技术实验室建设现状及方向
  10. leetcode python3 简单题167. Two Sum II - Input array is sorted
  11. redux-form(V7.4.2)笔记(三)之Flow简介
  12. 耳机煲机软件测试自学,乐味煲耳机软件教程 只需三步轻松煲耳机
  13. 支付宝小程序使用阿里图标
  14. kettle各组件说明
  15. 初学者学Python必看的几个练手小项目,轻松不枯燥哦
  16. vue打卡日历_VUE也有自己的日历组件
  17. dcos universe
  18. 群晖网络不通_网络菜鸟入手Synology群晖 DS218+,求问网络安装环境几个问题?
  19. 32位/64位操作系统的最大支持内存的空间
  20. 【Java】基于TA-Lib技术分析指标研究

热门文章

  1. VC2008 不能将参数 从“CString”转换为“const wchar_t *” 问题
  2. SpringBoot-quartz配置页面可视化任务调度
  3. 微信智慧外链接微信小程序源码下载,支持多端转换,致力打造(微信)小程序生态的基础必需品
  4. 计算机课程考试质量分析,试卷质量分析
  5. PC1 ping PC2 步骤
  6. 网易云音乐正式启动IPO 值不值五分之二个腾讯音乐?
  7. 计算机组成原理——期末复习题
  8. 【C++】1064:奥运奖牌计数(信息学奥赛)
  9. 最坏情况为线性时间的选择算法(SELECT)
  10. 手把手教你学习单片机-硬件基础知识