一、HMM(隐马尔科夫)
1、马尔可夫过程
1、马尔可夫过程:
马尔可夫过程分为 一阶马尔科夫过程 和 n阶马尔可夫过程,要使用 隐马尔可夫HMM模型 必须认可马尔可夫过程的假设。
参考文章:
https://blog.csdn.net/qq_16555103/article/details/95611527 ---- 马尔可夫过程、HMM原理、概率求解算法
https://www.cnblogs.com/skyme/p/4651331.html ---- HMM原理
2、隐马尔可夫模型HMM
0-1、HMM其实当做一种特殊的聚类模型理解:
当做聚类模型:
观测值相当于样本 特征属性X ,预测值(HMM预测是对某个观测值序列最大概率 隐含状态预测)相当于 聚类蔟ID;不同的是
HMM隐含状态符合一阶马尔科夫性质,相当于聚类模型蔟ID之间符合一阶隐马尔可夫性质。
0-2、• 若训练数据包含观测序列和状态序列,则HMM的学习问题非常 简单,是监督学习算法。
• 若训练数据只包含观测序列,则HMM的学习问题需要使用EM 算法求解,是无监督学习算法。
1.1、隐马尔可夫模型HMM概念:
隐马尔可夫模型是一种符合一阶马尔可夫性质的概率模型,它内部含有 隐含状态序列、可观测值序列,其中隐含状态序列符合一阶
马尔科夫性质,而观测值序列有隐含状态决定的(需要注意的是,观测值序列不一定与隐含状态数目相同,隐含状态数目是认为估计
假设的,观测值序列指的是已存在的样本训练集或者测试集数据;而每一个观测值可能收到多个隐藏状态影响,不是图形中一对一
的结构)
1.2、HMM模型的特点:
① 数据序列(观测序列)之间存在依赖关系,该依赖是隐含状态的依赖关系,并且依赖关系符合一阶马尔可夫性质。
② HMM输出序列之间相互独立假设(尽管假设不太现实)
2、隐马尔可夫模型认可的三个性质(尽管不太现实):
3、隐马尔可夫模型预测?
隐马尔可夫模型预测的结果是满足 当前观测值序列q 概率最大的隐藏状i ,工程中根据业务自定义隐含状态的物理含义。
4、HMM的模型参数?
π 初始概率分布向量 π
A 状态转移矩阵(概率矩阵)
B 由状态 >> 观测值的 发射概率矩阵(又称混淆矩阵)
5、HMM内部术语参数?
① 状态空间:
状态序列取值空间,状态值的值域
② 输出空间/观测值空间:
观测值的取值空间
③ 状态数目/状态序列:
认为给定的隐含状态数目,相当于聚类模型的蔟个数,HMM预测时返回一个最大概率的隐含状态值。
④ 观测值序列:
训练/预测样本数据序列
⑤ 初始概率分布向量 π:
初始的隐含状态分布概率
⑥ 状态转移矩阵A(概率矩阵):
上一个状态与下一个状态 转换的概率矩阵
⑦ 发射矩阵/混淆矩阵:
状态与观测值转换的概率矩阵
6、状态序列与观测值序列的关系,是否独立?
① 状态序列(隐含状态序列):
状态序列与状态序列之间符合一阶马尔科夫性质,状态序列 通过发射矩阵 决定 观测值系列。
状态序列数目是人为假设估计的,它与观测值序列的长度没有直接的关系,状态序列必须是离散的
② 观测值序列:
观测值序列人直接观测预览到的数据,换句话来说我们可以将观测值序列看做聚类模型的样本X特征,HMM模型预测的隐含状态相当
于聚类模型的蔟ID(这些蔟ID之间符合马尔可夫性质);
由于观测值是样本数据,因此观测值序列可能是连续值,之前讲的发射概率矩阵是针对离散观测值来说的,如果观测值是连续的,
我们可以借鉴高斯贝叶斯模型的对离散特征的处理方式,用高斯概率密度函数(参数 μ、σ)来代替发射概率矩阵。
③ 观测值与观测值之间的独立性?观测值与状态值的独立性? 下图所示:
上文HMM模型三个需要认可的性质
7、HMM的三个典型的概率问题?
概率计算问题即模型评价问题——前向算法和后向算法
学习问题即参数估计问题——Baum-Welch算法
预测问题即解码问题——Viterbi算法
解决算法方案:
① 暴力穷举:
作用:列举出所有可能的情况进行计算。
局限性:当状态空间、观测值空间、状态序列长度、观测序列长度较大时,计算量会呈现指数级增长。
② 前向算法:
概念:利用隐马尔可夫模型隐状态符合一阶马尔科夫性的特点,将求观测序列概率问题转化为从前向后,依此递推计算:
前项概率(每一个状态值发射观测值的概率,下图详解)* 状态转移概率 * 发射概率 再求和 >>>> 下一时刻莫隐
藏状态观测值概率,计算法所有隐藏状态该观测值概率在求和,最终得到最终的概率。
作用:概率计算问题:前向算法 • 给定模型λ=(A,B,π),计算模型λ下观测到序列Q={q1,q2,...,qT}出
现的概率P(Q|λ)
过程优点:
我们通过先计算部分概率的方式递归的计算整个序列的所有路径的概率,大大节省了时间。在 t=1 的时候,使用了
初始概率和混淆矩阵的概率,而在t时刻的概率则可以利用 t-1 时刻的结果。t是观测值序列的长度。
这样我们就可以用递归的方式来计算所有可能的路径的概率和
③ 后项算法:与前项算法相反,从后往前推导
- 前向概率-后向概率
- 前项算法:
-
例题:
- 后项算法:
③ Baum-Welch算法:用于HMM模型训练 >>>>>>> 迭代获取模型参数 π A B
• 若训练数据包含观测序列和状态序列,则HMM的学习问题非常 简单,是监督学习算法。
• 若训练数据只包含观测序列,则HMM的学习问题需要使用EM 算法求解,是无监督学习算法。
- 1)HMM有监督学习训练过程
例:
过程: π A B 模型参数
- 2)无监督学习过程:若训练数据中只有观测序列,则HMM的学习问题需要使用EM 算法,属于非监督算法;
- 此时一般使用Baum-Welch算法;BW算法实际上是一种EM算法的应用。
1、EM算法:
把隐藏参量z 当做 隐含状态,把训练数据x 当做 观测数据 Q
- 2、单个状态的概率 两个状态的联合概率:
这里 利用前向-后项概率公式,上文中有详细介绍。
- 3、 Baum-Welch算法
Baum-welch算法本质是一个EM算法,给定多个观测值序列Q,来预测 含有隐含状态I的模型 参数 π A B
求π:
求 A B:
最终公式:
④ Viterbi算法
作用:根据可观察状态的序列找到一个最可能的隐藏状态序列,本质上是寻找一个概率最大的路径(其本质就是找出得到观
测值序列概率最大的路径)。
优点:取代了穷举法寻找最大概率路径计算量过大的情况。
缺点:由于Viterbi算法是递推计算最大的概率相乘,当HMM观测值的序列非常长的时候,最终计算的概率会无限接近于0。
- Viterbi算法 ------- Viterbi算法是一个贪心算法(类似于决策树),我只考虑每一个时刻局部概率最
- 大的隐藏状态,然后用类似前项算法 递推的思想计算所有的时刻 最大概率隐藏状态序列。
例题:
https://blog.csdn.net/qq_16555103/article/details/95611527 ------------- HMM三个典型的概率问题
8、HMM的优缺点?
优点:
①
缺点:
① CRF,HMM(隐马模型),MEMM(最大熵隐马模型)都常用来做序列标注的建模,像词性标注,True casing。隐马模型一
个最大的缺点就是由于其输出独立性假设,导致其不能考虑上下文的特征,限制了特征的选择,而最大熵隐马模型则解决
了这一问题,可以任意的选择特征,但由于其在每一节点都要进行归一化,所以只能找到局部的最优值,同时也带来了标
记偏见的问题(label bias),即凡是训练语料中未出现的情况全都忽略掉,而条件随机场则很好的解决了这一问题,他
并不在每一个节点进行归一化,而是所有特征进行全局归一化,因此可以求得全局的最优值。
9、HMM的损失函数?
。。。
10、HMM的应用场景?
① 数据序列存在着隐藏状态依赖关系,隐藏状态符合马尔可夫性,数据序列由隐藏状态决定(HMM模型有 输出数据序列相互独立这
一假设条件);例如:股市预测
② 中文分词(jieba内部就是运用HMM模型,利用隐状态 BMES B--开始、M--中间词、E--结束词、S--单个词,用带有隐藏状态分
割好的句子数据样本做有监督学习HMM训练,用训练好HMM模型预测新的语句样本)
③ 词性标注:CRF,HMM(隐马模型),MEMM(最大熵隐马模型)都常用来做序列标注的建模,像词性标注,True casing。
二、CRF条件随机场、MEMM
https://www.cnblogs.com/wuxiangli/p/7196984.html ----------------- CRF、MEMM
1、适用场景:
、HMM的API
import hmmlearn ------- HMM算法没有sklearn库,与xgboost类似,方法与sklearn库代码大致相同。