Ich bin etwas verwirrt über die Funktionsauswahl und das maschinelle Lernen und habe mich gefragt, ob Sie mir helfen könnten. Ich habe ein Microarray-Dataset, das in zwei Gruppen eingeteilt ist und über 1000 Funktionen verfügt. Mein Ziel ist es, eine kleine Anzahl von Genen (meine Merkmale) (10-20) in einer Signatur zu erhalten, die ich theoretisch auf andere Datensätze anwenden kann, um diese Proben optimal zu klassifizieren. Da ich nicht über so viele Stichproben (<100) verfüge, verwende ich kein Test- und Trainingsset, sondern eine einmalige Kreuzvalidierung, um die Robustheit zu bestimmen. Ich habe gelesen, dass man für jede Aufteilung der Proben eine Merkmalsauswahl durchführen sollte, d. H
- Wählen Sie eine Probe als Testset
- Führen Sie bei den verbleibenden Beispielen die Featureauswahl durch
- Wenden Sie den Algorithmus für maschinelles Lernen mit den ausgewählten Funktionen auf verbleibende Stichproben an
- Testen Sie, ob das Test-Set korrekt klassifiziert ist
- Gehe zu 1.
Wenn Sie dies tun, erhalten Sie möglicherweise jedes Mal andere Gene. Wie erhalten Sie also Ihren "endgültigen" optimalen Genklassifikator? dh was ist Schritt 6.
Was ich unter optimal verstehe, ist die Sammlung von Genen, die für weitere Studien verwendet werden sollten. Angenommen, ich habe einen Krebs- / Normaldatensatz und möchte die Top-10-Gene finden, die den Tumortyp gemäß einer SVM klassifizieren. Ich würde gerne wissen, welche Gene und SVM-Parameter in weiteren Experimenten verwendet werden könnten, um zu prüfen, ob sie als diagnostischer Test verwendet werden könnten.
Antworten:
Dies ist eine sehr gute Frage, mit der ich mich bei der Arbeit mit SNP-Daten konfrontiert sah ... Und ich habe in der Literatur keine offensichtliche Antwort gefunden.
Unabhängig davon, ob Sie LOO oder K-Fold CV verwenden, werden Sie unterschiedliche Funktionen haben, da die Kreuzvalidierungsiteration, wie Sie sagten, die äußerste Schleife sein muss. Sie können sich eine Art Abstimmungsschema vorstellen, das die n-Vektoren der Merkmale bewertet, die Sie aus Ihrem LOO-Lebenslauf erhalten haben (ich kann mich nicht an die Arbeit erinnern, aber es lohnt sich, die Arbeit von Harald Binder oder Antoine Cornuéjols zu überprüfen ). In Abwesenheit einer neuen Testprobe wird normalerweise der ML-Algorithmus erneut auf die gesamte Probe angewendet, sobald Sie die optimalen kreuzvalidierten Parameter gefunden haben. Auf diese Weise können Sie jedoch nicht sicherstellen, dass keine Überanpassung vorliegt (da die Stichprobe bereits für die Modelloptimierung verwendet wurde).
Alternativ können Sie eingebettete Methoden verwenden, mit denen Sie die Rangfolge von Features anhand eines Maßes variabler Wichtigkeit ermitteln können, z. B. in Random Forests (RF). Als Kreuzvalidierung in MDEs enthalten ist, müssen Sie sich nicht um die Sorgen Fall oder Fluch der Dimensionalität. Hier sind einige nützliche Artikel zu ihren Anwendungen in Genexpressionsstudien:n≪p
Da es sich um SVM handelt, können Sie nach bestraften SVM suchen .
quelle
Allgemein gesagt:
Machen Sie Ihre Vorhersagen mithilfe eines einzelnen Modells, das für den gesamten Datensatz trainiert wurde (es gibt also nur einen Satz von Funktionen). Die Kreuzvalidierung wird nur verwendet, um die prädiktive Leistung des einzelnen Modells zu schätzen, das für den gesamten Datensatz trainiert wurde. Es ist VITAL bei der Kreuzvalidierung, dass Sie in jeder Falte die gesamte Prozedur wiederholen, die zur Anpassung an das primäre Modell verwendet wird, da Sie sonst zu einer erheblichen optimistischen Verzerrung der Leistung kommen können.
Um zu sehen, warum dies geschieht, betrachten Sie ein Binärklassifizierungsproblem mit 1000 Binärmerkmalen, aber nur 100 Fällen, bei denen die Fälle und Merkmale alle rein zufällig sind, sodass keine statistische Beziehung zwischen den Merkmalen und den Fällen besteht. Wenn wir ein primäres Modell mit dem vollständigen Datensatz trainieren, können wir im Trainingssatz immer null Fehler erzielen, da es mehr Funktionen als Fälle gibt. Wir können sogar eine Untergruppe von "informativen" Merkmalen finden (die zufällig korrelieren). Wenn wir dann eine Kreuzvalidierung mit nur diesen Funktionen durchführen, erhalten wir eine Leistungsschätzung, die besser ist als zufällige Schätzungen. Der Grund dafür ist, dass in jeder Falte des Kreuzvalidierungsverfahrens einige Informationen zu den durchgehaltenen Fällen enthalten sind, die zum Testen verwendet wurden, als die Merkmale ausgewählt wurden, weil sie für die Vorhersage gut waren. einschließlich der durchgehaltenen. Natürlich wird die wahre Fehlerrate 0,5 sein.
Wenn wir das richtige Verfahren anwenden und die Merkmalsauswahl in jeder Falte durchführen, gibt es keine Informationen mehr zu den durchgehaltenen Fällen bei der Auswahl der in dieser Falte verwendeten Merkmale. Wenn Sie die richtige Prozedur anwenden, erhalten Sie in diesem Fall eine Fehlerrate von ca. 0,5 (obwohl sie bei unterschiedlichen Realisierungen des Datensatzes geringfügig variiert).
Gute Papiere zum Lesen sind:
Christophe Ambroise, Geoffrey J. McLachlan, "Selektionsbias bei der Genextraktion auf der Basis von Microarray-Genexpressionsdaten", PNAS http://www.pnas.org/content/99/10/6562.abstract
das ist sehr relevant für das OP und
Gavin C. Cawley, Nicola LC Talbot, "Überanpassung bei der Modellauswahl und anschließende Auswahlverzerrung bei der Leistungsbewertung", JMLR 11 (Jul): 2079–2107, 2010 http://jmlr.csail.mit.edu/papers /v11/cawley10a.html
Dies zeigt, dass das Gleiche bei der Modellauswahl leicht vorkommen kann (z. B. Einstellen der Hyperparameter einer SVM, die auch bei jeder Iteration des CV-Vorgangs wiederholt werden müssen).
In der Praxis:
Ich würde die Verwendung von Bagging und die Verwendung des Out-of-Bag-Fehlers zur Schätzung der Leistung empfehlen. Sie erhalten ein Komiteemodell mit vielen Funktionen, aber das ist eigentlich eine gute Sache. Wenn Sie nur ein einzelnes Modell verwenden, ist es wahrscheinlich, dass Sie das Feature-Auswahlkriterium überschreiten und ein Modell erhalten, das schlechtere Vorhersagen liefert als ein Modell, das eine größere Anzahl von Features verwendet.
Alan Millers Buch über die Auswahl von Teilmengen in der Regression (Chapman- und Hall-Monographien zu Statistiken und angewandter Wahrscheinlichkeit, Band 95) gibt den guten Rat (Seite 221), dass Sie keine Feature-Auswahl vornehmen sollten, wenn die prädiktive Leistung das Wichtigste ist Verwenden Sie stattdessen einfach die Gratregression. Und das steht in einem Buch über die Auswahl von Untergruppen !!! ;O)
quelle
Hinzufügen zu chl: Bei Verwendung von Support-Vektor-Maschinen ist das elastische Netz eine sehr empfohlene Bestrafungsmethode. Diese Methode verkleinert die Koeffizienten gegen Null und behält theoretisch die stabilsten Koeffizienten im Modell bei. Ursprünglich wurde es in einem Regressionsframework verwendet, kann jedoch problemlos für Support-Vektor-Maschinen erweitert werden.
Die Originalveröffentlichung : Zou und Hastie (2005): Regularisierung und variable Auswahl über das elastische Netz. JRStatist.Soc. B, 67-2, S. 301-320
Elastisches Netz für SVM : Zhu & Zou (2007): Variablenauswahl für die Support Vector Machine: Trends in der neuronalen Berechnung, Kapitel 2 (Herausgeber: Chen und Wang)
Verbesserungen am elastischen Netz Jun-Tao und Ying-Min (2010): Ein verbessertes elastisches Netz für die Klassifizierung von Krebs und die Auswahl von Genen: Acta Automatica Sinica, 36-7, S. 976-981
quelle
Als Schritt 6 (oder 0) führen Sie den Feature-Erkennungsalgorithmus für den gesamten Datensatz aus.
Die Logik ist folgende: Sie müssen sich die Kreuzvalidierung als Methode vorstellen, um die Eigenschaften der Prozedur herauszufinden, mit der Sie die Features auswählen. Es beantwortet die Frage: "Wenn ich Daten habe und diese Prozedur durchführe, wie hoch ist dann die Fehlerrate beim Klassifizieren einer neuen Stichprobe?". Sobald Sie die Antwort kennen, können Sie das Verfahren (Merkmalsauswahl + Entwicklung von Klassifizierungsregeln) für den gesamten Datensatz anwenden. Leute mögen das Auslassen, weil die prädiktiven Eigenschaften normalerweise von der Stichprobengröße abhängen und normalerweise nahe genug bei nicht viel zu bedeuten.nn−1 n
quelle
So wähle ich Features aus. Angenommen, basierend auf bestimmten Kenntnissen gibt es zwei Modelle, die verglichen werden müssen. Modell A verwendet die Merkmale Nr. 1 bis Nr. 10. Modell B verwendet Nr. 11 bis Nr. 20. Ich werde LOO CV auf Modell A anwenden, um die Out-of-Sample-Leistung zu erzielen. Machen Sie dasselbe mit Modell B und vergleichen Sie sie dann.
quelle
Ich bin mir bei Klassifizierungsproblemen nicht sicher, aber Jun Shao hat im Fall der Merkmalsauswahl für Regressionsprobleme gezeigt, dass der Leave-One-Out-CV asymptotisch inkonsistent ist , dh, die Wahrscheinlichkeit, die richtige Teilmenge von Merkmalen auszuwählen, konvergiert nicht gegen 1 als die Anzahl der Proben erhöht sich. Aus praktischer Sicht empfiehlt Shao eine Monte-Carlo-Kreuzvalidierung oder ein Auslassen vieler Verfahren.
quelle