R中的隐马尔可夫模型(前向算法)
机器算法验证
r
隐马尔可夫模型
2022-04-05 12:56:41
1个回答
让是一个观察序列和是一个隐马尔可夫模型(HMM)。然后前向算法确定, 实现序列的可能性来自 HMM.
用更简单的英语术语......假设你训练了你的 HMM你想看看它的可能性有多大产生了一些序列. 前向算法将为您执行此操作。如果您获得相对较高的可能性,则很有可能生产. 如果你有两个 HMM和,您可能会得出结论,可能性较高的模型是解释您的最佳模型.
让我们看一些 R 代码...首先我们将初始化一个 HMM。(我从 CRAN http://cran.r-project.org/web/packages/HMM/HMM.pdf上的 HMM 手册中得到这个)....
require('HMM')
# Initialise HMM
hmm = initHMM(c("A","B"), c("L","R"), transProbs=matrix(c(.8,.2,.2,.8),2), emissionProbs=matrix(c(.6,.4,.4,.6),2))
print(hmm)
# Sequence of observations
observations = c("L","L","R","R")
这是一个 HMM,其中有 80% 的机会停留在它当时处于的任何隐藏状态当它过渡到时间. 它有两个隐藏状态 A 和 B。它发出两个观测值 L 和 R。发射概率包含在 中emissionProbs。我们存储观察序列在observations.
logForwardProbabilities = forward(hmm,observations)
forwardProbabilities = exp(logForwardProbabilities)
forwardProbabilities现在是一个矩阵,包含实现观察序列的概率并最终进入状态. 隐藏状态在行和时间在列中。如果我们想要整个序列的概率,我们使用第 4 列,因为它是最后一个时间步长。得到的 2 元素行向量包含以 A 结尾和以 B 结尾的概率。它们的总和是实现的总概率.
finalAnswer = sum(forwardProbabilities[,4])
其它你可能感兴趣的问题