Este documento discute modelos ocultos de Markov (HMMs) e sua aplicação em problemas de biologia computacional. HMMs são modelos probabilísticos que podem ser usados para análise de séries e sequências. A biblioteca GHMM implementa HMMs em Python e é usada para resolver problemas como classificação, clusterização e reconhecimento de padrões em sequências biológicas.
1. Dominando Modelos Ocultos de
Markov com Python e GHMM
Daker Fernandes Pinheiro
Setembro/2011, Python Brasil
2. Senta que lá vem história
Processamento de Sequências Biológicas e Metodos e Algoritmos em
Biologia Computacional - 2011.1
Prof. Ivan Gesteira
DNA, RNA
Proteínas
Modelos Ocultos de Markov
3. Problemas em Biologia Computacional
Identificação de regiões de interesse no DNA
Classificação de DNA e Proteínas
Clusterização de DNA e Proteínas
Profiling de DNA e Proteínas
Identificação de Anomalias
Ilhas CpG
...
4. Modelos Ocultos de Markov
Ou Hidden Markov Models (HMMs)
Modelo Matemático
Probabilístico
Análise de Séries e Sequências
Estados internos vs. Comportamento
5. Problemas diversos
Classificação
Clusterização
Reconhecimento
Análise de Séries Temporais
Análise de Sequências
Geração segundo o modelo
6. Problemas Diversos
Linguagem Natural
Sinais
Música
Mineração de Dados
Aprendizagem de Máquina
Extração de Informação
7. Fair-Bet Casino
Existe um casino onde existe um jogo de apostas com moedas e um
funcionário que as lança moedas.
9. Fair-Bet Casino
O funcionário tem duas moedas:
Uma moeda Justa: que pode dar como resultado (emite símbolos)
com a seguinte distribuição
Cara com probabilidade 50%
Coroa com probabilidade 50%
Uma moeda Viciada:
Cara com probabilidade 75%
Coroa com probabilidade 25%
11. Fair-Bet Casino
Esse funcionário sempre usa uma das duas moedas. Mas pode
trocá-las com 10% das vezes que vai fazer um novo sorteio.
Estados
Transições
22. GHMM
import ghmm
# Criando a l f a b e t o para r e p r e s e n t a r o s
# s i m b o l o s e m i t i d o s p e l o me modelo .
e m i s s i o n _ a l p h a b e t = ghmm. Alphabet ( [ ’H ’ , ’T ’ ] )
23. GHMM
# Matriz de t r a n s i c o e s :
# l i n h a s r e p r e s e n t a m e s t a d o s de origem
# c o l u n a s r e p r e s e n t a m e s t a d o s de d e s t i n o
# v a l o r e s da m a t r i z r e p r e s e n t a m a
# p r o b a b i l i d a d e da t r a n s i c a o de e s t a d o s
#
transitions_probabilities = [
[ 0 . 9 , 0 . 1 ] , # 0 : e s t a d o de j u s t o
[ 0 . 1 , 0 . 9 ] , # 1: estado viciado
]
24. GHMM
# p r o b a b i l i d a d e s de comecar em H e T
initial_states_distribution = [0.5 , 0.5]
25. GHMM
# Matriz de e m i s s a o de s i m b o l o s
# 0 : p r o b a b i l i d a d e s de e m i s s a o da moeda j u s t a
emissions_fair = [0.5 , 0.5]
# 1 : p r o b a b i l i d a d e s de e m i s s a o da moeda v i c i a d a
emissions_biased = [ 0 . 5 , 0 . 5 ]
emissions_probabilities = [
emissions_fair ,
emissions_biased
]
26. GHMM
# Criando Modelo Oculto de Markov
hmm = ghmm. HMMFromMatrices (
# Alfabeto
emission_alphabet ,
# Tipo de d i s t r i b u i c a o ( d i s c r e t a , g a u s s i a n a , . . . )
ghmm. D i s c r e t e D i s t r i b u t i o n ( e m i s s i o n _ a l p h a b e t ) ,
transitions_probabilities ,
emissions_probabilities ,
initial_states_distribution
)
27. GHMM
Resolvendo o problema do Casino
t o s s e s = [ T, T, T, H, . . . , H, T ]
# XXX
s e q u e n c e = ghmm. Em i s s i o n S e q u e n c e ( e m i s s i o n _ a l p h a b e t ,
tosses )
v i t e r b i _ p a t h , s t a t e s _ p r o b = hmm. v i t e r b i ( s e q u e n c e )
28. GHMM
Resolvendo o problema do Casino
>>> p r i n t ( v i t e r b i _ p a t h )
[0 , 0 , 0 , 0 , . . . , 1 , 1 , 1 , 1 , 1]
>>> p r i n t s t a t e s _ p r o b
[[0.8407944139086141 , 0.1592055860913865] ,
[0.860787703168127 , 0.13921229683187356] , . . . ]