Esta página aún no se ha traducido para esta versión. Puede ver la versión más reciente de esta página en inglés.

Modelos de Markov ocultos (HMM)

Introducción a los modelos de Markov ocultos (HMM)

A (HMM) es uno en el que se observa una secuencia de emisiones, pero no se sabe la secuencia de Estados que el modelo pasó a través de generar las emisiones.modelo oculto de Markov Los análisis de los modelos ocultos de Markov buscan recuperar la secuencia de Estados a partir de los datos observados.

Como ejemplo, considere un modelo de Markov con dos Estados y seis posibles emisiones. El modelo utiliza:

  • Un muerto rojo, que tiene seis lados, etiquetados de 1 a 6.

  • Un muerto verde, que tiene doce lados, cinco de los cuales están etiquetados 2 a 6, mientras que los restantes siete lados están etiquetados 1.

  • Una moneda roja ponderada, para la que la probabilidad de cabezas es .9 y la probabilidad de colas es. 1.

  • Una moneda verde ponderada, para la que la probabilidad de cabezas es. 95 y la probabilidad de colas es. 05.

El modelo crea una secuencia de números del conjunto {1, 2, 3, 4, 5, 6} con las siguientes reglas:

  • Empiece por rodar el troquel rojo y anotar el número que aparece, que es la emisión.

  • Tire la moneda roja y realice una de las siguientes acciones:

    • Si el resultado es cabezas, enrolle el troquel rojo y anote el resultado.

    • Si el resultado es Cruz, enrolle el muerto verde y anote el resultado.

  • En cada paso subsiguiente, voltea la moneda que tiene el mismo color que el troquel que rodó en el paso anterior. Si la moneda sube cabezas, rodar el mismo morir como en el paso anterior. Si la moneda sube a la cola, cambia al otro muerto.

El diagrama de estado de este modelo tiene dos Estados, rojo y verde, como se muestra en la figura siguiente.

Usted determina la emisión de un estado enrollando el troquel con el mismo color que el estado. Usted determina la transición al estado siguiente al voltear la moneda con el mismo color que el estado.

La matriz de transición es:

T=[0.90.050.10.95]

La matriz de emisiones es:

E=[161616161616712112112112112112]

El modelo no está oculto porque conoces la secuencia de los Estados de los colores de las monedas y los dados. Suponga, sin embargo, que alguien más está generando las emisiones sin mostrarle los dados o las monedas. Todo lo que ves es la secuencia de emisiones. Si usted comienza a ver más 1S que otros números, usted puede sospechar que el modelo está en el estado verde, pero usted no puede estar seguro porque usted no puede ver el color del troquel que es enrollado.

Los modelos de Markov ocultos plantean las siguientes preguntas:

  • Dada una secuencia de emisiones, ¿cuál es la ruta de estado más probable?

  • Dada una secuencia de emisiones, ¿cómo puede estimar las probabilidades de transición y emisión del modelo?

  • ¿Cuál es el que el modelo genera una secuencia dada?forward probability

  • ¿Cuál es el que el modelo está en un estado determinado en cualquier momento de la secuencia?probabilidad posterior

Análisis de modelos de Markov ocultos

funciones relacionadas con los modelos ocultos de Markov son:Statistics and Machine Learning Toolbox™

  • : Genera una secuencia de Estados y emisiones a partir de un modelo de Markovhmmgenerate

  • — Calcula las estimaciones de máxima verosimilitud de las probabilidades de transición y emisión a partir de una secuencia de emisiones y una secuencia conocida de Estadoshmmestimate

  • — Calcula las estimaciones de máxima verosimilitud de las probabilidades de transición y emisión de una secuencia de emisioneshmmtrain

  • : Calcula la ruta de estado más probable para un modelo de Markov ocultohmmviterbi

  • — Calcula las probabilidades de estado posterior de una secuencia de emisioneshmmdecode

En esta sección se muestra cómo utilizar estas funciones para analizar modelos de Markov ocultos.

