我如此理解HMM,但没有很好地训练它。在我的案例中,我无法弄清楚我应该如何设置培训和测试。我将解释我的问题。
我正在使用Foursquare签到数据集来建模HMM以预测用户的下一个场地类别(我假设它是转发算法)。
首先,我将报告这些签到的区域划分为六边形网格。假设有200个六边形。这些六边形是我隐藏的状态。然后,我通过及时利用用户的十六进制访问次序来计算这些十六进制单元的转移概率。转换矩阵为200x200。
其次,我通过计算每个单元格中每个类别的数量来计算排放概率。共有9个场地类别。因此,发射矩阵是200x9。
第三,通过查看每个类别中签到的分布来计算开始概率。
即:
states = ('hex1', 'hex2', ..., 'hex200')
observations = ('category1', 'category2', ..., 'category9')
直到这一刻,一切都还好。但是,如果我知道他/她之前定位的十六进制和类别,我想预测用户的下一个类别。
我想训练我的模型,然后测试它,并根据模型显示我的预测的准确性。为此,模型应该用什么样的序列进行训练?我无法意识到我如何预测下一个类别,更重要的是,我如何设置模型以执行期望最大化。任何帮助我的努力将不胜感激。如果您想将这些解释为代码示例,可以使用伪或MATLAB编写。此外,口头解释是可以的。