Saya menggunakan paket pesta dalam R dengan 10.000 baris dan 34 fitur, dan beberapa fitur fitur memiliki lebih dari 300 level. Waktu komputasi terlalu lama. (Butuh 3 jam sejauh ini dan belum selesai.)
Saya ingin tahu elemen apa yang berpengaruh besar pada waktu komputasi hutan acak. Apakah ada faktor dengan level terlalu banyak? Apakah ada metode yang dioptimalkan untuk meningkatkan waktu komputasi RF?
r
random-forest
Chenghao Liu
sumber
sumber
Karena randomForest adalah kumpulan gerobak independen yang dilatih berdasarkan bagian acak dari fitur dan catatan, maka cocok untuk paralelisasi. The
combine()
fungsi dalam paket randomForest akan menjahit bersama hutan dilatih mandiri. Ini adalah contoh mainan. Sebagai jawaban @mpq menyatakan Anda tidak boleh menggunakan notasi rumus, tetapi meneruskan dataframe / matriks variabel dan vektor hasil. Saya tidak tahu malu mengangkat ini dari dokumen.Saya melewati fungsi acak randomForest ke parameter .combine yang bernama sama (yang mengontrol fungsi pada output dari loop. Sisi bawahnya adalah Anda tidak mendapatkan tingkat kesalahan OOB atau lebih penting secara tragis variabel.
Sunting:
Setelah membaca ulang posting saya menyadari bahwa saya tidak berbicara tentang masalah 34+ faktor. Jawaban yang tidak dipikirkan secara keseluruhan bisa mewakili mereka sebagai variabel biner. Itu adalah setiap faktor kolom yang dikodekan 0/1 -level factor tentang ada / tidak adanya. Dengan melakukan beberapa pemilihan variabel pada faktor-faktor yang tidak penting dan menghapusnya, Anda dapat membuat ruang fitur Anda tidak tumbuh terlalu besar.
sumber
Saya akan menyarankan beberapa tautan:
1) Kecilkan jumlah level variabel faktor adalah tautan ke pertanyaan
stackoverflow
untuk menangani masalah yang sama saat menggunakanrandomForest
paket. Secara khusus ini berhubungan dengan hanya menggunakan level yang paling sering terjadi dan menetapkan level baru untuk semua level lainnya, yang jarang terjadi.Ide untuk itu datang dari sini: 2009 KDD Cup Slow Challenge . Data untuk kompetisi ini memiliki banyak faktor dengan banyak level dan membahas beberapa metode yang mereka gunakan untuk mengurangi data dari 50.000 baris dengan 15.000 kolom untuk dijalankan pada laptop RAM 2-core / 2GB.
Saran terakhir saya adalah melihat menjalankan masalah, seperti yang disarankan di atas, secara paralel pada contoh Amazon EC2 hi-CPU.
sumber
Saya tidak dapat berbicara dengan kecepatan algoritma khusus dalam R tetapi harus jelas apa yang menyebabkan waktu komputasi yang lama. Untuk setiap pohon di setiap cabang, CART mencari bentuk pemecahan biner terbaik. Jadi untuk masing-masing 34 fitur itu yang paling terlihat pada pembagian yang diberikan oleh masing-masing tingkat variabel. Lipat gandakan waktu lari untuk setiap pemisahan dalam pohon dengan jumlah cabang di pohon dan kemudian gandakan dengan jumlah pohon di hutan dan Anda memiliki waktu berjalan yang lama. Siapa tahu? Mungkin bahkan dengan komputer cepat ini bisa memakan waktu bertahun-tahun untuk menyelesaikannya?
Cara terbaik untuk mempercepat hal-hal yang saya pikir adalah untuk menyatukan beberapa level bersama sehingga setiap variabel turun menjadi mungkin 3 hingga 5 level daripada 300. Tentu saja ini tergantung pada kemampuan untuk melakukan ini tanpa kehilangan penting informasi dalam data Anda.
Setelah itu mungkin Anda bisa melihat apakah ada beberapa algoritma pintar yang dapat mempercepat waktu pencarian untuk membelah pada setiap node dari masing-masing pohon. bisa jadi pada pohon tertentu pencarian split adalah pengulangan dari pencarian yang sudah dilakukan untuk pohon sebelumnya. Jadi, jika Anda dapat menyimpan solusi dari keputusan split sebelumnya dan mengidentifikasi kapan Anda mengulangi, mungkin strategi itu bisa menghemat sedikit waktu komputasi.
sumber