Modelo Markov oculto para previsão de eventos

9

Pergunta : A configuração abaixo é uma implementação sensata de um modelo Hidden Markov?

Eu tenho um conjunto de dados de 108,000observações (realizadas ao longo de 100 dias) e aproximadamente 2000eventos ao longo de todo o período de observação. Os dados se parecem com a figura abaixo, onde a variável observada pode assumir 3 valores discretos e as colunas vermelhas destacam os tempos dos eventos, ou seja, 's:[1,2,3]tE

insira a descrição da imagem aqui

Como mostrado com retângulos vermelhos na figura, eu { a } para cada evento, tratando-os efetivamente como "janelas de pré-evento".tEtE-5

Treinamento do HMM: planejo treinar um modelo de Markov oculto (HMM) com base em todas as "janelas de pré-evento", usando a metodologia de múltiplas seqüências de observação, conforme sugerido na página. 273 de de Rabiner papel . Felizmente, isso me permitirá treinar um HMM que captura os padrões de sequência que levam a um evento.

HMM Previsão: Então eu pretendo usar este HMM para prever em um novo dia, onde será um vector janela deslizante, atualizado em tempo real para conter as observações entre o momento atual e conforme o dia passa.euog[P(ObservumatEuons|HMM)]ObservumatEuonstt-5

Espero ver o aumentar para que se assemelham às "janelas de pré-evento". Com efeito, isso deve permitir-me prever os eventos antes que eles aconteçam.euog[P(ObservumatEuons|HMM)]ObservumatEuons

Zhubarb
fonte
Você pode dividir seus dados para criar um modelo (por exemplo, 0,7) e testá-lo nos dados restantes. Apenas um pensamento, eu não sou um especialista nesta área.
Fernando
Sim obrigado. É mais a adequação dos HMMs para a tarefa sobre a qual não tenho certeza.
Zhubarb 14/10
@Zhubarb Estou lidando com um problema semelhante e gostaria de seguir sua abordagem HMM. Onde você conseguiu fazer isso? Ou você finalmente retornou à regressão logística / SVM, etc?
Javierfdr 4/16
@Javierfdr, acabei por não implementá-lo devido à dificuldade de implementação e às preocupações que alto destaca em sua resposta. Essencialmente, os HMM vêm com o fardo de ter que construir um extenso modelo generativo, enquanto meu pressentimento agora é o problema em questão, é possível mais facilmente se safar de um modelo discriminatório (SVM, Rede Neural etc.), como você sugere .
Zhubarb

Respostas:

3

Um problema com a abordagem que você descreveu é que você precisará definir que tipo de aumento de é significativo, o que pode ser difícil, pois P ( O ) sempre será muito pequeno em geral. Pode ser melhor treinar dois HMMs, digamos HMM1 para seqüências de observação em que o evento de interesse ocorre e HMM2 para sequências de observação em que o evento não ocorre. Então, dada uma sequência de observação O, você tem P ( H H M 1 | O )P(O)P(O)O e do mesmo modo para HMM2. Então você pode prever que o evento ocorrerá se P ( H M M 1 | O )

P(HHM1|O)=P(O|HMM1)P(HMM1)P(O)P(O|HMM1)P(HMM1)
P(HMM1|O)>P(HMM2|O)P(HMM1)P(O|HMM1)P(O)>P(HMM2)P(O|HMM2)P(O)P(HMM1)P(O|HMM1)>P(HMM2)P(O|HMM2).

Isenção de responsabilidade : O que se segue é baseado em minha própria experiência pessoal, então aceite o que é. Uma das coisas boas dos HMMs é que eles permitem lidar com sequências de tamanho variável e efeitos de ordem variável (graças aos estados ocultos). Às vezes isso é necessário (como em muitos aplicativos de PNL). No entanto, parece que você assumiu a priori que apenas as últimas 5 observações são relevantes para prever o evento de interesse. Se essa suposição for realista, você poderá ter significativamente mais sorte usando técnicas tradicionais (regressão logística, bayes ingênuos, SVM, etc) e simplesmente usando as últimas 5 observações como características / variáveis ​​independentes. Normalmente, esses tipos de modelos serão mais fáceis de treinar e (na minha experiência) produzirão melhores resultados.

alto
fonte
p=euog(P(O|hmm))p1=-2504,p2=-2403,p3=-2450p: Escolhi arbitrariamente 5 em tamanho da janela, é provável que seja mais longo do que em uma implementação real.
Zhubarb 15/10
1
P(HMM1)
@Berkan Quanto ao tamanho da janela, com base em minha própria experiência pessoal, espero que o que eu disse neste assunto seja válido para qualquer tamanho fixo de janela. Obviamente, todas as coisas que eu disse precisarão ser testadas empiricamente para o seu problema específico.
alto
euog(P(HMM1))+euog(P(O|HMM1))>?euog(P(HMM2))+euog(P(O|HMM2))euog(P(HMM1))euog(P(HMM1))
euog(P(HMM1))+euog(P(O|HMM1))>?euog(P(HMM2))+euog(P(O|HMM2))euog(P(HMM1))HMM1=(52,000)/108,000