Saya memiliki satu set data dengan sekitar 70 variabel yang ingin saya kurangi. Yang ingin saya lakukan adalah menggunakan CV untuk menemukan variabel yang paling berguna dengan cara berikut.
1) Pilih secara acak katakan 20 variabel.
2) Gunakan stepwise
/ LASSO
/ lars
/ etc untuk memilih variabel yang paling penting.
3) Ulangi ~ 50x dan lihat variabel mana yang paling sering dipilih (tidak dihilangkan).
Ini sejalan dengan apa yang randomForest
akan dilakukan, tetapi rfVarSel
paket tampaknya hanya berfungsi untuk faktor / klasifikasi dan saya perlu memprediksi variabel dependen kontinu.
Saya menggunakan R sehingga setiap saran idealnya akan diterapkan di sana.
Jawaban:
Saya percaya apa yang Anda gambarkan sudah diterapkan dalam
caret
paket. Lihatlahrfe
fungsi atau sketsa di sini: http://cran.r-project.org/web/packages/caret/vignettes/caretSelection.pdfSekarang, setelah mengatakan itu, mengapa Anda perlu mengurangi jumlah fitur? Dari 70 hingga 20 sebenarnya bukan urutan penurunan yang besar. Saya pikir Anda akan membutuhkan lebih dari 70 fitur sebelum Anda memiliki firma sebelumnya yang percaya bahwa beberapa fitur benar-benar dan benar-benar tidak masalah. Tapi sekali lagi, di situlah suatu prior subyektif masuk kurasa.
sumber
Tidak ada alasan mengapa frekuensi pemilihan variabel memberikan informasi apa pun yang belum Anda dapatkan dari pentingnya variabel dalam model awal. Ini pada dasarnya adalah ulangan signifikansi statistik awal. Anda juga menambahkan tingkat kesewenang-wenangan baru ketika mencoba memutuskan batas frekuensi pemilihan. Resampling pemilihan variabel rusak parah oleh collinearity selain masalah lainnya.
sumber
Saya telah merevisi jawaban saya sebelumnya hari ini. Saya sekarang telah menghasilkan beberapa contoh data untuk menjalankan kode. Yang lain dengan tepat menyarankan agar Anda mempertimbangkan menggunakan paket caret, yang saya setujui. Namun, dalam beberapa kasus, Anda mungkin perlu menulis kode Anda sendiri. Di bawah ini saya telah mencoba menunjukkan bagaimana menggunakan fungsi sample () dalam R untuk secara acak menetapkan pengamatan pada lipatan validasi silang. Saya juga menggunakan loop untuk melakukan seleksi awal variabel (menggunakan regresi linier univariat dengan nilai p cutoff 0,1) dan membangun model (menggunakan regresi bertahap) pada sepuluh set pelatihan. Anda kemudian dapat menulis kode Anda sendiri untuk menerapkan model yang dihasilkan ke lipatan validasi. Semoga ini membantu!
Sebelum melakukan validasi silang, Anda harus membaca tentang penggunaannya yang benar. Kedua referensi ini menawarkan diskusi yang sangat baik tentang validasi silang:
Makalah-makalah ini diarahkan untuk biostatistik, tetapi akan bermanfaat bagi siapa pun.
Juga, selalu ingat bahwa menggunakan regresi bertahap berbahaya (walaupun menggunakan validasi silang akan membantu mengurangi overfitting). Diskusi yang baik tentang regresi bertahap tersedia di sini: http://www.stata.com/support/faqs/stat/stepwise.html .
Beri tahu saya jika Anda memiliki pertanyaan tambahan!
sumber
Saya baru saja menemukan sesuatu yang bagus di sini: http://cran.r-project.org/web/packages/Causata/vignettes/Causata-vignette.pdf
Coba ini mungkin saat menggunakan Paket glmnet
sumber