SlideShare uma empresa Scribd logo
1 de 32
Baixar para ler offline
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

Mais conteúdo relacionado

Mais procurados

ΠΛΗ10 ΜΑΘΗΜΑ 2.1
ΠΛΗ10 ΜΑΘΗΜΑ 2.1 ΠΛΗ10 ΜΑΘΗΜΑ 2.1
ΠΛΗ10 ΜΑΘΗΜΑ 2.1 Dimitris Psounis
 
Java: Manipulação de Arquivos
Java:  Manipulação  de ArquivosJava:  Manipulação  de Arquivos
Java: Manipulação de ArquivosArthur Emanuel
 
Η Γλώσσα C - Μάθημα 1
Η Γλώσσα C - Μάθημα 1Η Γλώσσα C - Μάθημα 1
Η Γλώσσα C - Μάθημα 1Dimitris Psounis
 
Logica Algoritmo 03 Tipos Expressoes Variaveis Operadores
Logica Algoritmo 03 Tipos Expressoes Variaveis OperadoresLogica Algoritmo 03 Tipos Expressoes Variaveis Operadores
Logica Algoritmo 03 Tipos Expressoes Variaveis OperadoresRegis Magalhães
 
Apostila Linguagens Formais e Autômatos (LFA)
Apostila Linguagens Formais e Autômatos (LFA)Apostila Linguagens Formais e Autômatos (LFA)
Apostila Linguagens Formais e Autômatos (LFA)Ricardo Terra
 
Algoritmos e Técnicas de Programação - Curso Completo
Algoritmos e Técnicas de Programação - Curso CompletoAlgoritmos e Técnicas de Programação - Curso Completo
Algoritmos e Técnicas de Programação - Curso Completothomasdacosta
 
Introdução ao Deep Learning com o TensorFlow
Introdução ao Deep Learning com o TensorFlowIntrodução ao Deep Learning com o TensorFlow
Introdução ao Deep Learning com o TensorFlowpichiliani
 
ΑΛΓΟΡΙΘΜΟΙ ΣΕ C - ΜΑΘΗΜΑ 1 - ΔΙΑΠΕΡΑΣΗ ΠΙΝΑΚΑ
ΑΛΓΟΡΙΘΜΟΙ ΣΕ C - ΜΑΘΗΜΑ 1 - ΔΙΑΠΕΡΑΣΗ ΠΙΝΑΚΑΑΛΓΟΡΙΘΜΟΙ ΣΕ C - ΜΑΘΗΜΑ 1 - ΔΙΑΠΕΡΑΣΗ ΠΙΝΑΚΑ
ΑΛΓΟΡΙΘΜΟΙ ΣΕ C - ΜΑΘΗΜΑ 1 - ΔΙΑΠΕΡΑΣΗ ΠΙΝΑΚΑDimitris Psounis
 
ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΣΕ C - ΜΑΘΗΜΑ 2
ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΣΕ C - ΜΑΘΗΜΑ 2 ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΣΕ C - ΜΑΘΗΜΑ 2
ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΣΕ C - ΜΑΘΗΜΑ 2 Dimitris Psounis
 
Metodos de ordenação estrutura de dados
Metodos de ordenação   estrutura de dadosMetodos de ordenação   estrutura de dados
Metodos de ordenação estrutura de dadosThalita Chaves
 
Haskell aula5 f.ordem-sup_modulos-cifra_cesar
Haskell aula5 f.ordem-sup_modulos-cifra_cesarHaskell aula5 f.ordem-sup_modulos-cifra_cesar
Haskell aula5 f.ordem-sup_modulos-cifra_cesarCRISLANIO MACEDO
 

Mais procurados (20)

ΠΛΗ10 ΜΑΘΗΜΑ 2.1
ΠΛΗ10 ΜΑΘΗΜΑ 2.1 ΠΛΗ10 ΜΑΘΗΜΑ 2.1
ΠΛΗ10 ΜΑΘΗΜΑ 2.1
 
Java: Manipulação de Arquivos
Java:  Manipulação  de ArquivosJava:  Manipulação  de Arquivos
Java: Manipulação de Arquivos
 
