Dominando Modelos Ocultos deMarkov com Python e GHMMDaker Fernandes Pinheiro
Setembro/2011, Python Brasil
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 :-)
Senta que lá vem história
Processamento de Sequências Biológicas e Metodos e Algoritmos emBiologia Computacional - 2011.1
Prof. Ivan Gesteira
DNA, RNA
Proteínas
Modelos Ocultos de Markov
Problemas em Biologia Computacional
Identi�cação de regiões de interesse no DNA
Classi�cação de DNA e Proteínas
Clusterização de DNA e Proteínas
Pro�ling de DNA e Proteínas
Identi�cação de Anomalias
Ilhas CpG
...
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
Problemas diversos
Classi�cação
Clusterização
Reconhecimento
Análise de Séries Temporais
Análise de Sequências
Geração segundo o modelo
Problemas Diversos
Linguagem Natural
Sinais
Música
Mineração de Dados
Aprendizagem de Máquina
Extração de Informação
Fair-Bet Casino
Existe um casino onde existe um jogo de apostas com moedas e umfuncionário que as lança moedas.
Fair-Bet Casino
Cada moeda pode assumir dois valores:
Cara (H)
Coroa (T)
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%
Fair-Bet Casino
Grafo de emissões:
Fair-Bet Casino
Esse funcionário sempre usa uma das duas moedas. Mas podetrocá-las com 10% das vezes que vai fazer um novo sorteio.
Estados
Transições
Fair-Bet Casino
Grafo de transições de estados:
Fair-Bet Casino
O funcionário começa com qualquer uma das moedas com igualprobabilidade.
Fair-Bet Casino
Transições do estado inicial:
Fair-Bet Casino
Modelo completo:
Problema
Imagine que você é um apostador
Problema
Dada uma sequência de lançamentos:
T, T, T, H, T, H, H, T, T, H, H, T, H, T, H, H, H, H, T, T, H, T, H,T, H, H, H, T, H, H, H, H, H, T, H, H, T, H, H, H, T, H, T
Quais moedas o lançador estava utilizando em cada momento?
Solução
Não existe solução extata! Mas...
Solução
Probabilidades a posteriori
Dado uma sequência, quais as probabilidades de estar em cada modelo
+Viterbi
Biblioteca:
General Hidden Markov Model (GHMM)
+ Biopython (Cenas de um próximo capítulo)
GHMM
Biblioteca C++
HMMs + Algoritmos
Binding Python
GHMM
import ghmm
# Criando a l f a b e t o para r ep r e s en t a r os# s imbolos emit idos pe lo me modelo .
emiss ion_alphabet = ghmm. Alphabet ( [ 'H ' , 'T ' ] )
GHMM
# Matriz de t r a n s i c o e s :# l i nha s representam estados de origem# colunas representam estados de de s t i no# va l o r e s da matr iz representam a# probab i l i dade da t r an s i c a o de es tados#t r a n s i t i o n s_p r o b a b i l i t i e s = [
[ 0 . 9 , 0 . 1 ] , # 0 : estado de ju s t o[ 0 . 1 , 0 . 9 ] , # 1 : estado v i c i ado
]
GHMM
# probab i l i dade s de comecar em H e Ti n i t i a l_ s t a t e s_d i s t r i b u t i o n = [ 0 . 5 , 0 . 5 ]
GHMM
# Matriz de emissao de s imbolos
# 0 : p robab i l i dade s de emissao da moeda ju s t aemi s s i on s_ fa i r = [ 0 . 5 , 0 . 5 ]# 1 : p robab i l i dade s de emissao da moeda v i c i adaemiss ions_biased = [ 0 . 5 , 0 . 5 ]
em i s s i o n s_p robab i l i t i e s = [emi s s i ons_fa i r ,emiss ions_biased
]
GHMM
# Criando Modelo Oculto de Markovhmm = ghmm.HMMFromMatrices (
# Al fabetoemiss ion_alphabet ,# Tipo de d i s t r i b u i c a o ( d i s c r e t a , gauss iana , . . . )ghmm. D i s c r e t eD i s t r i bu t i o n ( emiss ion_alphabet ) ,t r a n s i t i o n s_p r ob ab i l i t i e s ,em i s s i on s_probab i l i t i e s ,i n i t i a l_ s t a t e s_d i s t r i b u t i o n
)
GHMM
Resolvendo o problema do Casino
t o s s e s = [T, T, T, H, . . . , H, T]
# XXXsequence = ghmm. EmissionSequence ( emiss ion_alphabet ,
t o s s e s )
v iterbi_path , states_prob = hmm. v i t e r b i ( sequence )
GHMM
Resolvendo o problema do Casino
>>> pr in t ( v i te rb i_path )[ 0 , 0 , 0 , 0 , . . . , 1 , 1 , 1 , 1 , 1 ]
>>> pr in t states_prob[ [ 0 . 8407944139086141 , 0 .1592055860913865 ] ,[ 0 .860787703168127 , 0 .13921229683187356 ] , . . . ]
Fair-Bet Casino
Probabilidades a posteriori:
Algoritmos
Geração de sequências
Emissão com distribuições Gaussianas
Baum Welch
Agradecimentos
INDT
CIn - UFPE
Prof. Ivan Gesteira
Python Brasil
Vocês!
Dúvidas?
Twitter: @dakerfp
E-mail: [email protected]
Freenode: dakerfp
Blog: http://codecereal.blogspot.com
Blog: http://blog.qtlabs.org.br
Blog: http://aimotion.blogspot.com
Gitorious: http://gitorious.org/ dakerfp
Github: http://github.com/dakerfp
GHMM: http://ghmm.org
Top Related