Trattare con set di dati di serie storiche molto grandi


10

Ho accesso a un set di dati molto grande. I dati provengono da registrazioni MEG di persone che ascoltano brani musicali, di uno dei quattro generi. I dati sono i seguenti:

  • 6 soggetti
  • 3 ripetizioni sperimentali (epoche)
  • 120 prove per epoca
  • 8 secondi di dati per prova a 500Hz (= 4000 campioni) da 275 canali MEG

Quindi ogni "esempio" qui è una matrice di dimensioni [4000x275], e ci sono 2160 di tali esempi, e questo è prima di ogni estrazione di caratteristiche. L'obiettivo è predire il genere in base al segnale cerebrale (classificazione di 4 classi).

Chiaramente ci sono alcuni problemi impegnativi qui, vale a dire:

  1. Il set di dati non si adatta alla memoria
  2. Ci saranno forti correlazioni temporali nei dati e la variazione tra soggetti sarà enorme. Di conseguenza non è ovvio come dividere i dati
  3. Il rapporto segnale-rumore è molto basso
  4. Non è ovvio quali sarebbero le caratteristiche corrette per un classificatore

Prendendo questi a turno:

  1. Ci sono varie cose che si possono fare. In primo luogo, possiamo sottoporre a un downsamping sicuro da 500Hz a ~ 200Hz, poiché anche tenendo conto del limite di Nyquist, l'attività cerebrale non si verifica realmente a oltre 100Hz. Potremmo anche sottocampionare dall'insieme dei canali (es. Centra sulle aree uditive) ma preferiremmo non farlo a priori , poiché potrebbero esserci attività in altre aree (frontali ecc.) Che potrebbero essere di interesse. Probabilmente possiamo anche rilasciare una parte della finestra temporale. Forse solo i primi 2 sono importanti per l'attività? Non è veramente noto. Ovviamente tutti urleranno " Riduzione dimensionale! ", ma non è nemmeno banale. Innanzitutto, dovremmo stare molto attenti alle divisioni treno / test (vedi 2.) e non è nemmeno ovvio se farlo prima o dopo la generazione di funzionalità. In secondo luogo, oltre che costoso convalida incrociata o scrupolosa ispezione visiva, non esiste un modo ovvio per selezionare il metodo appropriato o il numero appropriato di dimensioni. Ovviamente potremmo semplicemente usare ad esempio PCA, ICA o proiezioni casuali e sperare per il meglio ....

  2. Questo è difficile. Se nel set di addestramento sono presenti campioni successivi, è probabile che si sovrautilizzi il set di allenamento, mentre se si dividono i campioni successivi nel treno e nei set di test, è probabile che si adatti al set di allenamento, ma che si possa comunque sovrautilizzare il set di test. Sembra che ci siano varie opzioni qui:

    • Classificazione per singolo soggetto . Prendi ogni singolo soggetto da solo e dividi in base alle epoche. Questo dovrebbe essere il compito più semplice, poiché non stiamo cercando di prevedere attraverso i cervelli. All'interno di questo si potrebbero usare le due epoche rimaste per la validazione incrociata. Per completezza si dovrebbero ruotare tutte le combinazioni. Segnaleremmo semplicemente l'accuratezza media su tutte le materie. Ovviamente non ci aspetteremmo che questi modelli si generalizzino bene.
    • All'interno della classificazione delle materie . Prendi tutti i soggetti insieme e dividi in base alle epoche. Questo potrebbe in effetti essere il compito più semplice, poiché avremo visto tutti i soggetti in formazione. Tuttavia, probabilmente non ci aspetteremmo che i modelli si generalizzino bene con le nuove materie. All'interno di questo si potrebbero usare le due epoche rimaste per la validazione incrociata. Per completezza si dovrebbero ruotare tutte le combinazioni.
    • Classificazione tra soggetti . Conosciuto anche come "congedo", in cui una singola materia viene presa come dati di test e il resto viene utilizzato per la formazione. Vorremmo quindi ruotare su tutti i soggetti. La convalida incrociata verrebbe quindi eseguita su soggetti. Ci aspetteremmo che questo sia un compito molto più difficile, poiché stiamo cercando di prevedere un "nuovo cervello" ogni volta. Qui ci aspetteremmo che i modelli si generalizzino bene alla popolazione più ampia, sebbene vi sia un problema di affidabilità test-retest (cioè quanto eccesso di adattamento è causato da correlazioni temporali).
  3. Questo è un classico problema "ago in un pagliaio" - il segnale reale relativo al riconoscimento del genere musicale, o qualsiasi elaborazione specifica del genere, è probabilmente minuscolo rispetto alla "zuppa" di attività nel cervello. Ci sono anche notevoli manufatti che possono essere rimossi solo parzialmente (principalmente legati al movimento). Qualsiasi caratteristica derivata dai dati e qualsiasi modo in cui i dati vengono trattati devono evitare di distruggere parte del segnale di interesse.

  4. Qui si potrebbe immaginare di fare varie cose. Il primo sarebbe semplicemente usare i dati grezzi (concatenati in un vettore) come vettore delle caratteristiche. Non sono sicuro di quanto sia fruttuoso, tuttavia, penso che questi vettori sarebbero probabilmente essenzialmente casualmente uniformi. Questa è davvero una domanda sull'elaborazione del segnale, ma ci sono alcune linee guida generali che si possono seguire. Uno è quello di eseguire un'analisi standard di Fourier su una finestra scorrevole, da cui i componenti possono essere suddivisi in bande di frequenza distinte (alfa / beta / gamma ecc.) E statistiche come queste (media, deviazione standard ) possono essere utilizzate come caratteristiche. Oppure si potrebbero usare Wavelets, Hilbert Transforms o persino tentare di cercare attrattori caotici. Naturalmente abbiamo quindi la scelta di kernel (lineari, polinomiali, RBF ecc.) Che moltiplicano il numero di permutazioni. Forse la cosa migliore da fare qui è generare quanti più set di funzionalità possibili e quindi utilizzare MKL o metodi di potenziamento per combinarli insieme.

