Modello nascosto di Markov per la previsione degli eventi


9

Domanda : L'installazione di seguito è un'implementazione ragionevole di un modello di Markov nascosto?

Ho un set di dati di 108,000osservazioni (prese nel corso di 100 giorni) e approssimativamente 2000eventi durante l'intero arco di osservazione. I dati assomigliano alla figura seguente in cui la variabile osservata può assumere 3 valori discreti e le colonne rosse evidenziano i tempi degli eventi, vale a dire di :[1,2,3]tE

inserisci qui la descrizione dell'immagine

Come mostrato con i rettangoli rossi nella figura, ho { a } per ogni evento, trattandoli efficacemente come "finestre pre-evento".tEtE-5

Formazione HMM: ho intenzione di formare un Hidden Markov Model (HMM) basato su tutte le "finestre pre-evento", usando la metodologia delle sequenze di osservazione multiple come suggerito a pag. 273 di di Rabiner carta . Spero che questo mi permetta di addestrare un HMM che catturi gli schemi di sequenza che portano a un evento.

Previsione HMM: Quindi ho intenzione di utilizzare questo HMM per prevedere il in un nuovo giorno, in cui le saranno un vettore a finestra scorrevole, aggiornate in tempo reale per contenere le osservazioni tra l'ora corrente e col passare del giorno.log[P(OBServun'tioonS|HMM)]OBServun'tioonStt5

Mi aspetto di vedere aumentare il per le che assomigliano alle "finestre pre-evento". Ciò dovrebbe in effetti permettermi di prevedere gli eventi prima che si verifichino.O b s e r v a t i o n slog[P(Observations|HMM)]Observations


Puoi dividere i tuoi dati per costruire un modello (diciamo 0.7), quindi testare il tuo modello sui dati rimanenti. Solo un pensiero, non sono uno specialista in questo settore.
Fernando,

Si Grazie. È più l'idoneità degli HMM per l'attività di cui non sono sicuro.
Zhubarb,

@Zhubarb Sto affrontando un problema simile e vorrei seguire il tuo approccio HMM. Dove sei riuscito a farlo? Oppure ti sei finalmente ripreso alla regressione logistica / SVM, ecc.?
Javierfdr,

@Javierfdr, ho finito per non implementarlo a causa della difficoltà di implementazione e delle preoccupazioni che alto evidenzia nella sua risposta. In sostanza, gli HMM hanno l'onere di dover costruire un ampio modello generativo, mentre il mio istinto è ora per il problema in questione, si può più facilmente cavarsela con un modello discriminatorio (SVM, Neural Net, ecc.) Come suggerisci .
Zhubarb,

Risposte:


3

Un problema con l'approccio che hai descritto è che dovrai definire quale tipo di aumento di è significativo, il che può essere difficile in quanto P ( O ) sarà sempre molto piccolo in generale. Potrebbe essere meglio addestrare due HMM, diciamo HMM1 per sequenze di osservazione in cui si verifica l'evento di interesse e HMM2 per sequenze di osservazione in cui non si verifica l'evento . Quindi data una sequenza di osservazione O hai P ( H H M 1 | O )P(O)P(O)O e similmente per HMM2. Quindi è possibile prevedere l'evento si verificherà 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).

Disclaimer : Quello che segue è basato sulla mia esperienza personale, quindi prendilo per quello che è. Una delle cose belle degli HMM è che ti permettono di gestire sequenze di lunghezza variabile ed effetti di ordine variabile (grazie agli stati nascosti). A volte questo è necessario (come in molte applicazioni NLP). Tuttavia, sembra che tu abbia ipotizzato a priori che solo le ultime 5 osservazioni sono rilevanti per prevedere l'evento di interesse. Se questa ipotesi è realistica, potresti avere molta più fortuna usando le tecniche tradizionali (regressione logistica, baying ingenui, SVM, ecc.) E semplicemente usando le ultime 5 osservazioni come caratteristiche / variabili indipendenti. In genere questi tipi di modelli saranno più facili da addestrare e (nella mia esperienza) produrranno risultati migliori.


p=log(P(O|hmm))p1=-2504,p2=-2403,p3=-2450p: Ho scelto 5 come dimensione della mia finestra arbitrariamente, è probabile che sia più lungo di quello in un'implementazione effettiva.
Zhubarb,

1
P(HMM1)

@Berkan Per quanto riguarda le dimensioni della finestra, in base alla mia esperienza personale, mi aspetto che ciò che ho detto in questa materia valga per qualsiasi dimensione fissa della finestra. Ovviamente tutte le cose che ho detto dovranno essere testate empiricamente per il tuo problema specifico.
alto,

log(P(HMM1))+log(P(O|HMM1))>?log(P(HMM2))+log(P(O|HMM2))log(P(HMM1))log(P(HMM1))

log(P(HMM1))+log(P(O|HMM1))>?log(P(HMM2))+log(P(O|HMM2))log(P(HMM1))HMM1=(5*2,000)/108,000
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.