Saya ingin menggunakan GLM dan Elastic Net untuk memilih fitur-fitur yang relevan + membangun model regresi linier (yaitu, baik prediksi dan pemahaman, sehingga akan lebih baik dibiarkan dengan parameter yang relatif sedikit). Outputnya kontinu. Ini gen per 50 kasus. Saya telah membaca tentang paket tersebut, tetapi saya tidak 100% yakin tentang langkah-langkah yang harus diikuti:glmnet
Lakukan CV untuk memilih lambda:
cv <- cv.glmnet(x,y,alpha=0.5)
(Q1) diberi data input, apakah Anda memilih nilai alpha yang berbeda?
(Q2) apakah saya perlu melakukan hal lain sebelum membuat model?Sesuai dengan model:
model=glmnet(x,y,type.gaussian="covariance",lambda=cv$lambda.min)
(Q3) ada yang lebih baik dari "kovarians"?
(Q4) Jika lambda dipilih oleh CV, mengapa langkah ini perlunlambda=
?
(Q5) apakah lebih baik digunakanlambda.min
ataulambda.1se
?Dapatkan koefisien, untuk melihat parameter mana yang jatuh ("."):
predict(model, type="coefficients")
Di halaman bantuan ada banyak
predict
metode (misalnya,predict.fishnet
,predict.glmnet
,predict.lognet
, dll). Tapi setiap prediksi "polos" seperti yang saya lihat pada contoh.
(Q6) Haruskah saya menggunakanpredict
ataupredict.glmnet
atau lainnya?
Terlepas dari apa yang saya baca tentang metode regularisasi, saya cukup baru dalam R dan dalam paket statistik ini, jadi sulit untuk memastikan apakah saya mengadaptasi masalah saya ke kode. Setiap saran akan disambut.
PEMBARUAN
Berdasarkan "Seperti yang disebutkan sebelumnya, objek kereta kelas berisi elemen yang disebut finalModel
, yang merupakan model yang sesuai dengan nilai parameter tuning yang dipilih oleh resampling. Objek ini dapat digunakan dengan cara tradisional untuk menghasilkan prediksi untuk sampel baru, menggunakan itu fungsi prediksi model. "
Menggunakan caret
untuk menyetel alfa dan lambda:
trc = trainControl(method=cv, number=10)
fitM = train(x, y, trControl = trC, method="glmnet")
Apakah fitM
mengganti langkah 2 sebelumnya? Jika demikian, bagaimana cara menentukan opsi glmnet ( type.gaussian="naive",lambda=cv$lambda.min/1se
) sekarang?
Dan berikut predict
langkah, bisa saya ganti model
ke fitM
?
Jika aku melakukan
trc = trainControl(method=cv, number=10)
fitM = train(x, y, trControl = trC, method="glmnet")
predict(fitM$finalModel, type="coefficients")
apakah masuk akal sama sekali atau saya salah mencampur kedua kosa kata paket?
caret
adalah paket R wrapper yang membungkus antarmuka fungsi dari 100+ paket ML agar lebih konsisten dan menambahkan CV, pencarian jaringan, memodifikasi default parameter gila dll. Ini bukan tanpa quirksnya tetapi cukup bagus dan banyak digunakan.cva.glmnet(..)
sebagai ganti hanyacv.glmnet(...)
dan menyetel alfa dan lambda secara bersamaan. Kemudian Anda dapat berlariminlossplot(cva.fit)
untuk melihat alpha mana yang memberikan hasil terbaik. Ini adalah bagian dari glmnetUtils