Pertanyaan praktis tentang penyetelan Hutan Acak


65

Pertanyaan saya adalah tentang Hutan Acak. Konsep dari pengelompokan yang indah ini jelas bagi saya, tetapi masih ada banyak pertanyaan penggunaan praktis. Sayangnya, saya gagal menemukan panduan praktis untuk RF (saya telah mencari sesuatu seperti "Panduan Praktis untuk Pelatihan Mesin Boltzman Terbatas" oleh Geoffrey Hinton, tetapi untuk Hutan Acak!

Bagaimana seseorang bisa menyetel RF dalam praktik?

Benarkah jumlah pohon yang lebih besar selalu lebih baik? Apakah ada batasan yang masuk akal (kecuali tentu saja kapasitas comp) pada peningkatan jumlah pohon dan bagaimana memperkirakannya untuk dataset yang diberikan?

Bagaimana dengan kedalaman pepohonan? Bagaimana cara memilih yang masuk akal? Adakah perasaan bereksperimen dengan pohon-pohon dengan panjang yang berbeda di satu hutan dan apa pedoman untuk itu?

Apakah ada parameter lain yang layak dilihat saat melatih RF? Algos untuk membangun pohon individu mungkin?

Ketika mereka mengatakan RF tahan terhadap overfitting, seberapa benar itu?

Saya akan menghargai segala jawaban dan / atau tautan ke panduan atau artikel yang mungkin saya lewatkan saat mencari.


Untuk perfoamnce-tuning, lihat juga SO: "Bagaimana meningkatkan kinerja randomForest"
smci

Jawaban:


43

Saya bukan sosok yang berwibawa, jadi perhatikan catatan singkat praktisi ini:

Semakin banyak pohon selalu lebih baik dengan hasil yang semakin berkurang. Pohon yang lebih dalam hampir selalu lebih baik jika membutuhkan lebih banyak pohon untuk kinerja yang sama.

Dua poin di atas secara langsung merupakan hasil dari tradeoff bias-varians. Pohon yang lebih dalam mengurangi bias; lebih banyak pohon mengurangi varians.

Parameter-hiper yang paling penting adalah berapa banyak fitur yang akan diuji untuk setiap pemisahan. Semakin banyak fitur yang tidak berguna, semakin banyak fitur yang harus Anda coba. Ini perlu disetel. Anda dapat mengurutkannya melalui perkiraan OOB jika Anda hanya ingin mengetahui kinerja Anda pada data pelatihan Anda dan tidak ada kembaran (~ tindakan berulang). Meskipun ini adalah parameter yang paling penting, itu optimal masih biasanya cukup dekat dengan standar yang disarankan asli (sqrt (p) atau (p / 3) untuk klasifikasi / regresi).

Penelitian yang cukup baru menunjukkan Anda bahkan tidak perlu melakukan pencarian split lengkap di dalam fitur untuk mendapatkan kinerja yang baik. Coba saja beberapa titik potong untuk setiap fitur yang dipilih dan lanjutkan. Ini membuat pelatihan lebih cepat. (~ Hutan / Pohon Yang Sangat Acak).


Beberapa catatan lain: dalam praktik saya biasanya mengkonfirmasi konvergensi dengan membandingkan prediksi dari satu setengah pohon ke yang lain. Sejauh overfitting, itu lebih merupakan fungsi dari apa yang ingin Anda generalisasi. Mereka tidak akan berpakaian berlebihan jika Anda melatih sampel yang representatif, tetapi itu jarang terjadi.
Shea Parkes

Apakah 'pohon yang lebih dalam = lebih baik, semuanya konstan' benar untuk data yang sangat bising dengan struktur ketergantungan yang berubah dari waktu ke waktu, di mana hubungan linier adalah yang paling kuat untuk tidak berubah antara perangkat pelatihan dan perangkat uji?
Jase

Saya bisa melihat potensi pohon yang lebih dangkal menjadi lebih baik jika Anda memiliki situasi di mana Anda hanya harus belajar hubungan yang dangkal, tetapi saya benar-benar ingin menggunakan bukti empiris untuk membuktikannya (dan tidak punya waktu untuk mengerjakannya). Jika Anda percaya atau memiliki bukti bahwa hubungan linear adalah yang paling tangguh, maka saya akan sangat mempertimbangkan sesuatu yang tidak berbasis pohon. Mungkin jaringan saraf dengan melewatkan lapisan?
Shea Parkes

Nah katakanlah Anda memiliki dataset dengan 3 fitur yang relevan dan 100 fitur yang white noise, dan 50 titik data. Tetapi Anda tidak tahu white noise mana dan mana yang relevan sebelumnya, Anda hanya tahu bahwa data Anda sangat berisik sehingga ini masalahnya. Jelas pohon yang sangat dangkal dengan besar mtrylebih baik, tidak ada bukti atau bukti empiris yang diperlukan untuk melihat ini.
Jase

22
  • Jumlah pohon : semakin besar semakin baik: ya. Salah satu cara untuk mengevaluasi dan mengetahui kapan harus berhenti adalah dengan memantau tingkat kesalahan Anda saat membangun hutan Anda (atau kriteria evaluasi lain yang dapat Anda gunakan) dan mendeteksi kapan itu menyatu. Anda bisa melakukannya pada set pembelajaran itu sendiri atau, jika tersedia, pada set tes independen. Juga, harus dicatat bahwa jumlah node uji di pohon Anda dibatasi oleh jumlah objek, jadi jika Anda memiliki banyak variabel dan tidak begitu banyak objek pelatihan, hutan yang lebih besar akan sangat direkomendasikan untuk meningkatkan kemungkinan mengevaluasi semua deskriptor setidaknya sekali di hutan Anda.

  • Kedalaman Pohon : ada beberapa cara untuk mengontrol seberapa dalam pohon Anda (membatasi kedalaman maksimum, membatasi jumlah node, membatasi jumlah objek yang diperlukan untuk membelah, berhenti membelah jika perpecahan tidak cukup meningkatkan ... ). Sebagian besar waktu, disarankan untuk memangkas (membatasi kedalaman) pohon jika Anda berurusan dengan data berisik. Akhirnya, Anda dapat menggunakan pohon Anda yang sudah berkembang sepenuhnya untuk menghitung kinerja pohon yang lebih pendek karena ini adalah "subset" dari pohon yang sudah berkembang sepenuhnya.

  • Berapa banyak fitur untuk diuji pada setiap node : memvalidasi silang pengalaman Anda dengan berbagai nilai (termasuk yang direkomendasikan), Anda harus memperoleh kurva kinerja dan dapat mengidentifikasi titik maksimum yang menunjukkan nilai terbaik untuk parameter ini + Shea Parkes menjawab.

  • Shea Parkes menyebutkan Extra-Trees, ini adalah makalah asli yang menjelaskan secara rinci metode ini: http://orbi.ulg.ac.be/bitstream/2268/9357/1/geurts-mlj-advance.pdf

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.