Generar una secuencia de prueba

Los siguientes comandos crean las matrices de transición y emisión para el modelo descrito en:Introducción a los modelos de Markov ocultos (HMM)

TRANS = [.9 .1; .05 .95];  EMIS = [1/6, 1/6, 1/6, 1/6, 1/6, 1/6;... 7/12, 1/12, 1/12, 1/12, 1/12, 1/12];

Para generar una secuencia aleatoria de Estados y emisiones del modelo, utilice:hmmgenerate

[seq,states] = hmmgenerate(1000,TRANS,EMIS);

La salida es la secuencia de emisiones y la salida es la secuencia de Estados.seqEstados

comienza en el estado 1 en el paso 0, hace la transición al estadohmmgeneratei1 en el paso 1 y devuelvei1 como la primera entrada en.Estados Para cambiar el estado inicial, consulte.Cambiar la distribución de estado inicial

Estimar la secuencia de estado

Dadas las matrices de transición y emisión y, la función utiliza el algoritmo de Viterbi para calcular la secuencia más probable de Estados que pasaría el modelo para generar una secuencia dada de emisiones:TRANSEMIShmmviterbiseq

likelystates = hmmviterbi(seq, TRANS, EMIS);

es una secuencia de la misma longitud que.likelystatesseq

Para probar la precisión de, calcule el porcentaje de la secuencia real que está de acuerdo con la secuencia.hmmviterbiEstadoslikelystates

sum(states==likelystates)/1000 ans =    0.8200

En este caso, la secuencia más probable de Estados está de acuerdo con la secuencia aleatoria del 82% de las veces.

Estimación de matrices de transición y emisión

Las funciones y estimar las matrices de transición y emisión y dada una secuencia de emisiones.hmmestimatehmmtrainTRANSEMISseq

Utilizando hmmestimate.  La función requiere que conozca la secuencia de Estados que el modelo fuehmmestimateEstados a través de generar.seq

Lo siguiente toma las secuencias de emisión y estado y las estimaciones de devoluciones de las matrices de transición y emisión:

[TRANS_EST, EMIS_EST] = hmmestimate(seq, states)  TRANS_EST = 0.8989    0.1011 0.0585    0.9415  EMIS_EST = 0.1721    0.1721    0.1749    0.1612    0.1803    0.1393 0.5836    0.0741    0.0804    0.0789    0.0726    0.1104

Puede comparar las salidas con las matrices de transición y emisión originales y:TRANSEMIS

TRANS TRANS = 0.9000    0.1000 0.0500    0.9500  EMIS EMIS = 0.1667    0.1667    0.1667    0.1667    0.1667    0.1667 0.5833    0.0833    0.0833    0.0833    0.0833    0.0833

Usando hmmtrain.  Si usted no conoce la secuencia de los Estados, pero usted tiene conjeciones iniciales para y, usted puede todavía estimar y utilizar.EstadosTRANSEMISTRANSEMIShmmtrain

Supongamos que tiene las siguientes conjeciones iniciales para y.TRANSEMIS

TRANS_GUESS = [.85 .15; .1 .9]; EMIS_GUESS = [.17 .16 .17 .16 .17 .17;.6 .08 .08 .08 .08 08];

Usted estima y como sigue:TRANSEMIS

[TRANS_EST2, EMIS_EST2] = hmmtrain(seq, TRANS_GUESS, EMIS_GUESS)  TRANS_EST2 = 0.2286    0.7714 0.0032    0.9968  EMIS_EST2 = 0.1436    0.2348    0.1837    0.1963    0.2350    0.0066 0.4355    0.1089    0.1144    0.1082    0.1109    0.1220

utiliza un algoritmo iterativo que altera las matrices y de modo que en cada paso las matrices ajustadas son más propensas a generar la secuencia observada,.hmmtrainTRANS_GUESSEMIS_GUESSseq El algoritmo se detiene cuando las matrices en dos iteraciones sucesivas están dentro de una pequeña tolerancia entre sí.

