Saya telah mendapatkan model regresi logistik (via train
) untuk respons biner, dan saya telah mendapatkan matriks kebingungan logistik via confusionMatrix
in caret
. Ini memberi saya matriks kebingungan model logistik, meskipun saya tidak yakin apa ambang batas yang digunakan untuk mendapatkannya. Bagaimana cara mendapatkan matriks kebingungan untuk nilai ambang batas tertentu menggunakan confusionMatrix
di caret
?
r
classification
roc
caret
confusion-matrix
Susu Hitam
sumber
sumber
confusionmatrix
, tanpa tanda kurung.glm
fungsi daristats
paket dan meneruskan hasilnyaconfusionMatrix
? Saya tidak tahu orang bisa melakukan itu, dan membaca manual itu tidak jelas sama sekali. Atau adapredict
sesuatu? Contoh singkat akan membantu.train
fungsicaret
agar sesuai dengan model, yang memungkinkan saya menentukannya sebagai glm dengan keluarga binomial. Saya kemudian menggunakanpredict
fungsi pada objek yang dihasilkan melaluitrain
.Jawaban:
Sebagian besar model klasifikasi dalam R menghasilkan prediksi kelas dan probabilitas untuk setiap kelas. Untuk data biner, dalam hampir setiap kasus, prediksi kelas didasarkan pada cutoff probabilitas 50%.
glm
adalah sama. Dengancaret
, menggunakanpredict(object, newdata)
memberi Anda kelas yang diprediksi danpredict(object, new data, type = "prob")
akan memberikan Anda probabilitas kelas-spesifik (saatobject
dihasilkan olehtrain
).Anda dapat melakukan berbagai hal secara berbeda dengan mendefinisikan model Anda sendiri dan menerapkan cutoff apa pun yang Anda inginkan. Situs
caret
web ini juga memiliki contoh yang menggunakan resampling untuk mengoptimalkan kemungkinan cutoff.tl; dr
confusionMatrix
menggunakan kelas prediksi dan dengan demikian kemungkinan cutoff 50%Maks
sumber
Ada cara yang cukup mudah, dengan asumsi
tune <- train(...)
:Jelas, Anda dapat menetapkan ambang batas untuk apa pun yang ingin Anda coba atau pilih yang "terbaik", di mana yang terbaik berarti spesifisitas dan sensitivitas gabungan tertinggi:
Setelah melihat contoh yang diposting Max, saya tidak yakin apakah ada beberapa nuansa statistik yang membuat pendekatan saya kurang diinginkan.
sumber
caret
paket?rocCurve$thresholds[which(rocCurve$sensitivities + rocCurve$specificities == max(rocCurve$sensitivities + rocCurve$specificities))]
yang juga memberi Anda fleksibilitas untuk menimbang mereka secara berbeda jika Anda ingin ... satu hal terakhir yang perlu diperhatikan adalah bahwa secara realistis, Anda mungkin ingin menyetel ambang (seperti Anda akan menggunakan model hyperparameter) seperti yang dijelaskan Max di sini .