Wie generieren Sie ROC-Kurven für eine einmalige Kreuzvalidierung?

10

Bei der Durchführung einer 5-fachen Kreuzvalidierung (zum Beispiel) ist es typisch, eine separate ROC-Kurve für jede der 5-fachen und häufig eine mittlere ROC-Kurve mit Standard zu berechnen. dev. als Kurvendicke dargestellt.

Für die LOO-Kreuzvalidierung, bei der nur ein einziger Testdatenpunkt in jeder Falte vorhanden ist, erscheint es jedoch nicht sinnvoll, eine ROC- "Kurve" für diesen einzelnen Datenpunkt zu berechnen.

Ich habe alle meine Testdatenpunkte (zusammen mit ihren separat berechneten p-Werten) genommen und zu einem großen Satz zusammengefasst, um eine einzelne ROC-Kurve zu berechnen. Aber ist dies die statistisch koschere Aufgabe?

Was ist der richtige Weg, um die ROC-Analyse anzuwenden, wenn die Anzahl der Datenpunkte in jeder Falte eins beträgt (wie im Fall der LOO-Kreuzvalidierung)?

user1121
quelle
Warum? Was möchtest du mit einer solchen Kreatur erreichen?
Ich muss die Gesamtvorhersageleistung über einen Bereich von p-Wert-Schwellenwerten analysieren, und ROC-Kurven sind das, was ich traditionell für jede andere Art der Kreuzvalidierung verwendet habe. Grundsätzlich also die gleichen Gründe, aus denen die ROC-Analyse für jede k-fache Kreuzvalidierung nützlich ist. Wenn es für LOO xval einen anderen, analogen Ansatz gibt, wäre es auch gut, das zu wissen. Außerdem würde ich stattdessen so etwas wie 10-faches xval machen, wenn ich genügend Daten hätte und dies kein Problem wäre.
user1121
1
Ich würde sagen, Sie tun es vernünftig, erstellen Sie einfach eine einzelne ROC-Kurve unter Verwendung der wahren Beschriftung und des vorhergesagten Werts für jeden Fall (wo dieser Fall der Hold-out war)
B_Miner

Antworten:

15

Wenn der Klassifizierer Wahrscheinlichkeiten ausgibt, ist es angemessen, alle Testpunktausgaben für eine einzelne ROC-Kurve zu kombinieren. Wenn nicht, skalieren Sie die Ausgabe des Klassifikators so, dass er direkt zwischen den Klassifikatoren vergleichbar ist. Angenommen, Sie verwenden die lineare Diskriminanzanalyse. Trainieren Sie den Klassifikator und führen Sie dann die Trainingsdaten durch den Klassifikator. Lernen Sie zwei Gewichte: einen Skalenparameter (die Standardabweichung der Klassifikatorausgaben nach Subtraktion der Klassenmittelwerte) und einen Verschiebungsparameter (den Mittelwert der ersten Klasse). Verwenden Sie diese Parameter, um die rohe Ausgabe jedes LDA-Klassifikators über zu normalisierenσμrn=(rμ)/σund dann können Sie eine ROC-Kurve aus dem Satz normalisierter Ausgänge erstellen. Dies hat die Einschränkung, dass Sie mehr Parameter schätzen, und daher können die Ergebnisse geringfügig abweichen, als wenn Sie eine ROC-Kurve basierend auf einem separaten Testsatz erstellt hätten.

Wenn es nicht möglich ist, Klassifikatorausgaben zu normalisieren oder in Wahrscheinlichkeiten umzuwandeln, ist eine auf LOO-CV basierende ROC-Analyse nicht geeignet.

Benhamner
quelle