Número de parámetros en el modelo de Markov

12

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)?

Sergey
fuente
¿Tienes una justificación para usar BIC? Puede dar resultados terriblemente incorrectos si no con los supuestos apropiados.
suncoolsu
@suncoolsu, ¿Qué quieres decir con justificación? He encontrado algunos ejemplos de selección de K-clusters (modelos GMM) basados ​​en la puntuación BIC. Probablemente he proporcionado un ejemplo incorrecto al comparar dos modelos con diferentes datos de entrada (dimensiones).
Sergey
1
Me refería a usar BIC solo si la suposición, el verdadero modelo está en el espacio modelo , está justificada. Puede estar justificado en su caso. Estoy de acuerdo con usted en que las personas usan BIC como AIC, ¡pero ambas son cosas muy diferentes!
suncoolsu
Hola, este es un comentario tardío y espero que sigas activo, pero ¿cuál es la mejor manera de obtener la cantidad de parámetros en un modelo?
masfenix

Respuestas:

7

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.

NRH
fuente
¿Tengo que tener en cuenta la dimensión de datos? ¿Y si size(data)será 2x100
Sergey
@Sergey, solo miré el cálculo del número de parámetros en mi respuesta. Para completar, también debería haber considerado cómo calcular el "tamaño" del conjunto de datos, ya que está interesado en BIC. Para ser honesto, solo he visto una derivación de BIC para datos independientes, pero supongo que el "tamaño" correcto de los datos es la longitud de la serie de datos. No estoy seguro de lo que quieres decir con el tamaño de 2x100. Si desea comentar sobre eso, debe proporcionar una descripción más precisa de cómo se codifican los datos como una matriz de 2 por 100.
NRH
Gracias por la respuesta, creo que entiendo el impacto de la dimensión de datos en BIC, mira mi actualización
Sergey
¿Tengo que disminuir el número de parámetros en el modelo HMM izquierda-derecha (Bakis) (con matriz de transición triangular)? ¿Es normal tener HMM con (5000, 6000 y más parámetros)?
Sergey
4

Cuando 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

jebsam
fuente