Adakah yang bisa menjelaskan mengapa kita membutuhkan banyak pohon di hutan acak ketika jumlah prediktornya besar? Bagaimana kita bisa menentukan jumlah pohon yang optimal?
sumber
Adakah yang bisa menjelaskan mengapa kita membutuhkan banyak pohon di hutan acak ketika jumlah prediktornya besar? Bagaimana kita bisa menentukan jumlah pohon yang optimal?
Hutan acak menggunakan bagging (mengambil sampel pengamatan daripada semuanya) dan metode subruang acak (mengambil sampel fitur daripada semuanya, dengan kata lain - atribut bagging ) untuk menumbuhkan pohon. Jika jumlah pengamatan besar, tetapi jumlah pohon terlalu sedikit, maka beberapa pengamatan hanya akan diprediksi sekali atau bahkan tidak sama sekali. Jika jumlah prediktor besar tetapi jumlah pohon terlalu kecil, maka beberapa fitur dapat (secara teoritis) dilewatkan di semua subruang yang digunakan. Kedua kasus menghasilkan penurunan daya prediksi hutan acak. Tetapi yang terakhir adalah kasus yang agak ekstrim, karena pemilihan subruang dilakukan pada setiap node.
Selama klasifikasi, dimensi ruang bagian adalah (agak kecil, adalah jumlah total prediktor) secara default, tetapi pohon berisi banyak node. Selama regresi, dimensi ruang bagian adalah (cukup besar) secara default, meskipun pohon mengandung lebih sedikit node. Jadi jumlah optimal pohon di hutan acak tergantung pada jumlah prediktor hanya dalam kasus ekstrim.
The halaman resmi dari algoritma menyatakan bahwa hutan acak tidak overfit, dan Anda dapat menggunakan sebanyak pohon yang Anda inginkan. Tetapi Mark R. Segal (14 April 2004. "Tolok Ukur Pembelajaran Mesin dan Regresi Hutan Acak." Pusat Bioinformatika & Biostatistik Molekuler) telah menemukan bahwa itu cocok untuk beberapa set data yang bising. Jadi untuk mendapatkan angka optimal, Anda dapat mencoba melatih hutan acak di grid ntree
parameter (sederhana, tetapi lebih banyak memakan CPU) atau membangun satu hutan acak dengan banyak pohon dengan keep.inbag
, menghitung tingkat kesalahan out-of-bag (OOB) untuk pohon pertama (di mana berubah dari menjadi ) dan plot tingkat kesalahan OOB vs. jumlah pohon (lebih kompleks, tetapi lebih sedikit memakan CPU).ntree
Saya ingin menambahkan sesuatu jika Anda memiliki lebih dari 1000 fitur Anda dan 1000 baris Anda tidak bisa hanya mengambil jumlah rondom tree.
saya sarankan Anda pertama-tama harus mendeteksi jumlah cpu dan ram sebelum mencoba meluncurkan validasi silang dalam menemukan rasio antara mereka dan jumlah pohon
jika Anda menggunakan sikit belajar dengan python Anda memiliki opsi
n_jobs=-1
untuk menggunakan semua proses tetapi biaya setiap inti memerlukan salinan data setelah itu Anda dapat menggunakan rumus inintree = sqrt (jumlah baris * jumlah kolom) / numberofcpu
sumber