Python e Cadeias de Markov GHMM

32
Dominando Modelos Ocultos de Markov com Python e GHMM Daker Fernandes Pinheiro Setembro/2011, Python Brasil

description

Palestra ministrada por Daker Fernandes durante o XVI Encontro do PUG-PE.

Transcript of Python e Cadeias de Markov GHMM

Page 1: Python e Cadeias de Markov GHMM

Dominando Modelos Ocultos deMarkov com Python e GHMMDaker Fernandes PinheiroSetembro/2011, Python Brasil

Page 2: Python e Cadeias de Markov GHMM

Senta que lá vem história

Processamento de Sequências Biológicas e Metodos e Algoritmos emBiologia Computacional - 2011.1

Prof. Ivan GesteiraDNA, RNAProteínasModelos Ocultos de Markov

Page 3: Python e Cadeias de Markov GHMM

Problemas em Biologia Computacional

Identificação de regiões de interesse no DNAClassificação de DNA e ProteínasClusterização de DNA e ProteínasProfiling de DNA e ProteínasIdentificação de AnomaliasIlhas CpG...

Page 4: Python e Cadeias de Markov GHMM

Modelos Ocultos de Markov

Ou Hidden Markov Models (HMMs)Modelo MatemáticoProbabilísticoAnálise de Séries e SequênciasEstados internos vs. Comportamento

Page 5: Python e Cadeias de Markov GHMM

Problemas diversos

ClassificaçãoClusterizaçãoReconhecimentoAnálise de Séries TemporaisAnálise de SequênciasGeração segundo o modelo

Page 6: Python e Cadeias de Markov GHMM

Problemas Diversos

Linguagem NaturalSinaisMúsicaMineração de DadosAprendizagem de MáquinaExtração de Informação

Page 7: Python e Cadeias de Markov GHMM

Fair-Bet Casino

Existe um casino onde existe um jogo de apostas com moedas e umfuncionário que as lança moedas.

Page 8: Python e Cadeias de Markov GHMM

Fair-Bet Casino

Cada moeda pode assumir dois valores:Cara (H)Coroa (T)

Page 9: Python e Cadeias de Markov GHMM

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%

Page 10: Python e Cadeias de Markov GHMM

Fair-Bet Casino

Grafo de emissões:

Page 11: Python e Cadeias de Markov GHMM

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.

EstadosTransições

Page 12: Python e Cadeias de Markov GHMM

Fair-Bet Casino

Grafo de transições de estados:

Page 13: Python e Cadeias de Markov GHMM

Fair-Bet Casino

O funcionário começa com qualquer uma das moedas com igualprobabilidade.

Page 14: Python e Cadeias de Markov GHMM

Fair-Bet Casino

Transições do estado inicial:

Page 15: Python e Cadeias de Markov GHMM

Fair-Bet Casino

Modelo completo:

Page 16: Python e Cadeias de Markov GHMM

Problema

Imagine que você é um apostador

Page 17: Python e Cadeias de Markov GHMM

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?

Page 18: Python e Cadeias de Markov GHMM

Solução

Não existe solução extata! Mas...

Page 19: Python e Cadeias de Markov GHMM

Solução

Probabilidades a posteriori

Dado uma sequência, quais as probabilidades de estar em cada modelo

+Viterbi

Page 20: Python e Cadeias de Markov GHMM

Biblioteca:

General Hidden Markov Model (GHMM)+ Biopython (Cenas de um próximo capítulo)

Page 21: Python e Cadeias de Markov GHMM

GHMM

Biblioteca C++HMMs + AlgoritmosBinding Python

Page 22: Python e Cadeias de Markov GHMM

GHMM

import ghmm

# Criando a l f ab 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 ’ ] )

Page 23: Python e Cadeias de Markov GHMM

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 j u s t o[ 0 . 1 , 0 . 9 ] , # 1 : estado v i c i ado

]

Page 24: Python e Cadeias de Markov GHMM

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 ]

Page 25: Python e Cadeias de Markov GHMM

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

]

Page 26: Python e Cadeias de Markov GHMM

GHMM

# Criando Modelo Oculto de Markovhmm = ghmm.HMMFromMatrices (

# Al fabetoemission_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

)

Page 27: Python e Cadeias de Markov GHMM

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 )

Page 28: Python e Cadeias de Markov GHMM

GHMM

Resolvendo o problema do Casino

>>> pr in t ( v i terb i_path )[ 0 , 0 , 0 , 0 , . . . , 1 , 1 , 1 , 1 , 1 ]

>>> pr in t states_prob[ [ 0 . 8407944139086141 , 0 .1592055860913865 ] ,[ 0 .860787703168127 , 0 .13921229683187356 ] , . . . ]

Page 29: Python e Cadeias de Markov GHMM

Fair-Bet Casino

Probabilidades a posteriori:

Page 30: Python e Cadeias de Markov GHMM

Algoritmos

Geração de sequênciasEmissão com distribuições GaussianasBaum Welch

Page 31: Python e Cadeias de Markov GHMM

Agradecimentos

INDTCIn - UFPEProf. Ivan GesteiraPython BrasilVocês!

Page 32: Python e Cadeias de Markov GHMM

Dúvidas?Twitter: @dakerfpE-mail: [email protected]: dakerfpBlog: http://codecereal.blogspot.comBlog: http://blog.qtlabs.org.brBlog: http://aimotion.blogspot.comGitorious: http://gitorious.org/ dakerfpGithub: http://github.com/dakerfpGHMM: http://ghmm.org