2012-09-20 104 views

回答

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 

我想你的情況下的性能測量將是模型在預測新的看不見的例子的結果時有多好。我建議你爲每個隱藏狀態數量做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) 
} 
... 

我並沒有提供更詳細的代碼的原因是爲了不弄亂的例子(因爲你沒有提供一個可重複的例子,從工作)。

+1

取決於數據集的大小和表現如何,BIC可能是一個合理的(並且在計算上更輕)的替代性能度量... –

+0

非常感謝您的明確答案。 –

+0

非常感謝您提供BIC。這非常有幫助。 –

0

通過確定經常狀態的復發分析圖可能是一種信息化的方式來近似確定初始隱藏狀態的數量。