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 oculto (HMM)

A (HMM) es aquel en el que se observa una secuencia de emisiones, pero no se conoce la secuencia de estados por los que pasó el modelo para generar las emisiones.modelo oculto Markov Los análisis de los modelos ocultos de Markov buscan recuperar la secuencia de estados de los datos observados.

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

  • Un dado rojo, con seis lados, etiquetados del 1 al 6.

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

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

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

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

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

  • Revuelve la moneda roja y realiza una de las siguientes acciones:

    • Si el resultado es cabezas, rodar el dado rojo y anotar el resultado.

    • Si el resultado es colas, enrolle el dado verde y anote el resultado.

  • En cada paso posterior, volteas la moneda que tiene el mismo color que el dado que lanzaste en el paso anterior. Si la moneda sube cabezas, rodar el mismo dado que en el paso anterior. Si la moneda sube de cola, cambia a la otra morir.

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 rodando el troquel con el mismo color que el estado. La transición al siguiente estado se determina volteando 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 estados de los colores de las monedas y dados. Supongamos, 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 empieza a ver más 1s que otros números, es posible que sospeche que el modelo está en estado verde, pero no puede estar seguro porque no puede ver el color del dado que se está rodando.

Los modelos ocultos de Markov 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 emisiones del modelo?

  • ¿Cuál es el modelo que el modelo genera una secuencia determinada?probabilidad de avance

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

Análisis de modelos Markov ocultos

las 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 Markovhmmgenerate

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

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

  • — Calcula la ruta de estado más probable para un modelo markov ocultohmmviterbi

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

Esta sección muestra cómo utilizar estas funciones para analizar modelos Markov ocultos.

Generación de 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 oculto (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 a partir 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.seqstates

comienza en el estado 1 en el paso 0, hace la transición al estadohmmgeneratei1 en el paso 1, y regresai1 como la primera entrada en .states Para cambiar el estado inicial, consulte .Cambio de la distribución inicial del estado

Estimación de la secuencia estatal

Dada la transición y las matrices de emisiones y , la función utiliza el algoritmo Viterbi para calcular la secuencia más probable de estados por los que pasaría el modelo para generar una secuencia determinada 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.hmmviterbistateslikelystates

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

En este caso, la secuencia más probable de estados está de acuerdo con la secuencia aleatoria 82% del tiempo.

Estimación de matrices de transición y emisiones

Las funciones y estiman las matrices de transición y emisión y se les da una secuencia de emisiones.hmmestimatehmmtrainTRANSEMISseq

Usandohmmestimate.  La función requiere que conozca la secuencia de estados en los que el modelo fuehmmestimatestates a través de generar .seq

A continuación se presentan las secuencias de emisión y estado y las estimaciones de retornos 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

Usandohmmtrain.  Si no conoce la secuencia de estados, pero tiene conjeturas iniciales para y , todavía puede estimar y utilizar .statesTRANSEMISTRANSEMIShmmtrain

Supongamos que tiene las siguientes conjeturas 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 de la siguiente manera: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 para que en cada paso las matrices ajustadas sean más propensas a generar la secuencia observada, .hmmtrainTRANS_GUESSEMIS_GUESSseq El algoritmo se detiene cuando las matrices de dos iteraciones sucesivas están dentro de una pequeña tolerancia entre sí.

Si el algoritmo no alcanza 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 emite una advertencia de que no se ha alcanzado la tolerancia.hmmtrainTRANS_ESTEMIS_EST

Si el algoritmo no alcanza 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 ejecuta el algoritmo.maxiter

Cambie el valor predeterminado de la tolerancia con el comando:

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

donde está 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 fiabilidad 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 conjeturas 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

Estimación de las probabilidades de estado posterior

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

PSTATES = hmmdecode(seq,TRANS,EMIS)

La salida es una matriz -by-, donde está 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 el estado i en el siguiente paso 1.hmmdecodePSTATES(i,1) Para cambiar el estado inicial, consulte .Cambio de la distribución inicial del estado

Para devolver el logarithm 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 es menor que el número positivo más pequeño que el equipo puede representar. devuelve el logarithm de la probabilidad de evitar este problema.hmmdecode

Cambio de la distribución inicial del estado

De forma predeterminada, las funciones ocultas del modelo Markov 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 las probabilidades, [pp1, p2, ..., pM], a los estados iniciales, haga lo siguiente:M

  1. Crear un 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 a 1.Mp

  2. Cree una matriz de emisiones aumentadas +1 por aumento,MN E^, que tiene la siguiente forma:

    E^=[0E]

Si las matrices de transición y emisión son y , respectivamente, se crean 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