Apakah jumlah optimal pohon di hutan acak bergantung pada jumlah prediktor?

46

Adakah yang bisa menjelaskan mengapa kita membutuhkan banyak pohon di hutan acak ketika jumlah prediktornya besar? Bagaimana kita bisa menentukan jumlah pohon yang optimal?

Z Khan
sumber

Jawaban:

70

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.ppp/3

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 ntreeparameter (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).nn1ntree

O_Devinyak
sumber
-2

Demikian artikel ini

Mereka menyarankan bahwa hutan acak harus memiliki jumlah pohon antara 64 - 128 pohon . Dengan itu, Anda harus memiliki keseimbangan yang baik antara ROC AUC dan waktu pemrosesan.

silviomoreto
sumber
10
Tampaknya aneh bahwa tidak ada ketergantungan dalam hasil mereka pada jumlah fitur dalam
set
-5

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=-1untuk menggunakan semua proses tetapi biaya setiap inti memerlukan salinan data setelah itu Anda dapat menggunakan rumus ini

ntree = sqrt (jumlah baris * jumlah kolom) / numberofcpu

Malouke
sumber
6
Saya pikir Anda perlu mengedit ini untuk memberikan bukti dan pembenaran untuk pernyataan Anda.
mdewey