trainControl anpassen
Wie du im Video gesehen hast, ist die Fläche unter der ROC-Kurve (AUC) eine sehr nützliche Zusammenfassung in einer einzigen Zahl für die Fähigkeit eines Modells, die positive von der negativen Klasse zu unterscheiden (z. B. Minen von Felsen). Eine AUC von 0,5 ist nicht besser als zufälliges Raten, eine AUC von 1,0 entspricht einem perfekt vorhersagenden Modell, und eine AUC von 0,0 ist perfekt anti-prädiktiv (was selten vorkommt).
Das ist oft eine deutlich hilfreichere Kennzahl, als Modelle einfach nach ihrer Genauigkeit bei einem festen Schwellenwert zu sortieren, da unterschiedliche Modelle möglicherweise unterschiedliche Kalibrierungsschritte erfordern (Betrachten der Konfusionsmatrix in jedem Schritt), um den optimalen Klassifikationsschwellenwert für dieses Modell zu finden.
Du kannst die Funktion trainControl() in caret verwenden, um AUC (anstelle von Accuracy) zum Tuning der Modellparameter zu nutzen. Die praktische Funktion twoClassSummary() macht dir das leicht.
Wenn du twoClassSummary() verwendest, denke unbedingt daran, das Argument classProbs = TRUE anzugeben, sonst wirft dein Modell einen Fehler! (AUC lässt sich nicht nur mit Klassenprädiktionen berechnen. Du brauchst dafür auch Klassenwahrscheinlichkeiten.)
Diese Übung ist Teil des Kurses
Maschinelles Lernen mit caret in R
Anleitung zur Übung
- Passe das
trainControl-Objekt so an, dasstwoClassSummarystattdefaultSummaryverwendet wird. - Verwende 10-fache Kreuzvalidierung.
- Sorge dafür, dass
trainControl()Klassenwahrscheinlichkeiten zurückgibt.
Interaktive Übung
Vervollständige den Beispielcode, um diese Übung erfolgreich abzuschließen.
# Create trainControl object: myControl
myControl <- trainControl(
method = "cv",
number = ___,
summaryFunction = defaultSummary,
classProbs = ___, # IMPORTANT!
verboseIter = TRUE
)