Vorhersage von epileptischen Anfällen anhand von EEG-Daten mittels Machine Learning
Von Gareth Jones, University College of London
Etwa 20–40 % der epileptischen Anfälle sprechen nicht auf Antikonvulsiva an. Infolgedessen haben Menschen mit Epilepsie keine Möglichkeit zu wissen, wann sie einen Anfall bekommen. Deshalb können alltägliche Aktivitäten wie Autofahren, Schwimmen oder andere Aktivitäten, bei denen ein Anfall besonders gefährlich wäre, problematisch für sie sein.
Dieses Problem wurde von einem kürzlich durchgeführten Kaggle-Wettbewerb aufgegriffen, indem die Teilnehmer dazu aufgefordert wurden, Algorithmen zu entwickeln, die epileptische Anfälle anhand von Aufzeichnungen des menschlichen intrakraniellen Elektroenzephalogramms (EEG) vorhersagen können (Abbildung 1).
An dem von MathWorks, dem National Institutes of Health (NINDS), der American Epilepsy Society und der University of Melbourne unterstützten Wettbewerb beteiligten sich 478 Teams und 646 Wettbewerber aus aller Welt.
Die von mir in MATLAB® entwickelten Algorithmen erhielten die höchste Bewertung unter den Einzelteilnehmern und die dritthöchste im Gesamtwettbewerb.
Zugriff auf die EEG-Daten und Vorverarbeitung
Die EEG-Daten stammten aus einer von der University of Melbourne durchgeführten Langzeitstudie.
In dieser Studie wurden mehrere Monate lang intrakranielle EEG-Aufzeichnungen von 15 Epilepsie-Patienten über 16 chirurgisch eingepflanzte Elektroden mit einer Abtastrate von 400 Hz erfasst. In der ursprünglichen Studie konnten die Forscher bei etwa 50 % der Testpersonen keine zuverlässige Vorhersage der Anfälle machen.
Den Teilnehmern des Kaggle-Wettbewerbs wurden fast 100 Gigabytes an EEG-Daten von drei der Testpersonen zur Verfügung gestellt. Jeder zehnminütige Abschnitt enthielt entweder präiktale Daten, die vor einem Anfall aufgezeichnet wurden, oder interiktale Daten, die über einen langen Zeitraum, in dem es zu keinen Anfällen kam, aufgezeichnet wurden. Unsere Aufgabe bestand darin, Algorithmen zu entwickeln, mit denen zuvor nicht gesehene Abschnitte als präiktal oder interiktal klassifiziert werden konnten.
Kaggle-Teilnehmer erhielten kostenfreien Zugang zu MATLAB, allerdings war die Verwendung von MATLAB nicht verpflichtend. Für mich stand schnell fest, dass ich MATLAB verwenden würde. Die Wettbewerbsdaten wurden in MAT-Dateien zur Verfügung gestellt, was einen einfachen Zugriff über MATLAB möglich machte. Zudem verwende ich MATLAB in allen meinen Forschungsarbeiten zur Erfassung und Analyse von Daten.
Ich begann mit der Verknüpfung von beliebigen sequenziellen Abschnitten einer Länge von 10 Minuten (Abbildung 2). Anschließend unterteilte ich die gesamten Daten in Perioden, oder Zeitfenster, die in der Länge von 50 Sekunden bis zu 400 Sekunden variierten. Wichtig war dabei, unterschiedliche Periodenlängen auszuprobieren, da aus den Daten nicht hervorging, in welchen Zeiträumen voraussagbare Merkmale in den Daten vorhanden waren, oder wie schnell sie sich mit der Zeit ändern.
Extraktion von Merkmalen und Identifizierung der geeignetsten Modelle für maschinelles Lernen
Anders als bei vielen Datenanalyse-Wettbewerben war im Wettbewerb zur Vorhersage von Anfällen die Möglichkeit zum Arbeiten mit Rohdaten anstatt mit vorgefertigten Tabellen gegeben. Abgesehen vom Re-Referenzieren waren die Daten in keiner Weise zusätzlich vorverarbeitet. Aufgrund dessen, dass die Daten nicht strukturiert waren, konnte ich die Daten optimal nutzen, indem ich meine eigene Vorverarbeitung und Merkmalsextraktion durchführte.
Die zum Trainieren von maschinellen Lernmodellen geeigneten Merkmale habe ich mit MATLAB aus den Daten extrahiert. Ganz konkret habe ich Algorithmen entwickelt, die für jede Periode die Leistungen im Frequenzband, statistische Kenngrößen für jeden Kanal (wie z.B. Mittelwert, Standardabweichung, Quadratisches Mittel, Schiefe und Kurtosis) sowie die Korrelation zwischen Kanalpaaren im Zeit- und Frequenzbereich errechnen. Ich habe die Verarbeitungszeit nahezu halbiert, indem ich mit der Parallel Computing Toolbox™ die Trainings- und Testdaten auf verschiedenen Prozessorkernen gleichzeitig verarbeitet habe.
Da ich die Algorithmen für den Wettbewerb in meiner Freizeit und nicht als Hauptforschungsaktivität entwickelt habe, wollte ich so schnell wie möglich eine Lösung erarbeiten. Ich habe bereits Erfahrung mit überwachtem maschinellem Lernen in anderen Umgebungen, allerdings habe ich mich dafür entschieden, die Classification-Learner-App in der Statistics and Machine Learning Toolbox™ zu verwenden, um rasch den besten Klassifikationsmodelltyp für die von mir extrahierten Merkmale zu finden. Innerhalb von Minuten trainierte und bewertete die App Modelle automatisch, basierend auf Entscheidungsbäumen, Diskriminanzanalyse, Support Vector Machines, logistischer Regression, Nearest Neighbors und Ensemble-Verfahren mit Entscheidungsbäumen mit Boosting. Mit Python oder R hätte es mich Tage, wenn nicht sogar Wochen an Entwicklungszeit gekostet, alle diese Modelle für maschinelles Lernen zu konstruieren und zu testen.
Verbesserung der Vorhersagegenauigkeit
Als Nächstes nahm ich mir die Verbesserung der Leistung der beiden Machine-Learning-Modelle vor, die von der Classification-Learner-App als am vielversprechendsten identifiziert worden waren: quadratische Support Vector Machines und Random Undersampling (RUS)-Entscheidungsbäume mit Boosting. Nach dem Test verschiedener Merkmale und Periodenlängen habe ich schließlich die 80-Sekunden-, 160-Sekunden- und 240-Sekunden-Periodenlängen als die identifiziert, die für die Klassifikation am wichtigsten sind (Abbildung 3). Da ich mit mehreren Trainings- und Testdatensätzen gearbeitet habe, musste ich viele Tabellen für die unterschiedlichen Kombinationen von Merkmalen und Periodenlängen verwalten und benennen. Zur programmatischen Beschriftung der Tabellen habe ich die neue String-Klasse in MATLAB verwendet. Mit der String-Klasse wurde ein komplexer Code-Block, den ich vorher zum Beschriften genutzt hatte, überflüssig.
Nach dem Testen der Machine-Learning-Algorithmen mit lokalen Daten, habe ich sie an die Website des Kaggle-Wettbewerbs übermittelt, auf der sie mit einem Satz von nicht bekanntgegebenen Testdaten ausgeführt wurden. Zur Bewertung der Algorithmen wurde die Fläche unter der Grenzwertoptimierungskurve (area under the receiver operating characteristic curve (AUC)) berechnet. Dies ist ein übliches Maß für die Beurteilung von binären Klassifizierern und es ist auch die offizielle Bewertungsmetrik des Wettbewerbs. Damit die Teilnehmer nachverfolgen konnten, wie gut ihre Algorithmen im Vergleich zu denen der Mitbewerber abgeschnitten haben, wurden die Ergebnisse dieser Bewertung auf einer regelmäßig aktualisierten öffentlichen Bestenliste veröffentlicht.
Um die Genauigkeit meiner Algorithmen zu verbessern, habe ich verschiedene andere Techniken ausprobiert, einschließlich der Optimierung von Hyperparametern. Eine der effektivsten Techniken, die ich verwendet habe, war die Implementierung eines Ensemble-Klassifizierers durch die Kombination von SVM mit den RUS-Baummodellen mit Boosting. Die Mittelung der Vorhersagen der beiden Modelle führte zu einer drastischen Verbesserung der Genauigkeit, wodurch der Ensemble-Klassifizierer besser abschnitt, als jedes seiner Komponenten-Modelle für sich genommen. Die Ergebnisse waren die folgenden:
SVM alleine: ~0,65 AUC
RUS alleine: ~0,72 AUC
SVM und RUS zusammen: ~0,80 AUC C
Ein erster Schritt in Richtung verbessertes Epilepsie-Management
Die meisten der Wettbewerbsteilnehmer trainierten drei verschiedene Modelle zum maschinellen Lernen – eines für jeden Epilepsie-Patienten. Ich habe ein einziges allgemeines Modell erstellt, das für alle drei Patienten geeignet war, da ich der Meinung war, dass diese Lösung in der klinischen Praxis effizienter sein würde als eine Lösung, die die Erfassung von EEG-Daten für jeden einzelnen Patienten erfordert. Aus klinischer Sicht ist es ein wichtiges Ziel (und ein Problem), Modelle zu erstellen, die generell für alle Patienten verwendet werden können, und mit denen Vorhersagen für neue Personen getroffen werden können, statt für jeden einzelnen Patienten verschiedene Klassifizierer zu trainieren. Es muss sich erst noch zeigen, wie effektiv die im Wettbewerb erstellten Modelle bei der Vorhersage für neue Patienten sind. Als ersten Schritt zur Integration der Algorithmen aus dem Wettbewerb in klinische Studien führen die Forscher der University of Melbourne weitere Bewertungen der eingereichten Algorithmen durch. Dazu werden Daten verwendet, die im Rahmen des Wettbewerbs nicht zugänglich gemacht wurden.
Neben dem potenziellen Nutzen des Wettbewerbs für die Epilepsieforschung habe ich auch persönlich von der Möglichkeit zur Teilnahme profitiert. Für mich war der Wettbewerb eine sehr anregende Art, neue Fähigkeiten zu erwerben und gleichzeitig möglicherweise die Forschung in einem Bereich voranzubringen, von dem Millionen von Menschen, die von Epilepsie betroffen sind, weltweit profitieren können.
Veröffentlicht 2017 - 93132v00