/HMM

Primary LanguagePython

HMM

模型定义

模型参数生成

给定状态空间数目S,输出空间数目M

初始状态pi生成:随机生成长度为S的元组,对pi进行处理,使得该元组各元素和为1。

状态转移矩阵A生成:随机生成大小为(S,S)矩阵A,对A中每一行进行处理,使得每一行和为1。

发射矩阵B生成:随机生成大小为(S,M)矩阵B,对B中每一行进行处理,使得每一行和为1。

数据生成

给定初始状态pi,状态转移矩阵A,发射矩阵B,观测数据长度l,样本数目n

(1) 按照pi中分布,选取初始状态i

(2) 根据发射矩阵B中状态i对应输出分布,选取初始观测数据o1

(3) 根据状态转移矩阵A分布,选取下一状态i

(4) 跳转步骤(2),直至观测数据长度为l

(5) 跳转步骤(1),直至采样n个样本

实验设计

定义参数:状态空间数目S,观测状态数目M,观测样本长度l,观测样本数目n

首先随机生成初始状态分布pi,状态转移矩阵A,发射矩阵B,以及长度为n的观测样本集合O。

对O中样本以7:3比例划分训练集测试集,使用Baum-Welch模型估计参数。

任务(1):根据观测样本集合O,预测给定观测序列下一时刻观测数据;

将测试集中前9个数据作为观测数据,最后一个数据作为预测数据,使用accuracy作为评价指标。

任务(2):根据观测样本集合O,预测给定观测序列对应的潜状态序列。

使用Viterbi算法,对测试集中每组观测样本计算可能的潜状态序列,使用accuracy作为评价指标。