Η Γλώσσα C - Μάθημα 1
Η Γλώσσα C - Μάθημα 1Η Γλώσσα C - Μάθημα 1
Η Γλώσσα C - Μάθημα 1
 
Logica Algoritmo 03 Tipos Expressoes Variaveis Operadores
Logica Algoritmo 03 Tipos Expressoes Variaveis OperadoresLogica Algoritmo 03 Tipos Expressoes Variaveis Operadores
Logica Algoritmo 03 Tipos Expressoes Variaveis Operadores
 
Apostila Linguagens Formais e Autômatos (LFA)
Apostila Linguagens Formais e Autômatos (LFA)Apostila Linguagens Formais e Autômatos (LFA)
Apostila Linguagens Formais e Autômatos (LFA)
 
Algoritmos e Técnicas de Programação - Curso Completo
Algoritmos e Técnicas de Programação - Curso CompletoAlgoritmos e Técnicas de Programação - Curso Completo
Algoritmos e Técnicas de Programação - Curso Completo
 
Introdução ao Deep Learning com o TensorFlow
Introdução ao Deep Learning com o TensorFlowIntrodução ao Deep Learning com o TensorFlow
Introdução ao Deep Learning com o TensorFlow
 
ΑΛΓΟΡΙΘΜΟΙ ΣΕ C - ΜΑΘΗΜΑ 1 - ΔΙΑΠΕΡΑΣΗ ΠΙΝΑΚΑ
ΑΛΓΟΡΙΘΜΟΙ ΣΕ C - ΜΑΘΗΜΑ 1 - ΔΙΑΠΕΡΑΣΗ ΠΙΝΑΚΑΑΛΓΟΡΙΘΜΟΙ ΣΕ C - ΜΑΘΗΜΑ 1 - ΔΙΑΠΕΡΑΣΗ ΠΙΝΑΚΑ
ΑΛΓΟΡΙΘΜΟΙ ΣΕ C - ΜΑΘΗΜΑ 1 - ΔΙΑΠΕΡΑΣΗ ΠΙΝΑΚΑ
 
Java básico - Módulo 06: Array
Java básico - Módulo 06: ArrayJava básico - Módulo 06: Array
Java básico - Módulo 06: Array
 
Algoritmo - tipos de dados
Algoritmo - tipos de dadosAlgoritmo - tipos de dados
Algoritmo - tipos de dados
 
ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΣΕ C - ΜΑΘΗΜΑ 2
ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΣΕ C - ΜΑΘΗΜΑ 2 ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΣΕ C - ΜΑΘΗΜΑ 2
ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΣΕ C - ΜΑΘΗΜΑ 2
 
ΠΛΗ10 ΜΑΘΗΜΑ 2.2
ΠΛΗ10 ΜΑΘΗΜΑ 2.2ΠΛΗ10 ΜΑΘΗΜΑ 2.2
ΠΛΗ10 ΜΑΘΗΜΑ 2.2
 
ΠΛΗ10 ΜΑΘΗΜΑ 2.8
ΠΛΗ10 ΜΑΘΗΜΑ 2.8ΠΛΗ10 ΜΑΘΗΜΑ 2.8
ΠΛΗ10 ΜΑΘΗΜΑ 2.8
 
Aula sobre Tabela Hash
Aula sobre Tabela HashAula sobre Tabela Hash
Aula sobre Tabela Hash
 
HeapSort
HeapSortHeapSort
HeapSort
 
Metodos de ordenação estrutura de dados
Metodos de ordenação   estrutura de dadosMetodos de ordenação   estrutura de dados
Metodos de ordenação estrutura de dados
 
Haskell aula5 f.ordem-sup_modulos-cifra_cesar
Haskell aula5 f.ordem-sup_modulos-cifra_cesarHaskell aula5 f.ordem-sup_modulos-cifra_cesar
Haskell aula5 f.ordem-sup_modulos-cifra_cesar
 
Grafos 9.2_2016
Grafos 9.2_2016Grafos 9.2_2016
Grafos 9.2_2016
 
