Quiero usar BIC para la selección del modelo HMM:
BIC = -2*logLike + num_of_params * log(num_of_data)
Entonces, ¿cómo cuento el número de parámetros en el modelo HMM? Considere un simple HMM de 2 estados, donde tenemos los siguientes datos:
data = [1 2 1 1 2 2 2 1 2 3 3 2 3 2 1 2 2 3 4 5 5 3 3 2 6 6 5 6 4 3 4 4 4 4 4 4 3 3 2 2];
model = hmmFit(data, 2, 'discrete');
model.pi = 0.6661 0.3339;
model.A =
0.8849 0.1151
0.1201 0.8799
model.emission.T =
0.2355 0.5232 0.2259 0.0052 0.0049 0.0053
0.0053 0.0449 0.2204 0.4135 0.1582 0.1578
logLike = hmmLogprob(model,data);
logLike = -55.8382
Por eso pienso:
Nparams = size(model.A,2)*(size(model.A,2)-1) +
size(model.pi,2)-1) +
size(model.emission.T,1)*(size(model.emission.T,2)-1)
Nparams = 13
Entonces al final tenemos:
BIC = -2*logLike + num_of_params*log(length(x))
BIC = 159.6319
He encontrado una solución donde la fórmula para num_of_params
(para el modelo simple de Markov) se ve así:
Nparams = Num_of_states*(Num_of_States-1) - Nbzeros_in_transition_matrix
Entonces, ¿cuál es la solución correcta? ¿Tengo que tener en cuenta algunas probabilidades cero en las matrices de transición o emisión?
==== Actualizado desde el 15.07.2011 ====
Creo que puedo proporcionar algunas aclaraciones sobre el impacto de la dimensión de datos (usando el ejemplo de "distribución de mezcla gaussiana")
X es una matriz n-por-d donde (n-filas corresponden a observaciones; d-columnas corresponden a variables (Ndimensiones).
X=[3,17 3,43
1,69 2,94
3,92 5,04
1,65 1,79
1,59 3,92
2,53 3,73
2,26 3,60
3,87 5,01
3,71 4,83
1,89 3,30 ];
[n d] = size(X);
n = 10; d =2;
El modelo tendrá el siguiente número de parámetros para GMM:
nParam = (k_mixtures – 1) + (k_mixtures * NDimensions ) + k_mixtures * Ndimensions %for daigonal covariance matrices
nParam = (k_mixtures – 1) + (k_mixtures * NDimensions ) + k_mixtures * NDimensions * (NDimensions+1)/2; %for full covariance matrices
Si tratamos a X como datos unidimensionales , entonces los tenemos num_of_data = (n*d)
para los datos bidimensionales que tenemos num_of_data = n
.
Datos bidimensionales : nParam = 11; logLike = -11.8197; BIC = 1.689
Datos unidimensionales : nParam = 5; logLike = -24.8753; BIC = -34.7720
Tengo muy poca práctica con HMM. ¿Es normal tener HMM con (5000, 6000 y más parámetros)?
Respuestas:
La pregunta es si algunos de sus parámetros en la matriz de transición y / o matriz de emisión son fijos para comenzar. Sus cálculos (del número de parámetros) parecen correctos. Si por alguna razón desea un modelo de 3 estados en lugar de un modelo de 2 estados y decide por adelantado que las transiciones del estado 1 al 3 y del 3 al 1 no están permitidas (tienen probabilidad 0), debería tener esto en cuenta en el cálculo de El número de parámetros.
fuente
size(data)
será 2x100Cuando estamos calculando el número de parámetros libres en el BIC de selección de modelo, esto significa que es simplemente el número de ceros en las matrices de transición y emisión. Por ejemplo, cuando hay un cero en la matriz de transición, esto significa que no hay probabilidad de que un determinado estado se mueva al siguiente (como lo define la matriz de transición). Así es como BIC selecciona el estado óptimo de un HMM. Sin embargo, obtener el no de parámetros libres simplemente usando el tamaño de las matrices iniciales, de transición y de emisión es confuso
fuente