<thead id="xjx1f"></thead>
      <sub id="xjx1f"></sub>

        <address id="xjx1f"></address>

            matlab中的隐马尔可夫模型(HMM)实现

            原文链接:http://tecdat.cn/?p=7960

             

            隐马尔可夫模型(HMM)简介

            隐马尔可夫模型(HMM)是一个在你观察到的输出顺序,但不知道状态序列模型产生输出的过程。隐马尔可夫模型的分析试图从观察到的数据中恢复状态序列。

            例如,考虑具有两个状态和六个可能输出的马尔可夫模型。该模型使用:

            • 红色骰子,有六个面,标记为1到6。

            • 一个绿色骰子,具有十二个侧面,其中五个侧面标记??为2到6,其余七个侧面标记??为1。

            • 加权的红色硬币,正面出现概率为.9,背面出现概率为1.。

            • 加权绿色硬币,其正面概率为0.95,背面概率为.05。

            该模型使用以下规则从集合{1、2、3、4、5、6}中创建数字序列:

            • 首先滚动红色骰子,然后写下出现的数字 。

            • 投掷红色硬币并执行以下操作之一:

              • 如果结果为正面,则滚动红色骰子并记下结果。

              • 如果结果是反面,则滚动绿色骰子并记下结果。

            • 在随后的每个步骤中,您翻转与上一步中滚动的骰子颜色相同的颜色的硬币。如果硬币正面朝上,则与上一步骤滚动相同的骰子。如果硬币出现反面,请切换到另一个骰子。

            该模型的状态图具有红色和绿色两种状态,如下图所示。

            分享图片分享图片?

             

            您可以通过滚动具有与状态相同颜色的骰子来确定状态的发射。您可以通过翻转与状态相同颜色的硬币来确定到下一个状态的过渡。

            转换矩阵为:

            = [0.90.050.10.95]

            输出矩阵为:

            分享图片分享图片?

            该模型不是隐藏的,因为您可以从硬币和骰子的颜色知道状态的顺序。但是,假设其他人 没有向您显示骰子或硬币。您所看到的只是输出的顺序。如果开始看到的数字比其他数字多1,则可能会怀疑骰子处于绿色状态,但由于无法看到要滚动的骰子的颜色,因此无法确定。

            隐藏的马尔可夫模型提出以下问题:

            • 给定一系列输出,最可能的状态路径是什么?

            • 给定一系列输出,您如何估算模型的转换和输出概率?

            • 什么是后验概率

            分析隐马尔可夫模型

             

            本节说明如何来分析隐马尔可夫模型。

            生成测试序列

             

            TRANS = [.9 .1; .05 .95];
            
            EMIS = [1/6, 1/6, 1/6, 1/6, 1/6, 1/6;...
            7/12, 1/12, 1/12, 1/12, 1/12, 1/12];
            分享图片

            要从模型生成状态和发射的随机序列 :

            输出seq是序列,输出states是状态序列。

            估计状态序列

             

            likelystates是与长度相同的序列seq

            要测试的准确性hmmviterbi 

            sum(states==likelystates)/1000
            ans =
               0.8200
            分享图片

            在这种情况下,最有可能的状态序列在82%的时间内与随机序列一致。

             

            估算转移和输出矩阵

             返回转换矩阵和输出矩阵的估计值:

            您可以将输出与原始 矩阵进行比较, TRANS并且EMIS

            TRANS
            TRANS =
            0.9000    0.1000
            0.0500    0.9500
            
            EMIS
            EMIS =
            0.1667    0.1667    0.1667    0.1667    0.1667    0.1667
            0.5833    0.0833    0.0833    0.0833    0.0833    0.0833
            分享图片

             

            假设您对TRANS和 有以下初步猜测EMIS

            TRANS_GUESS = [.85 .15; .1 .9];
            EMIS_GUESS = [.17 .16 .17 .16 .17 .17;.6 .08 .08 .08 .08 08];
            分享图片

            您估计TRANSEMIS如下:

            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
            分享图片

             如果算法在最大迭代次数(默认值为)内未能达到此容差100,则算法将暂停。 

            如果算法未能达到所需的容差,请使用以下命令增加最大迭代次数的默认值:

            其中,maxiter是算法执行的最大步骤数。

             

             

            估计后验状态概率

             

            输出PSTATESM × L矩阵,其中M为状态数,L为的长度seqPSTATES(i,j)是条件概率,该模型处于状态i时,它产生j的 seq给出的是,seq 

            要返回序列概率的对数seq,请使用第二个输出参数hmmdecode

            随着序列长度的增加,序列的概率趋于0 。

            更改初始状态分布

            默认情况下, 隐藏的Markov模型函数从状态1开始。换句话说,初始状态的分布将其所有概率质量都集中在状态1处。要分配不同的概率分布,p = [ 1,2,...,M ],到M个初始状态,执行以下操作:

            如果转换矩阵和发射矩阵分别为TRANSEMIS,则可以使用以下命令来创建增强矩阵:

            TRANS_HAT = [0 p; zeros(size(TRANS,1),1) TRANS];
            
            EMIS_HAT = [zeros(1,size(EMIS,2)); EMIS];

            有问题欢迎联系我们!

             

            大数据部落 -中国专业的第三方数据服务提供商,提供定制化的一站式数据挖掘和统计分析咨询服务

            统计分析和数据挖掘咨询服务:y0.cn/teradat(咨询服务请联系官网客服

            分享图片?点击这里给我发消息QQ:3025393450

            分享图片?

            【服务场景】  

            科研项目; 公司项目外包;线上线下一对一培训;数据采集;学术研究;报告撰写;市场调查。

            【大数据部落】提供定制化的一站式数据挖掘和统计分析咨询

            分享图片

            欢迎选修我们的R语言数据分析挖掘必知必会课程!

            分享图片

             

             
            分享图片
            相关文章
            相关标签/搜索
            黄大仙精选资料一肖一码 巴东县| 古蔺县| 射洪县| 福安市| 佛学| 婺源县| 秭归县| 汉阴县| 宜章县| 乌苏市| 宁津县| 萝北县| 新丰县| 历史| 武强县| 锡林浩特市| 蓝田县| 阿拉善右旗| 怀安县| 长汀县| 中西区| 利津县| 法库县| 璧山县| 樟树市| 张家川| 东明县| 东丽区| 池州市| 六安市| 剑河县| 南溪县| 乌兰县| 长顺县| 丹凤县| 曲松县| 门头沟区| http://fa.hz0j0r9vo.fun http://fa.hz0j1r7vo.fun http://fa.hz0j0r6vo.fun http://fa.hz0j1r4vo.fun http://fa.hz0j2r5vo.fun