【问题标题】:R optimizing the number of states in hidden markov modelR优化隐藏马尔可夫模型中的状态数
【发布时间】:2012-09-20 11:16:30
【问题描述】:

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

【问题讨论】:

    标签: r


    【解决方案1】:

    要调整隐藏状态的数量,您需要一个可能的隐藏状态数量的向量 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
    

    我猜你的表现衡量标准是模型在预测新的看不见的例子的结果方面有多好。我建议你为每个隐藏状态数做cross validation。这些方面的内容:

    ...
    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)
    }
    ...
    

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

    【讨论】:

    • 根据数据集的规模和表现如何,BIC 可能是一种合理(且计算量更轻)的替代性能度量 ...
    • 非常感谢您推荐 BIC。这很有帮助。
    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2023-03-23
      • 1970-01-01
      • 2016-12-31
      • 1970-01-01
      • 2012-08-15
      • 2012-06-18
      • 1970-01-01
      相关资源
      最近更新 更多