Hallo zusammen!
Ich habe in den letzten drei Tagen an der Verfeinerung eures BCI2-Paradigmas gearbeitet.
Es nutzt nun BCILAB-Routinen zum Filtern (flt_spectrum) und ist nun bedeuend schneller. Ich habe neben der Projektion ueber die Patterns noch eine ueber einen Filter eingebaut -- die Filter sind die mit dem Inversen der geschaetzten Kovatrianz gewichteten Patterns -- es gibt also nun 8 Features, und nicht mehr 4. Ausserdem hat das Paradigma nun eine Visualisierung (Patterns und Filter) und einen freien Parameter ExtrWnd, der das Extraction Window fuer die Bandpower-Schaetzung festlegt, also den Bereich der Vibrationszeit, den wir zum Klassifizieren nehmen. Es gab noch ein Problem (Denkfehler!) mit dem Baseline-Window -- man kann dies online nicht fuer jeden Trial bestimmen. Deswegen wird nun eins zu Beginn gemittelt, welches dann bei der Klassifikation von dem gerade betrachtetem Trial abgexzogen wird.
Das ganze funktioniert bei dem ersten Datensatz recht gut (~80% Guete), aber auch nur, wenn man das Zeitfenster richtig waehlt ([3 6]). Bei den darauf folgenden scheint es nicht ganz so einfach zu sein. Es ist nun jedoch zu spaet, um das ganze noch weiter zu testen.
Morgen werde ich mal schauen, ob es noch eine Moeglichkeit gibt, die Auswahl des Zeitfensters irgendwie visuell zu unterstuezten. Ausserdem, sollte der neue Code nochmal mit der urspruenglichen Nicht-BCILAB-Version abgeglichen werden -- es kann sein, dass sich in der Zwischenzeit ein Fehler eingeschlichen hat. Wuerdet ihr das morgen uebernehmen?
Morgen wird das Basketparadigma fertig sein. Ich habe heute schon mal einen kleinen Pseudo-Online Test gemacht, der gut aussah und sehr einfach zu starten war. Das nur zur Motivation -- Details spaeter.
Die Nicht-Stationaritaeten sind leide rimmer noch da. Das heisst, der Klassifikator des ersten Datensatzes laesst sich nicht auf spaetere anwenden. Das Problem laesst sich ein wneig durch nicht-lineare Klassifikatoren beheben (40% Fehler auf dem vollstaendigen Datensatz, anstatt 50% mit LDA). Da muessen wir aber noch dran arbeiten.
Das Testen der verschiedenen Zeitfenster macht ihr besser ueber die Command-Line als ueber die GUI. Dazu macht ihr es EINMAL ueber die GUI und veraendert es danach ueber den folgenden Code:
EEG = exp_eval_optimized(io_loadset('Z:\bcilab_data\VP005\2to4.set','channels',1:64));
[DATENSATZ LADEN]
lastapproach.parameters{1}.pred.fex.extrwnd = [4 7]
[ZEITFENSTER BEISPIELSWEISE AUF [4 7] SETZEN]
[trainloss,lastmodel,laststats] = bci_train('Data',EEG,'Approach',lastapproach,'TargetMarkers',{'101','102'});
[KLASSIFIZIEREN]
Das neue Paradigma habe ich hochgeladen.
Viele Gruesse -- und viel Erfolg!!
Thorsten