Ich habe ein logistisches Regressionsmodell (Via train
) für eine binäre Antwort erhalten, und ich habe die logistische Verwirrungsmatrix über confusionMatrix
in erhalten caret
. Es gibt mir die logistische Modellverwirrungsmatrix, obwohl ich nicht sicher bin, welcher Schwellenwert verwendet wird, um es zu erhalten. Wie erhalte ich die Verwirrungsmatrix für bestimmte Schwellenwerte mit confusionMatrix
in caret
?
r
classification
roc
caret
confusion-matrix
Schwarze Milch
quelle
quelle
confusionmatrix
ohne Klammern auf der Konsole drucken .glm
Funktion aus demstats
Paket aufgerufen und das Ergebnis an übergebenconfusionMatrix
? Ich wusste nicht, dass man das kann, und wenn man das Handbuch liest, ist es nicht klar, dass man das überhaupt kann. Oder hast dupredict
was? Ein kurzes Beispiel würde helfen.train
Funktion verwendetcaret
, um das Modell anzupassen. Dadurch kann ich es als glm mit Binomialfamilie angeben. Ich habe dann diepredict
Funktion auf dem Objekt verwendet, das über generiert wurdetrain
.Antworten:
Die meisten Klassifizierungsmodelle in R erzeugen sowohl eine Klassenvorhersage als auch die Wahrscheinlichkeiten für jede Klasse. In fast allen Fällen basiert die Klassenvorhersage für Binärdaten auf einer 50% igen Wahrscheinlichkeitsgrenze.
glm
ist dasselbe. Mitcaret
using erhaltenpredict(object, newdata)
Sie die vorhergesagte Klasse und erhaltenpredict(object, new data, type = "prob")
klassenspezifische Wahrscheinlichkeiten (wannobject
wird generiert vontrain
).Sie können die Dinge anders machen, indem Sie Ihr eigenes Modell definieren und den gewünschten Cutoff anwenden. Die
caret
Website enthält auch ein Beispiel , das Resampling verwendet, um die Wahrscheinlichkeitsgrenze zu optimieren.tl; dr
confusionMatrix
Verwendet die vorhergesagten Klassen und somit eine 50% ige WahrscheinlichkeitsgrenzeMax
quelle
Es gibt einen ziemlich einfachen Weg, vorausgesetzt
tune <- train(...)
:Natürlich können Sie den Schwellenwert auf das einstellen, was Sie möchten, oder den "besten" auswählen, wobei "am besten" höchste kombinierte Spezifität und Empfindlichkeit bedeutet:
Nachdem ich mir das Beispiel von Max angesehen habe, bin ich mir nicht sicher, ob es statistische Nuancen gibt, die meinen Ansatz weniger wünschenswert machen.
quelle
caret
Pakets?rocCurve$thresholds[which(rocCurve$sensitivities + rocCurve$specificities == max(rocCurve$sensitivities + rocCurve$specificities))]
wodurch Sie die Flexibilität haben, sie unterschiedlich zu gewichten, wenn Sie möchten Sie würden mit jedem Modell hyperparameter), wie Max hier beschreibt .