SlideShare ist ein Scribd-Unternehmen logo
1 von 32
Downloaden Sie, um offline zu lesen
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

Weitere ähnliche Inhalte

Was ist angesagt?

18CS2005 Cryptography and Network Security
18CS2005 Cryptography and Network Security18CS2005 Cryptography and Network Security
18CS2005 Cryptography and Network SecurityKathirvel Ayyaswamy
 
Apresentação Sobre Bitcoin na ACIJ
Apresentação Sobre Bitcoin na ACIJApresentação Sobre Bitcoin na ACIJ
Apresentação Sobre Bitcoin na ACIJJaison Carvalho
 
Non-fungible tokens (nfts)
Non-fungible tokens (nfts)Non-fungible tokens (nfts)
Non-fungible tokens (nfts)Gene Leybzon
 
Dieter_Gollmann_Wiley_Computer_Security.pdf
Dieter_Gollmann_Wiley_Computer_Security.pdfDieter_Gollmann_Wiley_Computer_Security.pdf
Dieter_Gollmann_Wiley_Computer_Security.pdf238Tanisha
 
Data encryption standard DES & 3DES
Data encryption standard DES & 3DESData encryption standard DES & 3DES
Data encryption standard DES & 3DESLaís Berlatto
 
EVM - The Heart of Ethereum
EVM - The Heart of EthereumEVM - The Heart of Ethereum
EVM - The Heart of EthereumTruong Nguyen
 
CNIT 1417. Keyed Hashing
CNIT 1417. Keyed HashingCNIT 1417. Keyed Hashing
CNIT 1417. Keyed HashingSam Bowne
 
Sticky Keys to the Kingdom
Sticky Keys to the KingdomSticky Keys to the Kingdom
Sticky Keys to the KingdomDennis Maldonado
 
Getting Started in Blockchain Security and Smart Contract Auditing
Getting Started in Blockchain Security and Smart Contract AuditingGetting Started in Blockchain Security and Smart Contract Auditing
Getting Started in Blockchain Security and Smart Contract AuditingBeau Bullock
 
Nft for beginners the perfect basic guide to learn everything about non fungi...
Nft for beginners the perfect basic guide to learn everything about non fungi...Nft for beginners the perfect basic guide to learn everything about non fungi...
Nft for beginners the perfect basic guide to learn everything about non fungi...Paul Bossky
 
Warrr.staking.walkthrough.2021.09.26
Warrr.staking.walkthrough.2021.09.26Warrr.staking.walkthrough.2021.09.26
Warrr.staking.walkthrough.2021.09.26scott993763
 
Non Fungible Tokens (NFT) Yearly Report - 2018
Non Fungible Tokens (NFT) Yearly Report - 2018Non Fungible Tokens (NFT) Yearly Report - 2018
Non Fungible Tokens (NFT) Yearly Report - 2018NonFungible.com
 
Introduction to IPFS & Filecoin - longer version
Introduction to IPFS & Filecoin - longer versionIntroduction to IPFS & Filecoin - longer version
Introduction to IPFS & Filecoin - longer versionTinaBregovi
 
The DAO attack - Ethereum
The DAO attack - EthereumThe DAO attack - Ethereum
The DAO attack - EthereumAbanlex
 
Algoritmo de escalonamento Fuzzy Round Robin
Algoritmo de escalonamento Fuzzy Round RobinAlgoritmo de escalonamento Fuzzy Round Robin
Algoritmo de escalonamento Fuzzy Round RobinMarcos Castro
 

Was ist angesagt? (20)

Arquitecturas de sw
Arquitecturas de swArquitecturas de sw
Arquitecturas de sw
 
18CS2005 Cryptography and Network Security
18CS2005 Cryptography and Network Security18CS2005 Cryptography and Network Security
18CS2005 Cryptography and Network Security
 
Python Cryptography & Security
Python Cryptography & SecurityPython Cryptography & Security
Python Cryptography & Security
 
Apresentação Sobre Bitcoin na ACIJ
Apresentação Sobre Bitcoin na ACIJApresentação Sobre Bitcoin na ACIJ
Apresentação Sobre Bitcoin na ACIJ
 
Non-fungible tokens (nfts)
Non-fungible tokens (nfts)Non-fungible tokens (nfts)
Non-fungible tokens (nfts)
 
Dieter_Gollmann_Wiley_Computer_Security.pdf
Dieter_Gollmann_Wiley_Computer_Security.pdfDieter_Gollmann_Wiley_Computer_Security.pdf
Dieter_Gollmann_Wiley_Computer_Security.pdf
 
Data encryption standard DES & 3DES
Data encryption standard DES & 3DESData encryption standard DES & 3DES
Data encryption standard DES & 3DES
 
Resumo x86
Resumo x86Resumo x86
Resumo x86
 
EVM - The Heart of Ethereum
EVM - The Heart of EthereumEVM - The Heart of Ethereum
EVM - The Heart of Ethereum
 
CNIT 1417. Keyed Hashing
CNIT 1417. Keyed HashingCNIT 1417. Keyed Hashing
CNIT 1417. Keyed Hashing
 
Sticky Keys to the Kingdom
Sticky Keys to the KingdomSticky Keys to the Kingdom
Sticky Keys to the Kingdom
 
Getting Started in Blockchain Security and Smart Contract Auditing
Getting Started in Blockchain Security and Smart Contract AuditingGetting Started in Blockchain Security and Smart Contract Auditing
Getting Started in Blockchain Security and Smart Contract Auditing
 
Nft for beginners the perfect basic guide to learn everything about non fungi...
Nft for beginners the perfect basic guide to learn everything about non fungi...Nft for beginners the perfect basic guide to learn everything about non fungi...
Nft for beginners the perfect basic guide to learn everything about non fungi...
 
Warrr.staking.walkthrough.2021.09.26
Warrr.staking.walkthrough.2021.09.26Warrr.staking.walkthrough.2021.09.26
Warrr.staking.walkthrough.2021.09.26
 
Non Fungible Tokens (NFT) Yearly Report - 2018
Non Fungible Tokens (NFT) Yearly Report - 2018Non Fungible Tokens (NFT) Yearly Report - 2018
Non Fungible Tokens (NFT) Yearly Report - 2018
 
Bitcoin MOOC Lecture 1.pptx
Bitcoin MOOC Lecture 1.pptxBitcoin MOOC Lecture 1.pptx
Bitcoin MOOC Lecture 1.pptx
 
Introduction to IPFS & Filecoin - longer version
Introduction to IPFS & Filecoin - longer versionIntroduction to IPFS & Filecoin - longer version
Introduction to IPFS & Filecoin - longer version
 
The DAO attack - Ethereum
The DAO attack - EthereumThe DAO attack - Ethereum
The DAO attack - Ethereum
 
Algoritmo de escalonamento Fuzzy Round Robin
Algoritmo de escalonamento Fuzzy Round RobinAlgoritmo de escalonamento Fuzzy Round Robin
Algoritmo de escalonamento Fuzzy Round Robin
 
Bitcoin, the Protocol
Bitcoin, the ProtocolBitcoin, the Protocol
Bitcoin, the Protocol
 

Andere mochten auch

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
 

Andere mochten auch (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
 

Mehr von 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
 

Mehr von 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