Saya memiliki kumpulan data sekitar 5000 fitur. Untuk data itu saya pertama kali menggunakan uji Chi Square untuk pemilihan fitur; setelah itu, saya mendapat sekitar 1500 variabel yang menunjukkan hubungan signifikan dengan variabel respon.
Sekarang saya harus menyesuaikan regresi logistik. Saya menggunakan paket glmulti untuk R (paket glmulti menyediakan pilihan subset yang efisien untuk vlm) tetapi dapat menggunakan hanya 30 fitur pada satu waktu, jika tidak kinerjanya turun karena jumlah baris dalam dataset saya sekitar 20000.
Apakah ada pendekatan atau teknik lain untuk menyelesaikan masalah di atas? Jika saya menggunakan metode di atas, akan terlalu banyak waktu untuk menyesuaikan model.
sklearn
'sLogisticRegression
dan itu memecahkan 4000 fitur, 20.000 baris masalah dalam sekitar satu menit di laptop saya.Jawaban:
Tidaklah tepat untuk melakukan penyaringan fitur dan kemudian memasukkan fitur yang masih hidup ke dalam metode yang tidak mengerti berapa banyak penyiksaan data yang dilakukan sebelumnya. Lebih baik menggunakan metode yang dapat menangani semua fitur potensial (misalnya, jaring elastis). Saran orang lain tentang penggunaan reduksi data juga merupakan ide bagus.
sumber
Pendekatan pertama adalah menggunakan PCA untuk mengurangi dimensi dataset. Cobalah untuk mempertahankan ~ 97% dari total varians, ini dapat membantu sedikit.
Pilihan lain adalah menggunakan sesuatu seperti penurunan gradien stokastik, ini bisa menjadi algoritma yang jauh lebih cepat dan dapat masuk ke dalam memori R.
EDIT: Satu masalah dengan R adalah bahwa Anda hanya dapat menggunakan RAM Anda jadi jika Anda hanya memiliki 8 GB memori maka itu adalah apa yang Anda terbatas. Saya telah mengalami banyak masalah dengan ini dan sejak itu pindah ke menggunakan scikit-python belajar yang tampaknya menangani dataset lebih besar jauh lebih baik.
Bagan yang sangat bagus yang memberikan beberapa ide tempat untuk memulai berdasarkan ukuran dataset Anda dapat ditemukan di sini: http://3.bp.blogspot.com/-dofu6J0sZ8o/UrctKb69QdI/AAAAAAAADfg/79ewPecn5XU/s1600/scikit-learn-flow -chart.jpg
sumber
Seperti yang telah disebutkan oleh @Frank Harrell, menggunakan jaring elastis atau LASSO untuk melakukan regresi yang dihukum dengan semua 5000 fitur ( p ) akan menjadi awal yang baik untuk pemilihan fitur (satu tidak dapat dengan mudah menghapus 3500 variabel karena mereka tidak "signifikan secara statistik" dengan variabel terikat bunga). Salah satu dari metode ini dapat dilakukan dengan menggunakan paket R
glmnet
,.Untuk memperhitungkan hubungan yang dibagi antara variabel prediktor potensial yang menarik ( p = 5000), saya akan merekomendasikan menjalankan hutan acak menggunakan
randomForest
paket dan / atau meningkatkan gradien menggunakangbm
paket untuk menilai kepentingan relatif dari variabel prediktor potensial dalam hal hasil biner. Dengan informasi ini, Anda akan jauh lebih siap untuk membangun model regresi logistik yang lebih pelit.sumber
Saya berasumsi Anda tidak terbatas pada R, karena ini adalah masalah data besar Anda mungkin tidak seharusnya. Anda dapat mencoba MLlib , yang merupakan pustaka pembelajaran mesin Apache Spark yang dapat diskalakan.
Apache Spark , pada gilirannya, adalah mesin umum dan cepat untuk pemrosesan data skala besar in-memory. Ini beroperasi pada kerangka kerja Hadoop yang memungkinkan pemrosesan terdistribusi set data besar di seluruh cluster komputer menggunakan model pemrograman sederhana. Ini dirancang untuk meningkatkan dari server tunggal ke ribuan mesin, masing-masing menawarkan komputasi dan penyimpanan lokal.
Perhatikan bahwa 'ribuan mesin' adalah opsional (!), Anda juga dapat mengaturnya di desktop kantor / rumah lokal Anda.
Kembali ke MLlib, ini disertai dengan algoritme di bawah ini di luar kotak:
Jika Anda secara teratur bekerja dengan data besar, Anda mungkin perlu mengadopsi solusi Hadoop.
sumber
Anda dapat mencoba Vowpal Wabbit: Vowpal Wabbit . Ia bekerja dengan baik dengan kumpulan data yang sangat besar dan sejumlah besar fitur.
menurut situs web:
sumber