图3
得到训练模型中的转移矩阵的值如图4所示:
图4
得到的训练模型中的发射矩阵的值如图5所示:
图5
三、利用前后向算法,通过计算测试数据的似然数值,对训练所得的模型进行测试。 程序运行后产生的似然对数值为loglik,结果如下图6所示:
图6
三、根据Viterbi算法,用训练产生的模型,估算出该模型下测试数据的最大可能的潜变量序列。
程序运行后产生的序列如下图7所示:
图7
5实验结果
本实验的实验结果已在实验过程中给出。
5
6实验总结及存在的问题
6.1实验总结:
1. 给定参数,完成对HMM模型的构建,并基于该模型生成数据集,用于训练与测试(80%用作训练数据,20%用作测试数据)。
2. 以上一步所产生的数据集的部分数据作为训练集,对HMM模型进行训练,生成训练参数。
3. 基于训练模型,计算测试数据集的似然对数值.
4. 给定模型参数及测试观测序列,估计潜变量最大可能序列。 6.2存在的问题:
1. 由于选取的训练集及算法本身存在的各种问题,从程序的运行结果可以看出,EM算法在若干次迭代后其最大似然对数值不再发生大的变化,而且,训练参数的结果并不十分令人满意。训练产生的发射矩阵的后三列的数值竟然为0。
2. 实验中所用选取的模型的状态数偏少,尤其是隐含变量的状态数较少,一定程序上影响了实验中训练参数的准确性。
3. 在利用viterbi算法估计模型的最大似然值时,因为潜变量的状态偏少,影响了潜变量的估计效果。
4. 实验结果很不稳定,多次运行所得的结果可能相差很大。
6