元素比对_序列比对(十六)——Baum-Welch算法估算HMM参数

6f4627bd6f73c0b7ebc02b9129c3b439.png

原创:hxj7

本文介绍了如何用Baum-Welch算法来估算HMM模型中的概率参数。

Baum-Welch算法应用于HMM的效果

前文《序列比对(十五)——EM算法以及Baum-Welch算法的推导》介绍了EM算法Baum-Welch算法的推导过程。Baum-Welch算法是EM算法的一个特例,用来估算HMM模型中的概率参数。其具体步骤如下:

fcb00ccecfbf06ccd19f32a8a405d0eb.png

图片引自《生物序列分析》

本文给出了Baum-Welch算法的C代码,还是以投骰子为例,估算出了转移概率以及发射概率。

具体效果如图

(下面几张图中的 `Real` 表示真实的转移概率以及发射概率,而`Baum-Welch`表示用Baum-Welch算法估算的转移概率以及发射概率。)

首先是当若干条序列总长度为300时:

abe5188703f87aba93576d1d84d31853.png

a3a4d8ab6ad0e8fff952566ecc34d9e8.png

然后是当若干条序列总长度为30000时:

e1f78f57afeb96c72eba57ad7d8c548a.png

da3dc7a8e5eae0a03e8f2c5d1e8383a0.png

可以看出总长度为30000时已经很接近真实值了。但是,Baum-Welch算法的结果时一个局部最优值,很依赖初始值的设定。所以,当初始值不同时,也有可能会出现这种结果:

39328855e08042cc83df9f40dd92d049.png

d7739e93bceb93fb68a01891f4751b17.png

小结一下

  • Baum-Welch算法通过多次迭代来估算HMM模型中的概率参数。
  • 本文代码设定了迭代的终止条件:当“归一化后的平均对数似然”的变化小于预先设定的阈值时或者迭代次数超出最大迭代次数时,迭代终止。
  • Baum-Welch算法的最终结果非常依赖初始值的设定。本文代码中的初始值是随机值。
  • 在计算期望次数时,使用了伪计数。

代码中所用公式及其推导

85e3a24b95e53c1986bc2ac41bf2c02f.png

3a33e2fb1fa0f5a4ae2f7904a3feee68.png

6756547b98999842bc0720782d0f555b.png

c101ae2610fcc8c6c87f9d8fe350a642.png

f35e8cd954b7ea66757583ba8d96e460.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值