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:
- Il set di dati non si adatta alla memoria
- Ci saranno forti correlazioni temporali nei dati e la variazione tra soggetti sarà enorme. Di conseguenza non è ovvio come dividere i dati
- Il rapporto segnale-rumore è molto basso
- Non è ovvio quali sarebbero le caratteristiche corrette per un classificatore
Prendendo questi a turno:
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 ....
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).
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.
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?