Come affronteresti questo tipo di set di dati (se non questo in particolare)? C'è qualcosa che mi è mancato lungo la strada? Qual è la strategia più probabile per avere successo, senza spendere infinite quantità di tempo e risorse di calcolo per i ricercatori?

Risposte:


4

@tdc. Tutti e molti altri problemi che hai menzionato qui per quanto riguarda l'analisi dei dati delle neuroscienze, tra cui: riduzione della dimensionalità, classificazione entro / tra i soggetti, rapporto segnale-rumore, ecc. Ecc., Vengono gestiti dalla cassetta degli attrezzi EEGLAB , che sono stati appositamente progettati per la gestione di questo tipo di dati neuroscientifici:

EEGLAB è un toolbox interattivo Matlab per l'elaborazione di EEG, MEG e altri dati elettrofisiologici continui e relativi agli eventi che incorporano analisi dei componenti indipendenti (ICA), analisi tempo / frequenza, rifiuto di artefatti, statistiche relative agli eventi e diverse utili modalità di visualizzazione della media e dati a prova singola.

Pertanto, per quanto riguarda la tua domanda "Qual è la strategia più probabile per avere successo, senza spendere infinite quantità di tempo da ricercatore", vorrei incoraggiarti a guardare il seminario online EEGLAB e continuare da lì ...

Aggiornamento: per ulteriori informazioni su ML, dai un'occhiata al (nuovo) modello BCILAB


1
In realtà ho usato EEGLAB in passato, anche se principalmente sono le funzioni sottostanti piuttosto che la GUI completa (che tendeva ad essere un po 'lenta e instabile). Tuttavia è principalmente orientato all'analisi univariata di massa piuttosto che all'analisi multivariata, anche se ammetto di non averlo esaminato da un po '. Ne hai esperienza?
TCD

Penso che abbiano fatto grandi progressi negli ultimi due anni ... e sto usando sia la GUI che la funzione matlab. Questo workshop del 2010 è molto utile e molti bug sono stati corretti, molti modelli sono stati aggiunti come STUDY e altri. Sono molto contento che mi fa risparmiare tempo e denaro, tuttavia tieni presente che sto lavorando principalmente con dati EEG e non con MEG.
Dov

1
ok interessante. In linea di principio non vedo alcuna differenza tra ELETTROENCEFALOGRAMMA e MEG, poiché essenzialmente misurano sia l'attività cerebrale elettrica, a parte i tipi di artefatti e il numero di sensori. Hai combinato EEGLAB con Machine Learning?
TCD

sicuro. tutto il tempo. è tutto in matlab ... quindi una volta caricati i tuoi dati in EEGLAB. puoi usare PCA / ICA (questo è quello che sto facendo) e poi allenare il tuo classificatore / clustering preferito SVM, fisher o k-mean..solo il nome.
Dov

1
Questa è un'ottima risposta per il suo scopo, ma sarebbe bello vedere un riassunto di come ciascuno di questi problemi viene gestito indipendentemente da una cassetta degli attrezzi che si basa su un sistema proprietario.
stella luminosa il
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.