Si el algoritmo no logra alcanzar esta tolerancia dentro de un número máximo de iteraciones, cuyo valor predeterminado es, el algoritmo se detiene.100 En este caso, devuelve los últimos valores de y y emite una advertencia de que no se alcanzó la tolerancia.hmmtrainTRANS_ESTEMIS_EST

Si el algoritmo no puede alcanzar la tolerancia deseada, aumente el valor predeterminado del número máximo de iteraciones con el comando:

hmmtrain(seq,TRANS_GUESS,EMIS_GUESS,'maxiterations',maxiter)

donde está el número máximo de pasos que el algoritmo ejecuta.maxiter

Cambie el valor predeterminado de la tolerancia con el comando:

hmmtrain(seq, TRANS_GUESS, EMIS_GUESS, 'tolerance', tol)

donde se encuentra el valor deseado de la tolerancia.tol Aumentar el valor de hace que el algoritmo se detenga antes, pero los resultados son menos precisos.tol

Dos factores reducen la confiabilidad de las matrices de salida de:hmmtrain

  • El algoritmo converge a un máximo local que no representa las verdaderas matrices de transición y emisión. Si sospecha esto, utilice diferentes conjeciones iniciales para las matrices y.TRANS_ESTEMIS_EST

  • La secuencia puede ser demasiado corta para entrenar correctamente las matrices.seq Si sospecha esto, utilice una secuencia más larga para.seq

Estimar las probabilidades de estado posterior

Las probabilidades de estado posterior de una secuencia de emisión son las probabilidades condicionales de que el modelo se encuentra en un estado determinado cuando genera un símbolo, dado que se emite.seqseqseq Computa las probabilidades de estado posterior con:hmmdecode

PSTATES = hmmdecode(seq,TRANS,EMIS)

La salida es una-por-matriz, donde es el número de Estados y es la longitud de. es la probabilidad condicional de que el modelo está en estado cuando genera el símbolo TH de, dado que se emite.PSTATESMLMLseqPSTATES(i,j)ijseqseq

comienza con el modelo en el estado 1 en el paso 0, antes de la primera emisión. es la probabilidad de que el modelo esté en estado i en el siguiente paso 1.hmmdecodePSTATES(i,1) Para cambiar el estado inicial, consulte.Cambiar la distribución de estado inicial

Para devolver el logaritmo de la probabilidad de la secuencia, utilice el segundo argumento de salida de:seqhmmdecode

[PSTATES,logpseq] = hmmdecode(seq,TRANS,EMIS) 

La probabilidad de una secuencia tiende a 0 a medida que aumenta la longitud de la secuencia, y la probabilidad de una secuencia suficientemente larga se convierte en menor que el número positivo más pequeño que el equipo puede representar. Devuelve el logaritmo de la probabilidad para evitar este problema.hmmdecode

Cambiar la distribución de estado inicial

De forma predeterminada, las funciones del modelo de Markov ocultas comienzan en el estado 1.Statistics and Machine Learning Toolbox En otras palabras, la distribución de los Estados iniciales tiene toda su masa de probabilidad concentrada en el estado 1. Para asignar una distribución diferente de probabilidades, = [pp1,p2, ...,pM], a los Estados iniciales, haga lo siguiente:M

  1. Cree una M+1-by-M+1 matriz de transición aumentada, T^ de la siguiente forma:

    T^=[0p0T]

    donde está la verdadera matriz de transición.T La primera columna de T^ contiene + 1 ceros. debe sumar 1.Mp

  2. Cree una matriz de emisión +1-by-Augmented,MN E^, que tiene la siguiente forma:

    E^=[0E]

Si las matrices de transición y emisión son y, respectivamente, crea las matrices aumentadas con los siguientes comandos:TRANSEMIS

TRANS_HAT = [0 p; zeros(size(TRANS,1),1) TRANS];  EMIS_HAT = [zeros(1,size(EMIS,2)); EMIS];

Consulte también

| | | |

Temas relacionados