Come posso addestrare gli HMM per la classificazione?


12

Quindi capisco che quando si addestrano gli HMM per la classificazione l'approccio standard è:

  1. Separare i set di dati nei set di dati per ogni classe
  2. Addestra un HMM per classe
  3. Sul set di test confrontare la probabilità di ciascun modello di classificare ciascuna finestra

Ma come posso addestrare l'HMM su ogni classe? Concatengo solo i dati relativi a una classe insieme? Ma i dati delle serie temporali non sono pensati per essere sequenziali - e se lo faccio, allora sto dicendo che alcuni punti dati sono consecutivi quando non lo sono?

Per essere più concreti ho alcuni dati EEG che sono una matrice 96xT in cui ho 96 vettori di caratteristiche che sono le densità spettrali di potenza di frequenze diverse da canali diversi e T è la lunghezza del tempo del segnale (a una certa frequenza di campionamento)

Questo può essere diviso in finestre che conosco dal protocollo sperimentale (i dati sono etichettati) e quindi posso raccogliere insieme matrici da 96 * t per ogni classe. Dove t è inferiore a T e indica la dimensione di ciascuna finestra.

Come posso quindi addestrare l'HMM su questi dati? Se mi aiuta, sto cercando di usare il toolkit pmtk3, ma apro l'uso di qualsiasi cosa in realtà: deve solo essere in grado di gestire osservazioni con valori reali poiché le densità spettrali di potenza sono continue e non discrete (la casella degli strumenti MATLAB predefinita può gestire solo con osservazioni discrete).

Lo scopo è quello di essere in grado di classificare le finestre dei dati EEG in base a un determinato stato mentale dopo aver studiato i dati etichettati. Si tratta di un problema di interfaccia cervello-computer che utilizza i dati della competizione BCI di Berlino .


1
Fa questa pagina tuta che cosa avete bisogno?
fxm,

Sembra - lo proverò per essere sicuro. Permette sicuramente modelli gaussiani e miscugli di gaussiani piuttosto che solo multinomiali. E sembra che tu possa formare globalmente un modello su più osservazioni. Quindi sembra buono. Ho intenzione di imparare Python in modo corretto in quanto ha un uso molto più ampio. Grazie :)
Alex McMurray il

Risposte:


9

T

Hai detto a reddit che eri titubante nell'assegnare un singolo stato per ogni classe. Hai provato questo? Potrebbe non funzionare male come pensi. Anche in questo caso il problema della stima è notevolmente più semplice. Stimare le probabilità di transizione è facile, devi solo contare essenzialmente. Inoltre puoi semplicemente adattare le probabilità di emissione per ogni stato in base ai tuoi dati osservati e alla classe corrispondente, ignorando gli aspetti temporali.

KNN×Kskik=1,,Ki=1,Ntkt

Infine, potresti passare a un modello discriminatorio come un campo casuale condizionale. Un modello discriminante ti permetterà di incorporare facilmente funzionalità più complesse e di affrontare più direttamente il problema (stimando le densità condizionali). Questo è probabilmente quello che proverei per primo.


I valori osservati sono continui, quindi mi farebbe comodo un gaussiano o un GMM. Come discusso su reddit, questo limita le capacità del modello. Sto usando questo modello per vedere come l'aspetto temporale influenza l'accuratezza della classificazione rispetto ai modelli statici. Sono consapevole che i modelli discriminatori potrebbero essere migliori per la classificazione e ho letto alcune parti della tesi di Murphy. Sembra interessante, ma l'HMM mi è stato consigliato dal mio professore (è un progetto a tempo indeterminato), quindi lo proverò. Voglio lavorare di più con i segnali EEG / MEG in futuro, quindi proverò gli altri metodi ad un certo punto. :)
Alex McMurray il

1
Alla fine ho usato sklearn e il suo supporto per più osservazioni. Sembrava funzionare correttamente. Dovrei scavare nel codice e vedere come si occupa effettivamente di esso.
Alex McMurray,

1
Alex, potresti fornire un link o un esempio di ciò che definisci "sklearn e il suo supporto per più osservazioni"? Ho affrontato questo problema (e il problema correlato di come "dire" a un MMM che più osservazioni appartengono a una singola etichetta di classe) ormai da molti anni e mi piacerebbe sapere come le hai affrontate.
Rubenulis,
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.