如何通过 HMM 对路径进行排名?

数据挖掘 算法 马尔科夫过程
2022-02-19 10:27:28

我有一个配置文件隐藏马尔可夫模型,我用它来识别一长串符号中用户定义的符号模式的所有实例。我使用维特比算法来找到生成长符号序列的最可能路径,并且这一切都很好地识别了用户的模式。但我现在有兴趣扩展它,并通过我的模型确定 k 最可能的路径,这些路径会生成一些长序列。是否有现有的算法可以做到这一点?我遇到了一种叫做“1-best”或“k-best”算法的东西,但我找不到任何描述它的东西。

我还考虑了我确定的启发式方法,即找到最可能的路径,然后返回它周围的邻域。这可以通过迭代最可能路径中状态之间的每个移动、将该特定步骤设置为 0 并使用 Viterbi 解决来找到。这显然会使运行时间增加(路径长度〜=模式长度)的一个因素,我怀疑这对我的目的来说是合理的。

有没有人遇到过这样的事情,或者有人能看出我的邻居想法有什么明显的错误吗?我会很感激任何反馈。作为说明,这已被交叉发布到理论计算机科学论坛。

1个回答

使用对数概率,然后使用 k 最短路径。

路径的概率是其边缘概率的乘积。如果您对所有内容进行对数转换(以便每条边都用概率的对数而不是概率本身进行注释),则路径的对数概率变为边上的对数概率之和。

现在您想通过降低对数概率对路径进行排名,并找到k具有最高对数概率的路径。请注意,路径的对数概率只是路径的长度(边缘长度的总和)。

因此,问题变成:给定一个图,每条边都有一个长度,找到k最短路径。

有有效的算法来找到k最短路径。参见例如https://cstheory.stackexchange.com/a/32501/5038