Aula 6 aed - registros
Aula 6   aed - registrosAula 6   aed - registros
Aula 6 aed - registros
 
Exercicios de estatistica resolvido.5
Exercicios de estatistica resolvido.5Exercicios de estatistica resolvido.5
Exercicios de estatistica resolvido.5
 

Destaque

Porque foi bom aprender com Python
Porque foi bom aprender com PythonPorque foi bom aprender com Python
Porque foi bom aprender com PythonFernando Rocha
 
Wikilytics
WikilyticsWikilytics
Wikilyticspugpe
 
Python na formacao_de_jovens
Python na formacao_de_jovensPython na formacao_de_jovens
Python na formacao_de_jovensMarcos Egito
 
Python Debugger - PUG-PE
Python Debugger - PUG-PE Python Debugger - PUG-PE
Python Debugger - PUG-PE Arthur Alvim
 
Palestra sobre Inteligência Coletiva
Palestra sobre Inteligência ColetivaPalestra sobre Inteligência Coletiva
Palestra sobre Inteligência Coletivapugpe
 
Blender Com Python
Blender Com PythonBlender Com Python
Blender Com Pythonpugpe
 
Peça seu código em casamento: Votos, Tópicos e TDD
Peça seu código em casamento: Votos, Tópicos e TDDPeça seu código em casamento: Votos, Tópicos e TDD
Peça seu código em casamento: Votos, Tópicos e TDDRafael Carício
 
Computação Científica com Python
Computação Científica com PythonComputação Científica com Python
Computação Científica com PythonHugo Serrano
 
Clustering com numpy e cython
Clustering com numpy e cythonClustering com numpy e cython
Clustering com numpy e cythonAnderson Dantas
 
Coding Dojo e Test Driven Development
Coding Dojo e Test Driven DevelopmentCoding Dojo e Test Driven Development
Coding Dojo e Test Driven Developmentpugpe
 
Qml + Python
Qml + PythonQml + Python
Qml + Pythonpugpe
 
Pyjamas: Uma Ferramenta Pythônica para Web
Pyjamas: Uma Ferramenta Pythônica para WebPyjamas: Uma Ferramenta Pythônica para Web
Pyjamas: Uma Ferramenta Pythônica para WebNielson Santana
 
Criando comunidades bem sucedidas
Criando comunidades bem sucedidasCriando comunidades bem sucedidas
Criando comunidades bem sucedidaspugpe
 
Rain Toolbox - Previsão de Chuvas
Rain Toolbox -  Previsão de ChuvasRain Toolbox -  Previsão de Chuvas
Rain Toolbox - Previsão de Chuvaspugpe
 
Palestra sobre Collections com Python
Palestra sobre Collections com PythonPalestra sobre Collections com Python
Palestra sobre Collections com Pythonpugpe
 
(entregando djangoapps)@tangerinalab - pugpe xv
(entregando djangoapps)@tangerinalab - pugpe xv(entregando djangoapps)@tangerinalab - pugpe xv
(entregando djangoapps)@tangerinalab - pugpe xvraonyaraujo
 
Apresentando o I Toró de Palestras do PUG-PE
Apresentando o I Toró de Palestras do PUG-PEApresentando o I Toró de Palestras do PUG-PE
Apresentando o I Toró de Palestras do PUG-PEMarcel Caraciolo
 

Destaque (20)

Porque foi bom aprender com Python
Porque foi bom aprender com PythonPorque foi bom aprender com Python
Porque foi bom aprender com Python
 
Wikilytics
WikilyticsWikilytics
Wikilytics
 
Pug
PugPug
Pug
 
Python na formacao_de_jovens
Python na formacao_de_jovensPython na formacao_de_jovens
Python na formacao_de_jovens
 
Python Debugger - PUG-PE
Python Debugger - PUG-PE Python Debugger - PUG-PE
Python Debugger - PUG-PE
 
Palestra sobre Inteligência Coletiva
Palestra sobre Inteligência ColetivaPalestra sobre Inteligência Coletiva
Palestra sobre Inteligência Coletiva
 
Blender Com Python
Blender Com PythonBlender Com Python
Blender Com Python
 
