Dominando Modelos Ocultos de Markov com Python e GHMM

33

description

 

Transcript of Dominando Modelos Ocultos de Markov com Python e GHMM

Page 1: Dominando Modelos Ocultos de Markov com Python e GHMM

Dominando Modelos Ocultos deMarkov com Python e GHMMDaker Fernandes Pinheiro

Setembro/2011, Python Brasil

Page 2: Dominando Modelos Ocultos de Markov com Python e GHMM

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 :-)

Page 3: Dominando Modelos Ocultos de Markov com Python e GHMM

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

Page 4: Dominando Modelos Ocultos de Markov com Python e GHMM

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

...

Page 5: Dominando Modelos Ocultos de Markov com Python e GHMM

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

Page 6: Dominando Modelos Ocultos de Markov com Python e GHMM

Problemas diversos

Classi�cação

Clusterização

Reconhecimento

Análise de Séries Temporais

Análise de Sequências

Geração segundo o modelo

Page 7: Dominando Modelos Ocultos de Markov com Python e GHMM

Problemas Diversos

Linguagem Natural

Sinais

Música

Mineração de Dados

Aprendizagem de Máquina

Extração de Informação

Page 8: Dominando Modelos Ocultos de Markov com Python e GHMM

Fair-Bet Casino

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

Page 9: Dominando Modelos Ocultos de Markov com Python e GHMM

Fair-Bet Casino

Cada moeda pode assumir dois valores:

Cara (H)

Coroa (T)

Page 10: Dominando Modelos Ocultos de Markov com Python e 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 11: Dominando Modelos Ocultos de Markov com Python e GHMM

Fair-Bet Casino

Grafo de emissões:

Page 12: Dominando Modelos Ocultos de Markov com Python e 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.

Estados

Transições

Page 13: Dominando Modelos Ocultos de Markov com Python e GHMM

Fair-Bet Casino

Grafo de transições de estados:

Page 14: Dominando Modelos Ocultos de Markov com Python e GHMM

Fair-Bet Casino

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

Page 15: Dominando Modelos Ocultos de Markov com Python e GHMM

Fair-Bet Casino

Transições do estado inicial:

Page 16: Dominando Modelos Ocultos de Markov com Python e GHMM

Fair-Bet Casino

Modelo completo:

Page 17: Dominando Modelos Ocultos de Markov com Python e GHMM

Problema

Imagine que você é um apostador

Page 18: Dominando Modelos Ocultos de Markov com Python e 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 19: Dominando Modelos Ocultos de Markov com Python e GHMM

Solução

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

Page 20: Dominando Modelos Ocultos de Markov com Python e GHMM

Solução

Probabilidades a posteriori

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

+Viterbi

Page 21: Dominando Modelos Ocultos de Markov com Python e GHMM

Biblioteca:

General Hidden Markov Model (GHMM)

+ Biopython (Cenas de um próximo capítulo)

Page 22: Dominando Modelos Ocultos de Markov com Python e GHMM

GHMM

Biblioteca C++

HMMs + Algoritmos

Binding Python

Page 23: Dominando Modelos Ocultos de Markov com Python e GHMM

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 ' ] )

Page 24: Dominando Modelos Ocultos de Markov com Python e 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 ju s t o[ 0 . 1 , 0 . 9 ] , # 1 : estado v i c i ado

]

Page 25: Dominando Modelos Ocultos de Markov com Python e 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 26: Dominando Modelos Ocultos de Markov com Python e 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 27: Dominando Modelos Ocultos de Markov com Python e GHMM

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

)

Page 28: Dominando Modelos Ocultos de Markov com Python e 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 29: Dominando Modelos Ocultos de Markov com Python e GHMM

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 ] , . . . ]

Page 30: Dominando Modelos Ocultos de Markov com Python e GHMM

Fair-Bet Casino

Probabilidades a posteriori:

Page 31: Dominando Modelos Ocultos de Markov com Python e GHMM

Algoritmos

Geração de sequências

Emissão com distribuições Gaussianas

Baum Welch

Page 32: Dominando Modelos Ocultos de Markov com Python e GHMM

Agradecimentos

INDT

CIn - UFPE

Prof. Ivan Gesteira

Python Brasil

Vocês!

Page 33: Dominando Modelos Ocultos de Markov com Python e GHMM

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