美文网首页
2021-05-05 HMM(Hidden Markov Mod

2021-05-05 HMM(Hidden Markov Mod

作者: 听风的声音_b8cf | 来源:发表于2021-05-05 21:54 被阅读0次

    1、定义

    一个隐性HMM包含:

    (1)可观察状态(emissions)

    (2)可以产生观察状态的隐含状态(states)

    (3)隐含状态之间的转移概率(transition probability)

    (4)隐含状态产生可观察状态的输出概率(emission probability)

    (5)初始状态概率:隐含状态是第一个状态的概率

    2、例子:

    假设一个HMM包含2个states(S1,S2), 6个emissions(1~6)

    (1)红色骰子S1:有6个面,每个面一个数字,1~6.

    (2)绿色骰子S2:有12个面,其中5个面标示着2~6,其他面全标1

    (3)红色硬币,掷出后,正面的概率是0.9,反面的概率是0.1

    (4)绿色硬币,掷出后,正面概率是0.95,反面概率是0.05

    该模型产生数字序列的规则如下:

    (1)先掷红色骰子,并记录正面出现的数字,即是一个emission

    (2)抛红色硬币:如果是正面,就掷红色骰子,并记录数字;如果是反面就掷绿色骰子,并记录数据

    (3)在随后的每一步中,抛的硬币的颜色与你在前一步中掷出的骰子的颜色相同。如果硬币正面朝上,掷上一步相同的骰子。如果硬币出现反面,换另一个骰子。

    状态转移图,如下图所示:

    状态转换图

    转移概率T和输出概率E:

    转移概率T和输出概率E

    MATLAB中,使用转移概率T和输出概率E生成一个随机序列

    [seq,states] = hmmgenerate(1000,TRANS,EMIS);

    需要安装Statistics and Machine Learning Toolbox

    seq: 生成的观察状态

    states: 生成seq的隐含状态

    hmmgenerate是从S1开始,如果要改变初始状态,参考Changing the Initial State Distribution.

    根据观察状态来估计隐含状态

    likelystates = hmmviterbi(seq, TRANS, EMIS);

    计算估计的精准度:

    sum(states==likelystates)/1000

    ans =

      0.8200

    估计转移概率矩阵和输出概率矩阵

    (1)使用hmmestimate

    [TRANS_EST, EMIS_EST] = hmmestimate(seq, states)

    TRANS_EST =

    0.8989    0.1011

    0.0585    0.9415

    EMIS_EST =

    0.1721    0.1721    0.1749    0.1612    0.1803    0.1393

    0.5836    0.0741    0.0804    0.0789    0.0726    0.1104

    (2)使用hmmtrain

    如果不知道states的序列,但是对TRANS和EMIS有一个初始的猜测,也可以估计转移和输出概率

    TRANS_GUESS = [.85 .15; .1 .9];

    EMIS_GUESS = [.17 .16 .17 .16 .17 .17;.6 .08 .08 .08 .08 08];

    [TRANS_EST2, EMIS_EST2] = hmmtrain(seq, TRANS_GUESS, EMIS_GUESS)

    TRANS_EST2 =

    0.2286    0.7714

    0.0032    0.9968

    EMIS_EST2 =

    0.1436    0.2348    0.1837    0.1963    0.2350    0.0066

    0.4355    0.1089    0.1144    0.1082    0.1109    0.1220

    相关文章

      网友评论

          本文标题:2021-05-05 HMM(Hidden Markov Mod

          本文链接:https://www.haomeiwen.com/subject/didkdltx.html