Misalkan Anda menganalisis kumpulan data besar dengan jumlah milyaran pengamatan per hari, di mana setiap pengamatan memiliki beberapa ribu variabel yang mungkin jarang dan variabel numerik dan kategororial yang berlebihan. Katakanlah ada satu masalah regresi, satu masalah klasifikasi biner yang tidak seimbang, dan satu tugas "mencari tahu prediktor mana yang paling penting." Pemikiran saya untuk bagaimana mendekati masalah adalah:
Cocokkan beberapa model prediksi pada sub-sampel data yang lebih besar dan lebih besar secara acak hingga:
Memasang dan memvalidasi silang model menjadi sulit secara komputasi (misalnya, laptop saya lambat, R kehabisan memori, dll.), ATAU
Pelatihan dan uji RMSE atau nilai presisi / recall stabil.
Jika kesalahan pelatihan dan pengujian tidak stabil (1.), gunakan model yang lebih sederhana dan / atau laksanakan versi multicore atau multinode dari model dan mulai kembali dari awal.
Jika kesalahan pelatihan dan tes stabil (2.):
Jika (yaitu, saya masih dapat menjalankan algoritma pada karena belum terlalu besar), cobalah untuk meningkatkan kinerja dengan memperluas ruang fitur atau menggunakan model yang lebih kompleks dan memulai kembali dari awal.
Jika 'besar' dan menjalankan analisis lebih lanjut adalah mahal, analisis variabel pentingnya dan akhiri.
Saya berencana untuk menggunakan paket seperti biglm
, speedglm
, multicore
, dan ff
di R awalnya, dan kemudian menggunakan algoritma yang lebih rumit dan / atau multinode (pada EC2) yang diperlukan.
Apakah ini terdengar seperti pendekatan yang masuk akal, dan jika demikian, apakah Anda memiliki saran atau saran khusus? Jika tidak, apa yang akan Anda coba sebagai ganti set data ukuran ini?
sumber
Jawaban:
Anda harus memeriksa metode online untuk regresi dan klasifikasi untuk dataset dengan ukuran ini. Pendekatan-pendekatan ini akan memungkinkan Anda menggunakan seluruh dataset tanpa harus memuatnya ke dalam memori.
Anda mungkin juga melihat Vowpal Wabbit (VW):
https://github.com/JohnLangford/vowpal_wabbit/wiki
Ia menggunakan metode online out of core, sehingga harus dapat menangani dataset dengan ukuran ini. Anda dapat melakukan regresi dan klasifikasi dan memiliki dukungan untuk format yang jarang. Anda juga dapat melakukan versi hukuman (misalnya regresi / klasifikasi tipe laso) di VW, yang dapat meningkatkan akurasi model Anda.
sumber
Saya akan menyarankan menggunakan Hadoop dan RMR (paket khusus untuk Peta Mengurangi dalam R). Dengan strategi ini Anda dapat menjalankan dataset besar pada komputer komoditas dengan konfigurasi yang terjangkau (mungkin dalam dua jam Anda datang dengan Hadoop dan RMR (RHadoop) terinstal dan berjalan).
Bahkan, jika Anda memiliki lebih dari satu komputer, Anda dapat membuat cluster, mengurangi waktu pemrosesan.
Saya memberi Anda beberapa tautan yang mendukung saran saya:
Jadi, saran saya adalah mengikuti pedoman ini karena tentu layak jika data Anda sangat besar.
sumber
Ini lebih merupakan komentar daripada jawaban, tetapi saya tidak dapat mempostingnya sebagai komentar (membutuhkan 50 rep).
Sudahkah Anda mencoba menggunakan PCA pada dataset Anda? Ini dapat membantu Anda mengurangi ruang variabel dan menemukan kemungkinan arah variabel yang dikecualikan dari model regresi Anda. Dengan melakukannya, model akan lebih mudah untuk dihitung. Di sini Anda dapat menemukan diskusi yang menarik tentang penggunaan PCA dengan variabel kategori: Dapatkah analisis komponen utama diterapkan pada kumpulan data yang berisi campuran variabel kontinu dan variabel kategori?
Juga, saya membayangkan Anda menggunakan R karena banyak alasan (saya menggunakan R juga), tetapi mungkin lebih mudah untuk menggunakan perangkat lunak seperti SAS atau STATA. Mereka berkinerja lebih baik dengan data besar dan Anda tidak harus berurusan dengan komputasi multi-core dan paralel.
Terakhir, cobalah untuk berpikir apakah masuk akal untuk menggunakan sebanyak mungkin baris dari dataset Anda. Ini adalah dataset populasi, dataset populasi kuasi atau dataset sampel? Anda dapat memperoleh hasil yang lebih baik dengan sampling yang baik pada dataset Anda daripada menggunakan seluruh data. Lihatlah posting ini: Apakah pengambilan sampel relevan pada saat 'data besar'?
Semoga ini membantu
sumber