0

我正在尝试找到一种方法来优化 R 中隐藏马尔可夫模型 (HMM) 中的状态数。R 中的 HMM 上有许多 R 包,但我无法估计最佳隐藏状态数。感谢您的帮助。

4

2 回答 2

2

要调整隐藏状态的数量,您需要一个可能的隐藏状态数量的向量nhs和性能度量perf()(某种可以评估模型好坏的误差度量)。然后为每个隐藏状态数量构建一个模型,并选择一个给您最佳性能的模型。

这是如何执行此操作的伪代码示例。

nhs <- c(1, 2, 3, 5, 8, 11, 15)
error <- rep(NA, length(nhs))
for(i in 1:length(nhs)){
    fit <- train.HMM(data, nhs[i])
    error[i] <- perf(fit)
}
nhs[which.min(error)] # Optimal number of hidden states

我猜你的表现衡量标准是模型在预测新的看不见的例子的结果方面有多好。我建议您对每个隐藏状态的数量进行交叉验证。这些线上的东西:

...
for(i in 1:length(nhs)){
    pred <- vector("list", k)
    for(fold in 1:k){
        fit <- train.HMM(data[not.in.fold.k], nhs[i])
        pred[[fold]] <- predict(fit, data[in.fold.k])
    }
    error[i] <- perf(pred)
}
...

我没有提供更详细代码的原因是为了不使示例混乱(并且因为您没有提供可重现的示例来工作)。

于 2012-09-20T13:44:19.123 回答
0

通过确定循环状态的循环分析图可能是一种用于近似确定初始隐藏状态数量的信息化方式。

于 2015-04-25T11:29:16.620 回答