salud reconocimiento ocultos modelos modelo habla example ejemplos bioinformatica backward algoritmo algorithm math statistics probability hidden-markov-models

algorithm - reconocimiento - ¿Cuáles son las formas de decidir las probabilidades en los modelos ocultos de Markov?



modelos ocultos de markov pdf (1)

Está buscando un algoritmo EM (maximización de las expectativas) para calcular los parámetros desconocidos a partir de conjuntos de secuencias observadas. Probablemente el más utilizado es el algoritmo de Baum-Welch , que utiliza el algoritmo de avance-retroceso .

Como referencia, aquí hay un conjunto de diapositivas que he usado anteriormente para revisar HMM. Tiene una buena visión general de Forward-Backward, Viterbi y Baum-Welch

Estoy empezando a aprender modelos ocultos de Markov y en la página wiki, así como en github hay muchos ejemplos, pero la mayoría de las probabilidades ya están ahí (70% de cambio de lluvia, 30% de posibilidades de cambiar de estado, etc.) . Los ejemplos de revisión ortográfica o oraciones, parecen estudiar libros y luego clasificar las probabilidades de las palabras.

Entonces, ¿el modelo de Markov incluye una forma de calcular las probabilidades o se supone que algún otro modelo lo precalcula?

Lo siento si esta pregunta está desactivada. Creo que es sencillo cómo el modelo de Markov oculto selecciona secuencias probables, pero la parte de probabilidad es un poco gris para mí (porque a menudo se proporciona). Ejemplos o cualquier información sería genial.

Para aquellos que no estén familiarizados con los modelos de Markov, aquí hay un ejemplo (de wikipedia) http://en.wikipedia.org/wiki/Viterbi_algorithm y http://en.wikipedia.org/wiki/Hidden_Markov_model

#!/usr/bin/env python states = (''Rainy'', ''Sunny'') observations = (''walk'', ''shop'', ''clean'') start_probability = {''Rainy'': 0.6, ''Sunny'': 0.4} transition_probability = { ''Rainy'' : {''Rainy'': 0.7, ''Sunny'': 0.3}, ''Sunny'' : {''Rainy'': 0.4, ''Sunny'': 0.6}, } emission_probability = { ''Rainy'' : {''walk'': 0.1, ''shop'': 0.4, ''clean'': 0.5}, ''Sunny'' : {''walk'': 0.6, ''shop'': 0.3, ''clean'': 0.1}, } #application code # Helps visualize the steps of Viterbi. def print_dptable(V): print " ", for i in range(len(V)): print "%7s" % ("%d" % i), print for y in V[0].keys(): print "%.5s: " % y, for t in range(len(V)): print "%.7s" % ("%f" % V[t][y]), print def viterbi(obs, states, start_p, trans_p, emit_p): V = [{}] path = {} # Initialize base cases (t == 0) for y in states: V[0][y] = start_p[y] * emit_p[y][obs[0]] path[y] = [y] # Run Viterbi for t > 0 for t in range(1,len(obs)): V.append({}) newpath = {} for y in states: (prob, state) = max([(V[t-1][y0] * trans_p[y0][y] * emit_p[y][obs[t]], y0) for y0 in states]) V[t][y] = prob newpath[y] = path[state] + [y] # Don''t need to remember the old paths path = newpath print_dptable(V) (prob, state) = max([(V[len(obs) - 1][y], y) for y in states]) return (prob, path[state]) #start trigger def example(): return viterbi(observations, states, start_probability, transition_probability, emission_probability) print example()