Ich habe Zugriff auf einen sehr großen Datensatz. Die Daten stammen aus MEG- Aufnahmen von Personen, die Musikausschnitte aus einem von vier Genres hören. Die Daten sind wie folgt:
- 6 Themen
- 3 Experimentelle Wiederholungen (Epochen)
- 120 Prüfungen pro Epoche
- 8 Sekunden Daten pro Versuch bei 500 Hz (= 4000 Abtastungen) von 275 MEG-Kanälen
Jedes "Beispiel" hier ist also eine Matrix mit der Größe [4000x275], und es gibt 2160 solcher Beispiele, und das vor jeder Merkmalsextraktion. Ziel ist es, das Genre anhand des Gehirnsignals vorherzusagen (4-Klassen-Klassifikation).
Natürlich gibt es hier einige herausfordernde Probleme, nämlich:
- Der Datensatz passt nicht in den Speicher
- Es wird starke zeitliche Korrelationen in den Daten geben, und die Variation zwischen den Subjekten wird enorm sein. Infolgedessen ist es nicht offensichtlich, wie die Daten aufgeteilt werden sollen
- Das Signal-Rausch-Verhältnis ist sehr niedrig
- Es ist nicht offensichtlich, welche Funktionen für einen Klassifikator korrekt sind
Nehmen Sie diese der Reihe nach:
Es gibt verschiedene Dinge, die man tun kann. Erstens können wir sicher von 500 Hz auf ~ 200 Hz heruntersampeln, da selbst unter Berücksichtigung der Nyquist-Grenze die Gehirnaktivität bei über 100 Hz nicht wirklich auftritt. Wir könnten auch eine Teilstichprobe aus dem Satz von Kanälen (z. B. über Hörbereichen zentrieren) ziehen, aber wir möchten dies lieber nicht a priori tun , da es möglicherweise Aktivitäten in anderen Bereichen (frontal usw.) gibt, die von Interesse sein könnten. Wir können wahrscheinlich auch einen Teil des Zeitfensters löschen. Vielleicht sind nur die ersten 2s für die Aufgabe wichtig? Es ist nicht wirklich bekannt. Natürlich wird jeder " Dimensionalitätsreduzierung " rufen! ", aber das ist auch nicht trivial. Erstens müssten wir sehr vorsichtig mit unseren Zug- / Testaufteilungen sein (siehe 2.) und es ist auch nicht klar, ob wir dies vor oder nach der Feature-Generierung tun sollen. Zweitens, außer teuer Kreuzvalidierung oder sorgfältige visuelle Inspektion gibt es keine offensichtliche Möglichkeit, entweder die geeignete Methode oder die geeignete Anzahl von Dimensionen auszuwählen. Wir könnten natürlich nur z. B. PCA, ICA oder zufällige Projektionen verwenden und auf das Beste hoffen ...
Das ist schwierig. Wenn wir aufeinanderfolgende Proben im Trainingssatz haben, werden wir wahrscheinlich den Trainingssatz überanpassen, während wir, wenn wir aufeinanderfolgende Proben in Zug- und Testsätze aufgeteilt haben, wahrscheinlich den Trainingssatz unteranpassen, aber dennoch den Testsatz überanpassen könnten. Hier scheint es verschiedene Möglichkeiten zu geben:
- Einzelfachklassifizierung . Nehmen Sie jedes einzelne Thema für sich und teilen Sie es nach Epochen auf. Dies sollte die einfachste Aufgabe sein, da wir nicht versuchen, über das Gehirn hinweg Vorhersagen zu treffen. Innerhalb dieser könnte man die beiden verbleibenden Epochen zur Kreuzvalidierung nutzen. Der Vollständigkeit halber sollte man alle Kombinationen drehen. Wir würden einfach die durchschnittliche Genauigkeit über alle Themen angeben. Natürlich würden wir nicht erwarten, dass sich diese Modelle überhaupt gut verallgemeinern lassen.
- Innerhalb der Fächerklassifikation . Nehmen Sie alle Themen zusammen und teilen Sie sie nach Epochen auf. Dies kann in der Tat die einfachste Aufgabe sein, da wir alle Fächer im Training gesehen haben werden. Wir würden jedoch wahrscheinlich nicht erwarten, dass sich die Modelle gut auf neue Themen verallgemeinern lassen. Innerhalb dieser könnte man die beiden verbleibenden Epochen zur Kreuzvalidierung nutzen. Der Vollständigkeit halber sollte man alle Kombinationen drehen.
- Klassifizierung zwischen Fächern . Wird auch als "Auslassen" bezeichnet, bei dem ein einzelnes Subjekt als Testdaten verwendet wird und der Rest für das Training verwendet wird. Wir würden uns dann durch alle Themen drehen. Eine Kreuzvalidierung würde dann über Probanden durchgeführt. Wir würden erwarten, dass dies eine viel schwierigere Aufgabe ist, da wir jedes Mal versuchen, ein "neues Gehirn" vorherzusagen. Hier würden wir erwarten, dass sich die Modelle gut auf die größere Population verallgemeinern lassen, obwohl es ein Problem der Zuverlässigkeit von Testwiederholungen gibt (dh wie viel Überanpassung durch zeitliche Korrelationen verursacht wird).
Dies ist ein klassisches "Nadel im Heuhaufen" -Problem - das tatsächliche Signal in Bezug auf die Erkennung des Musikgenres oder eine genrespezifische Verarbeitung ist im Vergleich zur "Suppe" der Aktivität im Gehirn wahrscheinlich winzig. Es gibt auch bemerkenswerte Artefakte, die nur teilweise entfernt werden können (hauptsächlich im Zusammenhang mit Bewegung). Alle Merkmale, die wir aus den Daten ableiten, und alle Arten, wie die Daten behandelt werden, sollten vermeiden, einen Teil des interessierenden Signals zu zerstören.
Hier könnte man sich verschiedene Dinge vorstellen. Das erste wäre, einfach die Rohdaten (zu einem Vektor verkettet) als Merkmalsvektor zu verwenden. Ich bin mir nicht sicher, wie fruchtbar das ist - ich denke, diese Vektoren wären wahrscheinlich im Wesentlichen einheitlich zufällig. Dies ist dann wirklich eine Frage der Signalverarbeitung, aber es gibt einige allgemeine Richtlinien, denen man folgen kann. Eine besteht darin, eine Standard- Fourier-Analyse über ein Schiebefenster durchzuführen, von dem aus die Komponenten in verschiedene Frequenzbänder (Alpha / Beta / Gamma usw.) aufgeteilt werden können, und Statistiken dieser (Mittelwert, Standardabweichung) können als Merkmale verwendet werden. Oder man könnte Wavelets, Hilbert Transforms verwenden oder sogar versuchen, nach chaotischen Attraktoren zu suchen. Dann haben wir natürlich die Wahl zwischen Kerneln (linear, polynomisch, RBF usw.), die die Anzahl der Permutationen multiplizieren. Vielleicht ist es das Beste, hier so viele verschiedene Funktionssätze wie möglich zu generieren und diese dann mithilfe von MKL- oder Boosting-Methoden zu kombinieren.
Wie würden Sie sich dieser Art von Datensatz nähern (wenn nicht speziell diesem)? Gibt es etwas, das ich unterwegs vermisst habe? Was ist die wahrscheinlichste Strategie, um erfolgreich zu sein, ohne unendlich viel Zeit und Rechenressourcen für Forscher aufzuwenden?