Peça seu código em casamento: Votos, Tópicos e TDD
Peça seu código em casamento: Votos, Tópicos e TDDPeça seu código em casamento: Votos, Tópicos e TDD
Peça seu código em casamento: Votos, Tópicos e TDD
 
Computação Científica com Python
Computação Científica com PythonComputação Científica com Python
Computação Científica com Python
 
Clustering com numpy e cython
Clustering com numpy e cythonClustering com numpy e cython
Clustering com numpy e cython
 
Coding Dojo e Test Driven Development
Coding Dojo e Test Driven DevelopmentCoding Dojo e Test Driven Development
Coding Dojo e Test Driven Development
 
REST APIs com Django
REST APIs com DjangoREST APIs com Django
REST APIs com Django
 
Qml + Python
Qml + PythonQml + Python
Qml + Python
 
Pyjamas: Uma Ferramenta Pythônica para Web
Pyjamas: Uma Ferramenta Pythônica para WebPyjamas: Uma Ferramenta Pythônica para Web
Pyjamas: Uma Ferramenta Pythônica para Web
 
Criando comunidades bem sucedidas
Criando comunidades bem sucedidasCriando comunidades bem sucedidas
Criando comunidades bem sucedidas
 
Rain Toolbox - Previsão de Chuvas
Rain Toolbox -  Previsão de ChuvasRain Toolbox -  Previsão de Chuvas
Rain Toolbox - Previsão de Chuvas
 
Palestra sobre Collections com Python
Palestra sobre Collections com PythonPalestra sobre Collections com Python
Palestra sobre Collections com Python
 
(entregando djangoapps)@tangerinalab - pugpe xv
(entregando djangoapps)@tangerinalab - pugpe xv(entregando djangoapps)@tangerinalab - pugpe xv
(entregando djangoapps)@tangerinalab - pugpe xv
 
Apresentando o I Toró de Palestras do PUG-PE
Apresentando o I Toró de Palestras do PUG-PEApresentando o I Toró de Palestras do PUG-PE
Apresentando o I Toró de Palestras do PUG-PE
 
Pep 8
Pep 8Pep 8
Pep 8
 

Mais de pugpe

Projeto Amadeus
Projeto AmadeusProjeto Amadeus
Projeto Amadeuspugpe
 
E o que danado é o PUG-PE?
E o que danado é o PUG-PE?E o que danado é o PUG-PE?
E o que danado é o PUG-PE?pugpe
 
Intro
IntroIntro
Intropugpe
 
Construindo uma startup em 54 horas com Python
Construindo uma startup em 54 horas com PythonConstruindo uma startup em 54 horas com Python
Construindo uma startup em 54 horas com Pythonpugpe
 
Automatizando tarefas com Python
Automatizando tarefas com PythonAutomatizando tarefas com Python
Automatizando tarefas com Pythonpugpe
 
NoSQL com Cassandra e Python
NoSQL com Cassandra e PythonNoSQL com Cassandra e Python
NoSQL com Cassandra e Pythonpugpe
 
Visualização da Informação
Visualização da InformaçãoVisualização da Informação
Visualização da Informaçãopugpe
 
Desenvolvendo aplicativos web com o google app engine
Desenvolvendo aplicativos web com o google app engineDesenvolvendo aplicativos web com o google app engine
Desenvolvendo aplicativos web com o google app enginepugpe
 
Pip - Instalando Pacotes facilmente para Python
Pip - Instalando Pacotes facilmente para PythonPip - Instalando Pacotes facilmente para Python
Pip - Instalando Pacotes facilmente para Pythonpugpe
 
Pug pe vii - luciano rodrigues - debugger
Pug pe vii - luciano rodrigues - debuggerPug pe vii - luciano rodrigues - debugger
Pug pe vii - luciano rodrigues - debuggerpugpe
 
Pug pe viii - luciano rodrigues - debugger
Pug pe viii - luciano rodrigues - debuggerPug pe viii - luciano rodrigues - debugger
Pug pe viii - luciano rodrigues - debuggerpugpe
 
