Dominando Modelos Ocultos de
Markov com Python e GHMM
Daker Fernandes Pinheiro
Setembro/2011, Python Brasil
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
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
  ...
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



   Classificaçã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 um
funcioná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 pode
trocá-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 igual
probabilidade.
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 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 ’ ] )
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
]
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]
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
]
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
)
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 )
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] , . . . ]
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: daker.pinheiro@openbossa.org
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

Python e Cadeias de Markov GHMM

  • 1.
    Dominando Modelos Ocultosde 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 BiologiaComputacional 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 deMarkov 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 umcasino onde existe um jogo de apostas com moedas e um funcionário que as lança moedas.
  • 8.
    Fair-Bet Casino Cada moedapode assumir dois valores: Cara (H) Coroa (T)
  • 9.
    Fair-Bet Casino O funcionáriotem 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%
  • 10.
  • 11.
    Fair-Bet Casino Esse funcionáriosempre usa uma das duas moedas. Mas pode trocá-las com 10% das vezes que vai fazer um novo sorteio. Estados Transições
  • 12.
    Fair-Bet Casino Grafo detransições de estados:
  • 13.
    Fair-Bet Casino O funcionáriocomeça com qualquer uma das moedas com igual probabilidade.
  • 14.
  • 15.
  • 16.
  • 17.
    Problema Dada uma sequênciade 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?
  • 18.
    Solução Não existe solução extata! Mas...
  • 19.
    Solução Probabilidades a posteriori Dado uma sequência, quais as probabilidades de estar em cada modelo +Viterbi
  • 20.
    Biblioteca: General Hidden Markov Model (GHMM) + Biopython (Cenas de um próximo capítulo)
  • 21.
    GHMM Biblioteca C++ HMMs + Algoritmos Binding Python
  • 22.
    GHMM import ghmm # Criandoa 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 det 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 ro 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 dee 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 ModeloOculto 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 problemado 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 problemado 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] , . . . ]
  • 29.
  • 30.
    Algoritmos Geraçãode sequências Emissão com distribuições Gaussianas Baum Welch
  • 31.
    Agradecimentos INDT CIn - UFPE Prof. Ivan Gesteira Python Brasil Vocês!
  • 32.
    Dúvidas? Twitter: @dakerfp E-mail: daker.pinheiro@openbossa.org 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