Fungsi R cv.glm (library: boot) menghitung perkiraan kesalahan prediksi validasi silang K-fold untuk model linier umum dan mengembalikan delta. Apakah masuk akal untuk menggunakan fungsi ini untuk regresi laso (library: glmnet) dan jika demikian, bagaimana hal itu dapat dilakukan? Pustaka glmnet menggunakan cross-validation untuk mendapatkan parameter belokan terbaik, tapi saya tidak menemukan contoh yang cross-memvalidasi persamaan glmnet akhir.
r
regression
cross-validation
lasso
glmnet
kalakaru
sumber
sumber
Jawaban:
Contoh tentang cara melakukan validasi silang vanilla polos untuk laso
glmnet
padamtcars
kumpulan data.Memuat kumpulan data.
Mempersiapkan fitur (variabel independen). Mereka harus dari
matrix
kelas. Cara termudah untuk mengkonversi yangdf
berisi variabel kategori kematrix
adalah melaluimodel.matrix
. Pikiran Anda, secara defaultglmnet
cocok mencegat, sehingga Anda lebih baik menghapus intersep dari matriks model.Mempersiapkan respons (variabel dependen). Mari kode mobil dengan rata-rata di atas
mpg
sebagai efisien ('1') dan sisanya tidak efisien ('0'). Ubah variabel ini menjadi faktor.Jalankan validasi silang melalui
cv.glmnet
. Ini akan mengambilalpha=1
dariglmnet
parameter default , yang adalah apa yang Anda minta: lasso regression.Dengan memeriksa hasil validasi silang, Anda mungkin tertarik pada setidaknya 2 informasi:
lambda, yang meminimalkan kesalahan lintas-divalidasi.
glmnet
sebenarnya menyediakan 2 lambda:lambda.min
danlambda.1se
. Ini panggilan penilaian Anda sebagai ahli statistik yang akan digunakan.menghasilkan koefisien yang diatur.
Silakan lihat kode R sesuai instruksi di atas:
Komentar terakhir:
perhatikan, output model tidak mengatakan apa-apa tentang signifikansi statistik dari koefisien, hanya nilai.
penalizer l1 (lasso), yang Anda minta, terkenal karena ketidakstabilan yang dibuktikan dalam ini posting blog dan stackexchange ini pertanyaan . Cara yang lebih baik adalah dengan melakukan validasi silang
alpha
juga, yang akan memungkinkan Anda memutuskan campuran yang tepat dari penalizer l1 dan l2.cara alternatif untuk melakukan validasi silang bisa dengan beralih ke tanda sisipan
train( ... method='glmnet')
dan akhirnya, cara terbaik untuk belajar lebih banyak tentang
cv.glmnet
dan itu berasal dari defaultglmnet
tentu saja?glmnet
di konsol R))))sumber