我对机器学习非常陌生,我读过 Matlab 的隐马尔可夫模型统计工具箱,我想使用它对给定的信号序列进行分类。 Iv 矩阵中的 3D 坐标P
即 [501x3],我想基于它来训练模型。 Evert 完整轨迹结束于一组特定的点,即到达目标的 (0,0,0)。
根据我的场景,合适的伪代码/方法是什么。
我的伪代码:
- 501x3矩阵
P
是发射矩阵,其中每个坐标都是状态
- 随机 NxN 转换矩阵值(但我对此感到困惑)
- 使用该函数生成测试序列
hmmgenerate
- 训练使用
hmmtrain(sequence,old_transition,old_emission)
- 给出最终的转移和发射矩阵
hmmdecode
用未知序列给出概率(也令人困惑)
EDIT 1:简而言之,我想对 10 类轨迹进行分类,每类轨迹具有[501x3]
与隐马尔可夫模型。我想对 50 行进行采样,即[50x3]
为每个轨迹建立模型。然而,我murphyk's
用于此类随机序列的 HMM 工具箱。
以下是使用隐马尔可夫模型对 d 维序列进行分类的方法的概述:
1)培训:
每个班级k
:
- prepare an HMM model. This includes initializing the following:
- 转移矩阵:Q×Q 矩阵,其中 Q 是状态数
- 先验概率向量:Q×1 向量
- 发射模型:在您的情况下,观察结果是 3D 点,因此您可以使用多元正态分布(具有指定的均值向量和协方差矩阵)或高斯混合模型(使用混合系数组合的一堆 MVN 分布)
- 正确初始化上述参数后,训练 HMM 模型,为其提供属于此类的序列集(EM 算法)。
2)预测
接下来对新序列进行分类X
:
- 您使用每个模型计算序列的对数似然
log P(X|model_k)
- 然后你选择概率最高的类别。这是班级预测。
正如我在评论中提到的,统计工具箱仅实现离散观察 HMM 模型,因此您必须寻找其他库或自己实现代码。凯文·墨菲的工具箱(隐马尔可夫模型工具箱, BNT, PMTK3)是该领域的流行选择。
以下是我过去使用 Kevin Murphy 的工具箱发布的一些答案:
- 训练隐马尔可夫模型的问题和分类的使用
- BNT gaussian_CPD 的简单示例/用例
上面的答案与您在这里尝试做的有些不同,但这是一个很好的起点。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)