In diesem Artikel beschreiben wir, wie man bei der Auswahl von Variablen trotz Kreuz-Validierung verzerrte Ergebnisse bekommt, wie eine möglichst unverzerrte Selektion Pipeline aussehen sollte, und wie du sie unkompliziert in R oder Python implementieren kannst.
Dieser Beitrag basiert auf einem spannenden Interview mit Carl Brunius, Autor des MUVR Softwarepakets in R, der sich mit uns ausgetauscht und uns zu der Python-Übersetzung (Omigami) motiviert hat.
Bei der Analyse von Untargeted Metabolomics Daten besteht das Ziel oft darin, potentielle Biomarker zu identifizieren: Massenspektrometrie-Peaks, die bei zwei verschiedenen Personengruppen (z.B. gesund vs. erkrankt oder Behandlungsmethode A vs. B) unterschiedlich häufig auftreten.
Sobald diese Biomarker-Kandidaten identifiziert sind, müssen sie anschließend validiert werden, damit sie am Ende als Biomarker - und somit als Marker anhand dessen man zwei Gruppen eindeutig unterscheiden kann - eingesetzt werden können.
Der Schritt der Validierung der ausgewählten Kandidaten nimmt viel Zeit und Geld in Anspruch. Wir sollten uns also bereits möglichst sicher sein, dass die ausgewählten Kandidaten auch bei neuen Patientengruppen angewendet werden können und nicht durch Zufall oder Bias entstanden sind. Wenn keiner der Kandidaten es durch die Validierungsphase schafft, dann war der gesamte Prozess umsonst.
Angesichts der Tatsache, wie wichtig die Auswahl der tatsächlich relevanten Peaks ist, ist es erstaunlich, wie selten die Robustheit einer Variablen Selektions Methode getestet wird.
Besonderheiten von Omik Datensätzen
Im Vergleich zu Datensätzen aus anderen Fachrichtungen sind Omik Datensätze in mehrfacher Hinsicht speziell. Sie haben für gewöhnlich viele Variablen (oft über 5.000) und wenige Datenpunkte (20-3.000).
Aufgrund der vielen Variablen und der kleinen Anzahl an Proben führen univariate Standardanalysen und einfache statistische Tests oft zu schlechten Ergebnissen und starkem Overfitting: Hat man Tausende von Variablen, werden einige davon unweigerlich wie zuverlässige Biomarker aussehen - schlicht per Zufall. Sobald man diese Biomarker anschließend bei neuen Patienten validieren will, funktionieren sie jedoch nicht mehr. Die Methode hat Variablen identifiziert in Realität keine Bedeutung haben.
Techniken für präzise, zuverlässige Pipelines
Carl hat uns verschiedene Techniken nahegelegt, die dabei helfen, die entscheidenden Variablen in Untargeted Metabolomics - oder andere Omik Datensätze - genauer und zuverlässiger zu selektieren. Die wichtigsten Bestandteile sind dabei folgende:
- Doppelte Kreuzvalidierung;
- Relevante Variablen mit multivariaten Modellen zu selektieren;
- Die schlechtesten Variablen rekursiv zu eliminieren; und
- Permutationstests anzuwenden, um die eingesetzten Techniken zu evaluieren und eine solide Vergleichsbasis für Evaluationsmetriken zu etablieren.
Wir befassen uns außerdem mit dem MUVR Softwarepaket für R und dem Omigami Paket für Python, die alle oben genannten Ansätze in jeweils einem einfachen Tool integriert haben.
Hintergrundinformationen über Bias und Overfitting
Jedes Modell, das auf einem bestimmten Datensatz trainiert wurde, kann etwas gelernt haben, das sich nicht auf andere Daten übertragen lässt. Jede Art von Bias, Abweichungen oder zufälligen Mustern in den Trainingsdaten kann dazu führen, dass das Modell sich übermäßig an diese spezifischen Daten anpasst.
Was in Carl’s Augen oft übersehen wird, ist, dass jede Art von "Verbesserung", die an den Daten vorgenommen wird - jede Bereinigung, Aufbereitung, Imputation, Filterung, Korrektur oder Normalisierung - auch eine gewisse Verzerrung mit sich bringt. Keine Veränderung der Daten ist ohne Risiko.
Selbst Wissenschaftlern, die über solide statistische Kenntnis verfügen, passieren oft Fehler, die auf falscher Intuition beruhen - auch in der Omik-Forschung.
Das Problem multipler Tests & warum man keine univariaten Methoden zur Variablenselektion verwenden sollte
Viele wissenschaftliche Untersuchungen drehen sich um einen p-Wert. Man stellt eine Hypothese auf, führt ein Experiment durch und prüft, wie wahrscheinlich es ist, dass die beobachteten Ergebnisse durch Zufall entstanden sein könnten.
Bei der schier unbegrenzten Rechenleistung, die uns mittlerweile zur Verfügung steht, ist es verlockend, jede mögliche Variable zu testen, und jede biologische Verbindung als unabhängige Hypothese zu testen. Das ist jedoch problematisch, da wir bei 10.000 univariaten Tests, die jeweils eine andere "Hypothese" testen, zwangsläufig scheinbar aussagekräftige Muster finden - selbst in komplett zufälligen Daten.
Standardmäßig versucht man solchen Ergebnissen mithilfe von statistischen Korrekturen für multiples Testen (wie die Bonferroni-Korrektur oder die Falscherkennungsrate) vorzubeugen. Carl weist jedoch auf wichtige Probleme hin:
- False Negatives: Wenn wir statistische Anpassungen für Gesamtzahl der (tausenden) gemessenen Variablen machen, dann laufen wir Gefahr, wenige oder gar keine signifikanten Variablen mehr zu erhalten. Wir haben somit eine hohe Gefahr von False Negatives: Selbst bei tatsächlich informative Variablen verwerfen wir die Nullhypothese nicht - aufgrund übermäßiger statistischen Korrekturen.
- Variablen sind in der Realität keine relevanten Hypothesen: Statistische Korrekturen gehen davon aus, dass jede unserer Variablen, und damit jeder unserer Tests, tatsächlich eine relevante Hypothese ist. Wenn wir uns jedoch im Vorhinein überlegen würden, ob bestimmte biologische Verbindungen überhaupt relevant sind, würden wir viele dieser Hypothesen erst gar nicht testen.
- Keine Unabhängigkeit: Die Korrektur-Berechnungen gehen außerdem davon aus, dass die getesteten Hypothesen voneinander unabhängig sind. Einer Sache können wir uns jedoch sicher sein, wenn es um Omik-Daten geht: So gut wie nie sind die Variablen voneinander unabhängig.
Unsere Variablen sind also weder alle relevant noch unabhängig voneinander. Es ist also nicht ganz klar, für welche Anzahl von Variablen wir tatsächlich korrigieren müssen - es sind aber mit Sicherheit nicht alle. Und selbst wenn wir sehr konservativ korrigieren: Wir haben trotzdem auch noch False Positives - und definitiv viele False Negatives.
Unserer Erfahrung nach ist es wesentlich erfolgversprechender, multivariate Analysen durchzuführen, um eine interessante, relevante Teilmenge an Variablen zu identifizieren. Anschließend können wir die entstandene - drastisch reduzierte - Menge an Variablen nacheinander modellieren und Korrekturen für Univariate Tests vornehmen. Doch auch dieser Ansatz hat Schwachstellen, die vor allem mit False Positives zusammenhängen.
Wie Modelle trotz Kreuzvalidierung trotzdem deutlich besser aussehen als sie tatsächlich sind
Um multivariate Modelle zu trainieren, folgt man häufig diesem Prozess: 1) ein erstes Modell wird erstellt, 2) anhand der Feature Importance diese Modell bestimmt man die aussagekräftigsten Variablen (z.B. 20 von 10.000), 3) anhand dieser Variablen trainiert man ein Modell und optimiert dessen Parameter, um die Prognosegenauigkeit zu verbessern.
Diese Technik birgt jedoch ein massives Risiko fürs Overfitting. Das Modell mag anhand der Testdaten einen guten Eindruck vermitteln, in Wirklichkeit aber wurden durch Schritt 1) die Variablen genau so selektiert, dass das Modell auf den Testdaten nur gut performen kann. Trainieren wir ein Modell anhand dieser Variablen, wird es genau die gleichen Muster lernen, die auch dazu geführt haben dass wir die Variablen selektiert haben, und dann “überraschend gut” auf den Testsätzen funktionieren. Im Endeffekt sieht das Modell dann um einiges vielversprechender aus, als es tatsächlich ist, weil viele Informationen über die Muster im Testdatensatz anhand der Variablenselektion in Schritt eins transfundiert wurden.
Anhand von Permutationstests konnte Carl zeigen, dass eine standardmäßige Kreuzvalidierung nicht ausreicht, um diese Art von Bias zu vermeiden. Wir brauchen deshalb eine ausgefeiltere Validierungsstrategie.
Eine zweistufige Lösung für die Auswahl relevanter Variablen
Bei der geringen Probenmenge, mit der man in der Metabolomik normalerweise zu tun hat, und den verschiedenen Ursachen von Bias in den Messungen, ist es immer schwierig, zuverlässige Ergebnisse zu erhalten. Carl Brunius und seine Kollegen haben jedoch ein Kreuzvalidierungsverfahren entwickelt, das es ermöglicht, die aussagekräftigsten Variablen zu identifizieren und gleichzeitig das Risiko von Overfitting zu minimieren. Das Verfahren basiert auf der Kombination von wiederholter doppelter Kreuzvalidierung mit der sogenannten “Recursive Feature Elimination”.
1. Teil: Recursive Feature Elimination
Multivariates Modellieren mit Recursive Feature Elimination beinhaltet folgende Schritte:
- Mehrere multivariate Modelle werden trainiert und optimiert;
- Die Variablen werden hinsichtlich ihrer Relevanz gemittelt und sortiert;
- Die Variablen mit der geringsten durchschnittlichen Relevanz werden entfernt.
Auf diese Weise lassen sich bessere Ergebnisse als bei der Durchführung mehrerer univariater Tests erzielen. Außerdem werden auch Co-korrelationen zwischen den Variablen berücksichtigt. Beispielsweise wird ein Metabolit, der als Nebenprodukt eines anderen auftritt, dabei aber schwächere Signale liefert, am Ende eliminiert. So bleibt nur der Metabolit übrig, der das stärkere Signal darstellt.
“All-relevant” und “minimal-optimal” - Strategien für die Variablenauswahl
Techniken zur Variablenauswahl können grob in “minimal-optimal” und “all-relevant” kategorisiert werden.
Carl empfiehlt die “minimal-optimal” Strategie wird dann eingesetzt, wenn wir versuchen, den kleinste Gruppe von Variablen zu finden, die das Ergebnis optimal vorhersagen kann. Dies kann z.B. bei der Identifizierung potentieller diagnostischer Biomarker für bestimmte Krankheiten nützlich sein.
Im Gegensatz dazu zielt die “all-relevant” Strategie darauf ab, alle Variablen zu finden, die irgendwie mit dem Target in Zusammenhang stehen, einschließlich schwacher oder redundanter Variablen. Diese Strategie ist beispielsweise dann sinnvoll, wenn wir biochemische Systeme oder die Mechanismen von Stoffwechselvorgängen erforschen.
2. Teil: Mehrfache doppelte Kreuzvalidierung
Kreuzvalidierung - was bedeutet, ein Datensatz wird in mehrere Trainings- und Testsets geteilt und die Modelle so optimiert, dass sie auf allen Testdatensätzen gute Ergebnisse liefern - ist eine effektive Technik, um Overfitting zu vermeiden.
Wenn wir aber sowohl Variablen auswählen, optimale Parametereinstellungen für die trainierten Modelle finden als auch Overfitting vermeiden möchten, dann ist eine standardmäßige, einfache Kreuzvalidierung in der Regel nicht ausreichend.
Wählen wir die Variablen auf Grundlage der gleichen Datenpunkte aus, die wir auch zur Schätzung des Vorhersagefehlers verwendet haben, kommt es selbst bei Kreuzvalidierung zur Verzerrung durch beeinflusste Selektion. Dadurch wird das Modell übermäßig an die vorhandenen Datenpunkte angepasst und die wahre Fehlerquote des Modells drastisch unterschätzt. Als Ergebnis kommt es dann bei der Variablenauswahl höchstwahrscheinlich zu False Positives.
Ein Lösungsansatz besteht darin, die Kreuzvalidierung in zwei Schleifen zu durchzuführen:
- Eine innere Kreuzvalidierung, um Variablen auszuwählen und Modellparameter zu optimieren;
- Eine äußere Kreuzvalidierung, um die Modelle zu evaluieren, die auf den inneren Daten trainiert werden.
Jede Schleife wird mehrfach durchgeführt, und bei jedem Durchlauf wird der Datensatz neu in Training und Testdatenpunkte aufgeteilt. Anschließend werden die jeweils gefunden Variablen und Parametereinstellungen über alle Durchläufe gemittelt.
Vorhersage treffen anhand mehrerer, statt nur einem Modell
Es wird oft übersehen, dass wir nach einer Kreuzvalidierung eigentlich nur wissen, wie gut die jeweiligen Modelle funktionieren, wenn sie auf ihren jeweiligen Trainingssets trainiert und auf ihren Testsets getestet wurden.
An dieser Stelle ist die Versuchung groß, einfach die durchschnittlichen Parameter zu nehmen und damit ein Modell auf dem gesamten Datensatzes zu trainieren. Aber woher wissen wir, dass das tatsächlich funktioniert? Carl erwähnte, dass es dafür keine solide theoretische Basis gibt. Selbst wenn die Variablen und Modellparameter, wie z.B. die Anzahl der Komponenten im PLS-DA, richtig gewählt sind, müssen wir immer noch mit möglichem Overfitting auf dem Datensatz rechnen.
Stattdessen empfiehlt Carl, dass wir unsere Teilmodelle einfach beibehalten, und die Vorhersagen dieser Modelle auf neuen Proben anwenden.
Als zusätzlichen Vorteil behalten wir so eine gewisse Variabilität in unseren Prognosen bei, die einen Teil der zugrunde liegende biologische Variabilität abbildet.
Zusätzlich zur Durchschnittsberechnung der Vorhersagen können wir außerdem alle Vorhersagen visuell darstellen, um ein Bild davon zu bekommen, wie verlässlich die jeweiligen Vorhersagen sind. Dabei gibt es grob zwei mögliche Bilder die sich ergeben:
- Die Vorhersagewerte der Modelle liegen eng beieinander: In diesem Fall ist der Prognosewert verlässlicher.
- Die Vorhersagewerte sind breit gestreut: In diesem Fall sollten wir mit der Vorhersage vorsichtiger sein.
Mit Hilfe von Permutationstests können wir eine Baseline bestimmen
Standard T-Tests gehen von einer zufälligen Baseline aus, doch in der Omics-Forschung ist das oft nicht der Fall. Stell dir die Frage: Könnte ein zufälliger Datensatz zu einem ähnlich genauen Ergebnis führen? Lautet die Antwort ja, dann sind die getesteten Modelle wahrscheinlich weniger gut als zuerst gedacht.
In diesen Fällen müssen wir unsere Annahmen über die Baseline nach oben korrigieren. Eine praktische Lösung bietet hier der Permutationstest.
Bei Permutationstests durchlaufen die Daten unsere gesamte Modellierungs- und Feature Selection Pipeline mit einer zufällig permutierten Zielvariable (Kohortenzuordnung). Wiederholen wir den Permutationstest mehrere Male, erhalten wir eine Verteilung dessen wie gut Modelle trotz zufälligen Daten funktionieren (und das ist dann unsere wahre Nullhypothese). Nun können wir einen aussagekräftigen p-Wert für die Genauigkeit unserer Modells ableiten, indem wir das tatsächliche Modell mit der Verteilung aus unserem Permutationstest vergleichen.
Darüber hinaus erlaubt uns eine Nullhypothesen-Verteilung auch den objektiven Vergleich verschiedener Variablenselektions-Pipelines: Pipelines, bei denen die Nullhypothesen-Verteilung so aussieht wie wir es von zufälligen Modellen erwarten würden (e.g. AUC = 0.5), weisen wenig Overfitting und Bias auf. Umgekehrt beweisen Pipelines mit höherer Genauigkeit bei Zufallsdaten eine starke Tendenz zu Overfitting und sollten besser vermieden werden.
Wie du diese Technik sofort anwenden kannst
Mit dem MUVR Softwarepaket (in R) oder dem omigami (in Python) kannst du ganz einfach eigene Variablenselektion auf Untargeted Metabolomics Daten durchführen.
Beide Pakete wenden die in diesem Artikel besprochenen Techniken an, und ermöglichen dir, multivariate Modellierung mit minimal verzerrter Variablenauswahl mit einer wiederholte doppelte Kreuzvalidierung und rekursiver Variablen Elimination zu anzuwenden.
Die ersten Schritte mit Omigami startest du mit pip install omigami.
Brauchst du Unterstützung?
Wenn du dich aktuell mit Untargeted Metabolomics beschäftigst freuen wir uns über deine Herausforderungen auszutauschen.