Ich würde gerne wissen, ob es eine Möglichkeit gibt, die durchschnittliche ROC-Kurve aus den Kreuzvalidierungsdaten eines SVM-RFE-Modells zu erstellen, das mit dem caret
-Paket erzeugt wurde.
Meine Ergebnisse sind:
%Vor%Ich habe es mit der hier genannten Lösung versucht: ROC-Kurve von Trainingsdaten in Caret
%Vor%Aber diese Lösung scheint nicht zu funktionieren (der resultierende AUC-Wert ist ziemlich unterschiedlich). Ich habe die Ergebnisse des Trainingsprozesses in die 50 Kreuzvalidierungssätze aufgeteilt, wie in der vorherigen Antwort erwähnt, aber ich weiß nicht, was ich als nächstes tun soll.
%Vor%Irgendwelche Ideen?
Wie Sie bereits konnten, können Sie a) savePredictions = T
im Parameter trainControl
von caret::train
aktivieren und dann b) vom trainierten Modellobjekt die Variable pred
verwenden, die alle Vorhersagen über alle Partitionen enthält und Resamples - um die ROC-Kurve zu berechnen, die Sie betrachten möchten. Sie haben jetzt mehrere Optionen, von denen ROC dies sein kann, z. B .:
Sie können alle Vorhersagen für alle Partitionen und Resamples gleichzeitig betrachten :
%Vor%Oder Sie können dies über einzelnen Partitionen und / oder Resamples tun (was Sie oben versucht haben). Im folgenden Beispiel wird die ROC-Kurve pro Partition und resample berechnet, sodass bei 10 Partitionen und 5 Wiederholungen 50 ROC-Kurven resultieren:
%Vor% Abhängig von Ihren Daten und Ihrem Modell gibt letzteres Ihnen eine gewisse Varianz in den resultierenden ROC-Kurven und AUC-Werten. Sie können die gleiche Varianz in den AUC
und SD
-Werten caret
sehen, die für Ihre individuellen Partitionen und Resamples berechnet wurden. Dies ergibt sich aus Ihren Daten und Ihrem Modell und ist korrekt.
Übrigens: Ich habe die pROC::roc
-Funktion zur Berechnung der obigen Beispiele verwendet, aber Sie können hier jede geeignete Funktion verwenden. Und wenn caret::train
verwendet wird, ist das Erhalten der ROC immer gleich, unabhängig vom Modelltyp.