Python e Django
Python e DjangoPython e Django
Python e Djangopugpe
 
Python e Dispositivos Móveis
Python e Dispositivos MóveisPython e Dispositivos Móveis
Python e Dispositivos Móveispugpe
 
Redes Neurais e Python
Redes Neurais e PythonRedes Neurais e Python
Redes Neurais e Pythonpugpe
 
CATS: Sistema de Recomendação de Eventos
CATS: Sistema de Recomendação de EventosCATS: Sistema de Recomendação de Eventos
CATS: Sistema de Recomendação de Eventospugpe
 
Python Funcional
Python FuncionalPython Funcional
Python Funcionalpugpe
 
Open Allure
Open AllureOpen Allure
Open Allurepugpe
 
Iron Python
Iron PythonIron Python
Iron Pythonpugpe
 

Mais de pugpe (18)

Projeto Amadeus
Projeto AmadeusProjeto Amadeus
Projeto Amadeus
 
E o que danado é o PUG-PE?
E o que danado é o PUG-PE?E o que danado é o PUG-PE?
E o que danado é o PUG-PE?
 
Intro
IntroIntro
Intro
 
Construindo uma startup em 54 horas com Python
Construindo uma startup em 54 horas com PythonConstruindo uma startup em 54 horas com Python
Construindo uma startup em 54 horas com Python
 
Automatizando tarefas com Python
Automatizando tarefas com PythonAutomatizando tarefas com Python
Automatizando tarefas com Python
 
NoSQL com Cassandra e Python
NoSQL com Cassandra e PythonNoSQL com Cassandra e Python
NoSQL com Cassandra e Python
 
Visualização da Informação
Visualização da InformaçãoVisualização da Informação
Visualização da Informação
 
Desenvolvendo aplicativos web com o google app engine
Desenvolvendo aplicativos web com o google app engineDesenvolvendo aplicativos web com o google app engine
Desenvolvendo aplicativos web com o google app engine
 
Pip - Instalando Pacotes facilmente para Python
Pip - Instalando Pacotes facilmente para PythonPip - Instalando Pacotes facilmente para Python
Pip - Instalando Pacotes facilmente para Python
 
Pug pe vii - luciano rodrigues - debugger
Pug pe vii - luciano rodrigues - debuggerPug pe vii - luciano rodrigues - debugger
Pug pe vii - luciano rodrigues - debugger
 
Pug pe viii - luciano rodrigues - debugger
Pug pe viii - luciano rodrigues - debuggerPug pe viii - luciano rodrigues - debugger
Pug pe viii - luciano rodrigues - debugger
 
Python e Django
Python e DjangoPython e Django
Python e Django
 
Python e Dispositivos Móveis
Python e Dispositivos MóveisPython e Dispositivos Móveis
Python e Dispositivos Móveis
 
Redes Neurais e Python
Redes Neurais e PythonRedes Neurais e Python
Redes Neurais e Python
 
CATS: Sistema de Recomendação de Eventos
CATS: Sistema de Recomendação de EventosCATS: Sistema de Recomendação de Eventos
CATS: Sistema de Recomendação de Eventos
 
Python Funcional
Python FuncionalPython Funcional
Python Funcional
 
Open Allure
Open AllureOpen Allure
Open Allure
 
Iron Python
Iron PythonIron Python
Iron Python
 

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. 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 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 ...
  • 4. 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
  • 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 um casino onde existe um jogo de apostas com moedas e um funcionário que as lança moedas.
  • 8. Fair-Bet Casino Cada moeda pode assumir dois valores: Cara (H) Coroa (T)
  • 9. 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%
  • 11. 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
  • 12. Fair-Bet Casino Grafo de transições de estados:
  • 13. Fair-Bet Casino O funcionário começa com qualquer uma das moedas com igual probabilidade.
  • 16. Problema Imagine que você é um apostador
  • 17. 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?
  • 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 # 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 ’ ] )
  • 23. 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 ]
  • 24. 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]
  • 25. 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 ]
  • 26. 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 )
  • 27. 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 )
  • 28. 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] , . . . ]
  • 30. Algoritmos Geração de 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