Dominando Modelos Ocultos de Markov com Python e GHMM
1. Dominando Modelos Ocultos de
Markov com Python e GHMM
Daker Fernandes Pinheiro
Setembro/2011, Python Brasil
2. Sobre mim...
from Petrolina-PE import Daker
Ciência da Computação CIn-UFPE
Developer Instituto Nokia de Tecnologia (IDNT)
Software Livre
KDE, Qt, Plasma, QML-Box2D, MeeGo Components, dia2code,
QMLFB, ...
GSoC: Plasma Components
PUG-PE
Nerd Power
Camisetas Brancas :-)
3. 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
4. Problemas em Biologia Computacional
Identicação de regiões de interesse no DNA
Classicação de DNA e Proteínas
Clusterização de DNA e Proteínas
Proling de DNA e Proteínas
Identicação de Anomalias
Ilhas CpG
...
5. 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
6. Problemas diversos
Classicação
Clusterização
Reconhecimento
Análise de Séries Temporais
Análise de Sequências
Geração segundo o modelo
7. Problemas Diversos
Linguagem Natural
Sinais
Música
Mineração de Dados
Aprendizagem de Máquina
Extração de Informação
8. Fair-Bet Casino
Existe um casino onde existe um jogo de apostas com moedas e um
funcionário que as lança moedas.
10. 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%
12. 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
23. GHMM
import ghmm
# Criando a l f a b e t o para r e p r e s e n t a r os
# s i m b o l o s e m i t i d o s p e l o me modelo .
emission_alphabet = ghmm. Alphabet ( [ 'H ' , 'T ' ] )
24. GHMM
# Matriz de t r a n s i c o e s :
# l i n h a s representam e s t a d o s de origem
# c o l u n a s representam e s t a d o s de d e s t i n o
# v a l o r e s da matriz representam 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
]
25. 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]
26. GHMM
# Matriz de emissao 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 emissao 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 emissao da moeda v i c i a d a
emissions_biased = [ 0 . 5 , 0 . 5 ]
emissions_probabilities = [
emissions_fair ,
emissions_biased
]
27. 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 , gau ss ia na , . . . )
ghmm. D i s c r e t e D i s t r i b u t i o n ( emission_alphabet ) ,
transitions_probabilities ,
emissions_probabilities ,
initial_states_distribution
)
28. GHMM
Resolvendo o problema do Casino
t o s s e s = [ T, T, T, H, . . . , H, T]
# XXX
sequence = ghmm. EmissionSequence ( emission_alphabet ,
tosses )
v i t er b i _ p a t h , states_prob = hmm. v i t e r b i ( sequence )
29. 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 states_prob
[[0.8407944139086141 , 0.1592055860913865] ,
[0.860787703168127 , 0.13921229683187356] , . . . ]