Hutan Acak dalam pengaturan Big Data

8

Saya memiliki dataset dengan 5.818.446 baris dan 51 kolom, di mana 50 di antaranya adalah prediktor. Respons saya kuantitatif, jadi saya tertarik dengan model regresi. Saya mencoba menyesuaikan hutan acak dengan data saya menggunakan paket tanda sisipan. Namun, saya tidak memiliki cukup RAM untuk melakukannya.

Saya sudah mencari solusi untuk masalah saya. Selain memiliki komputer yang lebih kuat, sepertinya saya dapat menggunakan bagging untuk menyelesaikan masalah saya. Karena itu, ide saya adalah sebagai berikut:

  1. Buat partisi train dan test dari dataset asli saya

  2. Sampel dengan penggantian sebagian kecil dataset kereta saya menjadi R (misalkan 1% darinya, yaitu 58.185 baris)

  3. Pasangkan hutan acak ke bagian kecil data ini

  4. Simpan hasil model

  5. Ulangi langkah 2-4 1.000 kali

  6. Gabungkan 1.000 model ini yang diperoleh dari langkah 2-5

Namun, hutan acak itu sendiri menggunakan bagging agar sesuai dengan model dengan data dan dengan demikian saya tidak yakin apakah pendekatan saya benar. Karena itu, saya punya beberapa pertanyaan untuk Anda:

i) Apakah pendekatan saya benar? Maksud saya, karena saya tidak memiliki cukup RAM di sistem saya, apakah benar mencocokkan banyak model hutan acak yang berbeda untuk potongan data yang berbeda dan menggabungkannya setelah?

ii) Dengan asumsi pendekatan saya benar, 1% data adalah aturan praktis yang baik untuk ukuran sampel saya? Bahkan dengan 1% data, saya masih punyanhal.

iii) Dengan asumsi pendekatan saya benar, apakah ada sejumlah replikasi untuk model yang harus saya gunakan? Saya memikirkan 1.000 karena alasan.

Marcus Nunes
sumber
Karena mengantongi adalah metode menghasilkan setiap pohon keputusan di hutan acak, bagaimana kalau Anda hanya melakukan DT tunggal per 1% dan kemudian menggabungkan pohon ? Voila, hutan acak rumah. Kemudian Anda dapat membangun 1000 pohon atau lebih dan melakukan kombinasi pohon secara acak untuk melihat apa yang paling baik pada data pengujian Anda; Meskipun begitu Anda cocok dengan data pengujian Anda, jadi mungkin hanya mengambil semuanya dan menjalankannya.
Engineero
Ooo! Atau gabungkan semuanya dengan layer output yang terhubung sepenuhnya dan kemudian latih layer tersebut dengan l1regularisasi, yang biasanya menjatuhkan bobot komponen yang tidak signifikan hingga mendekati nol, sehingga Anda dapat melihat dengan memeriksa pohon mana yang harus Anda pertahankan.
Engineero
@ Engineero Metode yang Anda garis secara umum dikenal sebagai "kitchen sink acak": pas sejumlah besar peserta didik yang lemah untuk membentuk representasi dasar dari fitur asli (bahkan keputusan tunggul) dan kemudian terminal berat terminal, mungkin dengan beberapa regularisasi bobot node, mungkin dengan beberapa regularisasi bobot node . people.eecs.berkeley.edu/~brecht/kitchensinks.html
Sycorax mengatakan Reinstate Monica
1 / Saya tidak memiliki pengetahuan pasti, jadi saya tidak memposting jawaban. Tetapi metode ini seharusnya baik-baik saja. Perhatikan bahwa jumlah sampel dalam setiap "kumpulan" menyiratkan batas atas pada kedalaman setiap pohon, dan karenanya kemampuan setiap pohon untuk menyesuaikan data, sehingga Anda dapat mempertimbangkan menyetel lebih dari 0,5%, 1%, 2%, 4 % (notionally) ... dari data saat membuat setiap pohon. Jumlah pohon yang digunakan adalah murni pertanyaan pada titik mana kehilangan model "dataran tinggi"; pilihan ini tidak perlu disetel karena kerugian yang diharapkan adalah fungsi penurunan monotonikTuntuk aturan penilaian yang tepat dan berkelanjutan.
Sycorax berkata Reinstate Monica
2 / Untuk informasi lebih lanjut tentang jumlah pohon, lihat jawaban saya di sini: stats.stackexchange.com/questions/348245/...
Sycorax berkata Reinstate Monica

Jawaban:

3

Ini tidak menjawab pertanyaan spesifik Anda, tetapi motivasi di baliknya. The bigRFpaket dapat memecahkan masalah Anda:

Ini adalah implementasi R dari algoritma Random Forest Leo Breiman dan Adele Cutler untuk klasifikasi dan regresi, dengan optimisasi untuk kinerja dan untuk penanganan set data yang terlalu besar untuk diproses dalam memori.

Juga:

Untuk set data besar, data pelatihan, perhitungan menengah dan beberapa output (misalnya matriks proximity) dapat di-cache pada disk menggunakan objek "big.matrix". Ini memungkinkan hutan acak dibangun di atas kumpulan data yang cukup besar tanpa mencapai batas RAM, yang akan menyebabkan pertukaran memori virtual yang berlebihan oleh sistem operasi.

mkt - Pasang kembali Monica
sumber