隐马尔可夫模型(HMM) python实现

本文详细介绍了隐马尔可夫模型(HMM)的基本概念、概率计算问题(包括前后向算法)、预测问题(Viterbi算法)以及学习问题(Baum-Welch模型)。通过实例展示了HMM在生成观测序列、概率计算、状态预测和模型学习中的应用,并提供了相关算法的Python实现。
摘要由CSDN通过智能技术生成

C S D N 真 的 很 过 分 , 换 了 K a t e x 很 多 公 式 都 显 示 不 出 来 了 … … 看 完 整 公 式 请 移 步 \color{red}{CSDN真的很过分,换了Katex很多公式都显示不出来了……看完整公式请移步} CSDNKatex
Baileyswu@github

学习目标:

  • 介绍HMM的定义与符号
  • 讨论HMM的三个基本问题
    • 概率计算问题:前后向算法
    • 学习问题:Baum-Welch模型,EM算法计算参数
    • 预测问题:Viterbi算法
  • 每种算法用代码实现
  • 参考李航的《统计学习方法》(在这里吐槽一下HMM那章下标 i i i 乱用,有些算法不是很ok)

基本概念

HMM是一种时序数据模型。
设序列长度为 T T T ,具有观测序列 X ⃗ = { x ⃗ 1 , … , x ⃗ T } \vec X=\{\vec x_1,\dots,\vec x_T\} X ={ x 1,,x T}隐变量序列 Z ⃗ = { z ⃗ 1 , … , z ⃗ T } \vec Z=\{\vec z_1,\dots,\vec z_T\} Z ={ z 1,,z T}
这里认为每一个观测都由对应的隐变量生成。隐变量序列是Markov链, z ⃗ t \vec z_t z t只依赖于 z ⃗ t − 1 \vec z_{t-1} z t1

变量都在有限的状态集里变化,观测的状态集 S ⃗ = { s ⃗ 1 , … , s ⃗ M } \vec S=\{\vec s_1,\dots,\vec s_M\} S ={ s 1,,s M}隐变量的状态集 H ⃗ = { h ⃗ 1 , … , h ⃗ N } \vec H=\{\vec h_1,\dots,\vec h_N\} H ={ h 1,,h N}
因此 x ⃗ t ∈ S ⃗ , z ⃗ t ∈ H ⃗ , t = 1 , … , T \vec x_t\in \vec S,\vec z_t\in \vec H,t=1,\dots,T x tS ,z tH ,t=1,,T
有时需要反向找到某状态是状态集里的第几个,定义 f i n d i n d e x ( z ⃗ t ) = i findindex(\vec z_t)=i findindex(z t)=i ,表示 z ⃗ t = h ⃗ i \vec z_t = \vec h_i z t=h i
同理也有 f i n d i n d e x ( x ⃗ t ) = i findindex(\vec x_t)=i findindex(x t)=i ,表示 x ⃗ t = s ⃗ i \vec x_t = \vec s_i x t=s i

隐状态间的转移矩阵 A ⃗ = [ a i j ] N × N \vec A=[a_{ij}]_{N\times N} A =[aij]N×N a i j a_{ij} aij 是从状态 h ⃗ i \vec h_i h i 转移到 h ⃗ j \vec h_j h j 的概率。
从隐状态到观测的发射矩阵 B ⃗ = [ b i j ] N × M \vec B=[b_{ij}]_{N\times M} B =[bij]N×M b i j b_{ij} bij 是从状态 h ⃗ i \vec h_i h i 转移到观测 s ⃗ j \vec s_j s

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值