Langkah pertama untuk data besar ( , )

21

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:

  1. Memasang dan memvalidasi silang model menjadi sulit secara komputasi (misalnya, laptop saya lambat, R kehabisan memori, dll.), ATAU

  2. 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.NskamubsetNXskamubset

  • Jika 'besar' dan menjalankan analisis lebih lanjut adalah mahal, analisis variabel pentingnya dan akhiri.Nskamubset

Saya berencana untuk menggunakan paket seperti biglm, speedglm, multicore, dan ffdi 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?

terkunci
sumber
1
Itu terdengar seperti pendekatan yang masuk akal. Saya menemukan ceramah tentang pendekatan serupa: youtube.com/watch?v=X9YVSDWQokQ .
alfa
2
jmlr.csail.mit.edu/proceedings/papers/v7/miller09/miller09.pdf Ini mungkin membantu. Rincian lebih lanjut tentang matematika di sini: ms.unimelb.edu.au/ ~ millerh
papers
@ dcl: Terima kasih - idenya adalah metode pemilihan variabel nonlinear yang bagus, murah secara komputasi, yang akan paralel dengan baik (meskipun univariat). Saya mungkin mencobanya karena cepat dan sangat mudah untuk dikodekan. Awalnya saya berpikir untuk menggunakan algoritma yang sangat keren ini: code.google.com/p/rf-ace .
Terkunci
@alfa: Saya sangat suka ide ini! Menggunakan uji sekuensial pada subset data yang lebih besar dan lebih besar untuk secara berurutan menghilangkan meta-parameter berkinerja terburuk. Ini harus banyak hal. Terima kasih! ps di sini adalah versi makalah dari pembicaraan: biglearn.org/files/papers/biglearn2011_submission_2.pdf
terkunci

Jawaban:

2

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.

pengguna1489497
sumber
2

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:

  • Tautan ini akan mengarahkan Anda ke tutorial untuk menginstal Hadoop pada klaster node-tunggal (satu komputer).
  • Ini Link dan ini link yang akan menunjukkan cara untuk menginstal RMR cluster Hadoop Anda.
  • Dan akhirnya, di sini Anda dapat menemukan contoh regresi logistik dengan cara RHadoop.

Jadi, saran saya adalah mengikuti pedoman ini karena tentu layak jika data Anda sangat besar.

a.desantos
sumber
0

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

Pietrop
sumber