Saya punya pertanyaan tentang validitas menggunakan RMSE (Root Mean Squared Error) untuk membandingkan model logistik yang berbeda. Responsnya adalah salah 0
atau 1
dan prediksi adalah probabilitas antara 0
- 1
?
Apakah cara yang diterapkan di bawah ini juga berlaku untuk respons biner?
# Using glmnet
require(glmnet)
load(url("https://github.com/cran/glmnet/raw/master /data/BinomialExample.RData"))
cvfit = cv.glmnet(x, y, family = "binomial", type.measure = "mse")
A <- predict(cvfit, newx = x, s = "lambda.min", type = "response")
RMSE1 <- mean((y - A)^2)
# 0.05816881
# glm
mydata <- read.csv("https://stats.idre.ucla.edu/stat/data/binary.csv")
mydata$rank <- factor(mydata$rank)
mylogit <- glm(admit ~ gre + gpa + rank, data = mydata, family = "binomial")
AAA <- predict(mylogit, newdata = mydata, type = "response")
RMSE2 <- mean((mydata$admit - AAA)^2)
# 0.194714
regression
logistic
generalized-linear-model
glmnet
rms
Ahmed El-Gabbas
sumber
sumber
Jawaban:
Untuk memahami mengapa "[t] responsnya baik
0
atau1
[tetapi] prediksinya adalah probabilitas antara0
-1
", Anda perlu memahami jenis model yang Anda gunakan. Hapus metode hukuman dan validasi silang, dan Anda menjalankan regresi logistik dasar. Parameter cocok pada skala odds log / logistik. Ini disebut "prediktor linier". (Untuk lebih lanjut tentang ini, mungkin dapat membantu Anda membaca jawaban saya di sini: Perbedaan antara model logit dan probit .) Jika Anda terhubung dengan nilai x dan disederhanakan, nilainya akan menjadi logaritma natural yang diprediksi oleh model dari peluang 'kesuksesan' (1
). Jika Anda memperkirakan nilai itu, Anda akan memiliki peluang prediksi modeldari 'kesuksesan'. Untuk mendapatkan probabilitas yang diprediksi , Anda harus mengubah peluang menjadi probabilitas melalui odds / (1 + peluang). (Untuk lebih lanjut tentang ini, mungkin membantu Anda untuk membaca jawaban saya di sini: Interpretasi prediksi sederhana untuk rasio odds dalam regresi logistik .) Ini masih tidak membawa Anda ke kelas prediksi . Untuk mendapatkan itu, Anda harus membandingkan probabilitas yang diprediksi dengan ambang tertentu, dan jika kurang dari ambang, prediksi 'gagal' (0
), atau 'sukses' (1
). Ambang standar paling umum adalah 0,5, tetapi ini sering tidak optimal.predict.glm()
Fungsi R akan memungkinkan Anda untuk menggunakantype="link"
, yang menampilkan prediksi pada skala prediktor linier (yaitu, sebelum semua transformasi di atas), tetapi itu tidak akan membantu Anda dalam konteks ini. Menggunakantype="response"
memberi Anda probabilitas yang diprediksi.Ketika Anda mencoba menilai seberapa baik model regresi biner (misalnya, logistik) memprediksi respons, Anda memiliki beberapa opsi:
.2, .4, .6, .8
, dan Anda menambahkan 0,01 untuk semuanya (.21, .41, .61, .81
), AUC akan sama meskipun kedua set probabilitas yang diprediksi tidak dapat sama akuratnya.Sangat disayangkan bahwa skor Brier kurang dikenal dan digunakan. Meskipun relatif intuitif dari metode-metode ini adalah: persen benar> AUC> skor Brier, informativeness mereka yang sebenarnya adalah sebaliknya: Skor Brier> AUC> persen benar. Jika Anda hanya menginginkan ukuran sederhana dari kinerja model Anda, perbedaan antara metode ini kurang penting, tetapi jika Anda ingin menggunakan metode ini untuk mengoptimalkan model atau memilih model, menggunakan metode yang lebih rendah akan menyebabkan kinerja yang lebih buruk. .
sumber
Menggunakan RMSE jauh lebih masuk akal jika istilah kesalahan Anda didistribusikan secara normal dengan rata-rata nol, tetapi dalam hasil biner tidak. Oleh karena itu, saya pikir Anda harus menggunakan pendekatan berbeda yang cocok untuk hasil biner, seperti membandingkan perbedaan dalam kemungkinan.
sumber