Problemhintergrund: Im Rahmen meiner Forschung habe ich zwei Algorithmen geschrieben, mit denen eine Reihe von Merkmalen aus einem Datensatz ausgewählt werden können (Genexpressionsdaten von Krebspatienten). Diese Merkmale werden dann getestet, um festzustellen, wie gut sie eine unsichtbare Probe entweder als Krebs oder als Nichtkrebs klassifizieren können. Für jeden Lauf des Algorithmus wird eine Lösung (eine Reihe von Merkmalen) generiert und an Z unsichtbaren Proben getestet. Die prozentuale Genauigkeit der Lösung wird wie folgt berechnet : (correct classifications / Z) * 100
.
Ich habe zwei Algorithmen: Algorithmus X & Algorithmus Y.
Ich habe drei separate (verschiedene Krebs-) Datensätze: Datensatz A, Datensatz B und Datensatz C. Diese Datensätze unterscheiden sich stark voneinander. Sie haben nicht die gleiche Anzahl von Proben oder die gleiche Anzahl von Messungen (Merkmalen) pro Probe.
Ich habe jeden Algorithmus 10 Mal für jeden Datensatz ausgeführt. Algorithmus X hat also 10 Ergebnisse aus Datensatz A, 10 aus Datensatz B und 10 aus Datensatz C. Insgesamt hat Algorithmus X 30 Ergebnisse.
Mein Problem: Ich würde gerne sehen, ob sich die kombinierte Leistung von Algorithmus X über alle drei Datensätze statistisch signifikant von der kombinierten Leistung von Algorithmus Y unterscheidet.
Kann ich die Ergebnisse für Algorithmus X aus jedem Datensatz zu einem einzigen Ergebnissatz kombinieren? Auf diese Weise hätte ich 30 standardisierte Ergebnisse für Algorithmus X und 30 standardisierte Ergebnisse für Algorithmus Y. Ich kann dann den t-Test verwenden, um festzustellen, ob es einen signifikanten Unterschied zwischen den beiden Methoden gibt.
Bearbeiten - Dies sind evolutionäre Algorithmen, sodass sie bei jeder Ausführung eine etwas andere Lösung zurückgeben. Wenn eine Stichprobe jedoch ein Merkmal enthält, das, wenn vorhanden, die Stichprobe stark als Krebs oder Nichtkrebs klassifizieren kann, wird dieses Merkmal fast jedes Mal ausgewählt, wenn der Algorithmus ausgeführt wird.
Ich erhalte aus folgenden Gründen für jeden der 10 Läufe leicht unterschiedliche Ergebnisse:
- Diese Algorithmen werden zufällig ausgesät.
- Ich verwende die wiederholte zufällige Validierung von Teilstichproben (10 Wiederholungen).
- Die von mir verwendeten Datensätze (DNA-Microarray und Proteomics) sind sehr schwierig zu bearbeiten, da es viele lokale Optima gibt, in denen der Algorithmus stecken bleiben kann.
- Es gibt viele Interaktionen zwischen Funktionen und Teilmengen, die ich erkennen möchte.
- Ich trainiere 50 Chromosomen und sie sind nicht auf eine bestimmte Länge beschränkt. Sie können frei wachsen und schrumpfen (obwohl der Selektionsdruck sie zu kürzeren Längen führt). Dies führt auch zu Abweichungen vom Endergebnis.
Allerdings wählt der Algorithmus fast immer eine bestimmte Teilmenge von Merkmalen aus!
Hier ist ein Beispiel meiner Ergebnisse (hier werden nur 4 von 10 Läufen für jeden Algorithmus angezeigt):
Datensatz / Lauf-Algorithmus X Algorithmus Y. A 1 90,91 90,91 A 2 90,91 95,45 A 3 90,91 90,91 A 4 90,91 90,91 B 1 100 100 B 2 100 100 B 3 95,65 100 B 4 95,65 86,96 C 1 90,32 87,10 C 2 70,97 80,65 C 3 96,77 83,87 C 4 80,65 83,87
Wie Sie sehen können, habe ich Ergebnisse für zwei Algorithmen aus drei Datensätzen zusammengestellt. Ich kann Kruskal-Wallis-Tests mit diesen Daten durchführen, aber sind sie gültig? Ich frage dies, weil:
- Ich bin mir nicht sicher, ob die Genauigkeit in verschiedenen Datensätzen angemessen ist. Wenn dies nicht der Fall ist, wäre es bedeutungslos, sie wie ich zusammenzusetzen, und jeder statistische Test, der an ihnen durchgeführt wird, wäre ebenfalls bedeutungslos.
- Wenn Sie die Genauigkeiten so zusammenstellen, ist das Gesamtergebnis anfällig für Ausreißer. Die hervorragende Leistung eines Algorithmus für einen Datensatz kann die durchschnittliche Leistung für einen anderen Datensatz maskieren.
Ich kann t-test auch in diesem Fall nicht verwenden, weil:
- Commensurability - Der T-Test ist nur dann sinnvoll, wenn die Unterschiede zwischen den Datensätzen angemessen sind.
- t-test erfordert, dass die Unterschiede zwischen den beiden verglichenen Algorithmen normal verteilt sind. In meinem Fall gibt es keine Möglichkeit (zumindest ist mir dies bekannt), diesen Zustand zu garantieren.
- t-test wird von Ausreißern beeinflusst, die die Teststatistik verzerren und die Leistung des Tests verringern, indem sie den geschätzten Standardfehler erhöhen.
Was denken Sie? Wie kann ich in diesem Fall einen Vergleich zwischen Algorithmus X & Y durchführen?
quelle
Antworten:
Solange Ihre Algorithmen keine großen Leistungsunterschiede aufweisen und Sie eine große Anzahl von Testfällen aufweisen, können Sie Unterschiede nur anhand der Leistung erkennen.
Sie können jedoch ein gepaartes Design verwenden:
Schauen Sie sich zum Vergleich McNemars Test an . Die Idee hinter der Nutzung eines gepaarten Designs ist, dass alle Fälle, in denen beide Algorithmen richtig und beide falsch waren, Ihnen nicht dabei helfen, die Algorithmen zu unterscheiden. Aber wenn ein Algorithmus besser ist als der andere, sollte es viele Fälle geben, in denen der bessere Algorithmus richtig, aber nicht schlechter wurde, und nur wenige, die durch die schlechtere Methode richtig vorhergesagt wurden, durch die bessere jedoch falsch.
Auch Cawley und Talbot: Über Überanpassung bei der Modellauswahl und nachfolgende Auswahlverzerrung bei der Leistungsbewertung, JMLR, 2010, 1, 2079-2107. ist sehr relevant.
Aufgrund der zufälligen Aspekte Ihrer Algorithmen möchten Sie auch die gleiche Aufteilung desselben Datensatzes mehrmals überprüfen. Daraus können Sie die Abweichung zwischen verschiedenen Läufen abschätzen, die ansonsten gleich sind. Es kann schwierig sein zu beurteilen, wie unterschiedlich die ausgewählten Variablensätze sind. Wenn Ihr Endziel jedoch die Vorhersageleistung ist, können Sie auch die Variation zwischen Vorhersagen desselben Testfalls während verschiedener Läufe verwenden, um die Stabilität der resultierenden Modelle zu messen.
Sie möchten dann auch die Abweichung (wie oben angegeben) aufgrund unterschiedlicher Aufteilungen des Datensatzes überprüfen und diese mit der ersten Abweichung in Beziehung setzen.
Brüche (wie% korrekt erkannte Stichproben) werden normalerweise als binomial verteilt angenommen , in bestimmten Fällen ist eine normale Annäherung möglich, aber das Kleingedruckte hierfür wird in Feldern mit breiten Datenmatrizen kaum jemals erreicht. Dies hat zur Folge, dass die Konfidenzintervalle für eine kleine Anzahl von Testfällen sehr groß sind.
binom::binom.confint
Berechnet in R Konfidenzintervalle für den wahren Anteil bei Nr. von Tests und Nr. von Erfolgen.Schließlich legen meine Erfahrungen mit der genetischen Optimierung für spektroskopische Daten (meine Diplomarbeit in deutscher Sprache) nahe, dass Sie auch die Trainingsfehler überprüfen sollten. GAs neigen dazu, sehr schnell zu überanpassen und zu sehr geringen Trainingsfehlern zu gelangen. Geringe Trainingsfehler sind nicht nur zu optimistisch, sondern haben auch zur Folge, dass die GA nicht zwischen vielen Modellen unterscheiden kann, die gleichermaßen perfekt zu sein scheinen. (Sie haben möglicherweise weniger Probleme damit, wenn die GA intern auch zufällig Stichproben und interne Testsätze unterabtastet.)
Beiträge in englischer Sprache:
Anwendungsorientiert, zeigt, wie wir die ausgewählten Variablen interpretieren und das Es sind "Änderungen" in der Auswahl bekannt, die aus chemischen Gründen gleichwertig sind.
Beleites and Salzer: Bewertung und Verbesserung der Stabilität chemometrischer Modelle in Situationen mit kleinen Probengrößen, Anal Bioanal Chem, 2008, 390, 1261 - 1271.
diskutiert binomiale Konfidenzintervalle für die Trefferquote usw., warum wir sie nicht berechnen konnten. Stattdessen verwenden wir Variationen, die bei wiederholter Kreuzvalidierung beobachtet wurden. Die Diskussion über die Schätzung der effektiven Stichprobengröße muss mit Vorsicht geführt werden. Heutzutage würde ich sagen, dass sie irgendwo zwischen irreführend und falsch liegt (ich denke, das ist Wissenschaft, die sich weiterentwickelt :-)).
Feige. 11 zeigt die unabhängigen (äußere Kreuzvalidierung mit Aufteilung nach Probe) Testergebnisse von 40 verschiedenen Modellen für dieselbe Probe. Die entsprechende interne Schätzung der GA betrug 97,5% korrekte Vorhersagen (ein Modell hatte alle Spektren der Probe falsch, die übrigen Modelle waren für alle Spektren korrekt - in der Veröffentlichung nicht gezeigt). Dies ist das oben erwähnte Problem mit der Überanpassung.
In dieser kürzlich erschienenen Arbeit Beleites, Neugebauer, Bocklitz, Krafft und Popp: Stichprobengrößenplanung für Klassifizierungsmodelle, Anal Chem Acta, 2013, 760, 25 - 33. Wir veranschaulichen die Probleme bei der Schätzung von Klassifizierungsfehlern bei zu wenigen Patienten / unabhängigen Stichproben. Veranschaulicht auch, wie die erforderlichen Patientenzahlen geschätzt werden, wenn Sie keine gepaarten Tests durchführen können.
quelle
Sie führen 10 Mal eine Auswahl mit GA durch und jedes Mal, wenn Sie eine andere Ausgabe erhalten !!
Erstens, wenn Sie mit demselben Startwert beginnen, sollten Sie immer dieselbe ausgewählte featuer-Teilmenge erhalten. Wenn Sie jedoch einen zufälligen Startwert verwenden, sollten Sie höchstwahrscheinlich auch fast dieselben ausgewählten Funktionen erhalten. Ein Grund, warum Sie dieselbe ausgewählte Funktion erhalten, ist in Ihrem Beitrag angegeben. Für einen fairen Vergleich können Sie auch die gleichen Samen in den Läufen von A für die B-Experimente verwenden.
Zweitens können Sie zum Vergleich Kreuzvalidierung oder Bootstraping verwenden. Auf diese Weise erhalten Sie einen repräsentativeren Vergleich. In diesem Fall gibt es eine Variationsquelle, dh zufällige Trainingsmuster, die stärker zu sein scheinen als zufällige Samen. Der Vergleich kann also zeigen, welcher Algorthim wirklich besser ist.
Schließlich können Sie den von Ihnen vorgeschlagenen t-Test verwenden oder einige nicht parametrische Tests wie den Kruskal-Wallis-Test direkt verwenden.
quelle