Bagaimana cara menghindari overfitting di hutan acak?

11
  1. Saya ingin menghindari overfitting di hutan acak. Dalam hal ini, saya bermaksud menggunakan mtry, nodesize, dan maxnodes dll. Bisakah Anda membantu saya memilih nilai untuk parameter ini? Saya menggunakan R.

  2. Juga, jika mungkin, tolong katakan padaku bagaimana saya bisa menggunakan validasi silang k-fold untuk hutan acak (dalam R).

Arun
sumber

Jawaban:

7

Relatif terhadap model lain, Hutan Acak cenderung kurang cocok tetapi masih merupakan sesuatu yang ingin Anda lakukan secara eksplisit untuk menghindari. Parameter model tuning jelas merupakan salah satu elemen untuk menghindari overfitting tetapi itu bukan satu-satunya. Sebenarnya saya akan mengatakan bahwa fitur pelatihan Anda lebih cenderung menyebabkan overfitting daripada parameter model, terutama dengan Hutan Acak. Jadi saya pikir kuncinya adalah benar-benar memiliki metode yang dapat diandalkan untuk mengevaluasi model Anda untuk memeriksa overfitting lebih dari apa pun, yang membawa kita ke pertanyaan kedua.

Seperti disinggung di atas, menjalankan validasi silang akan memungkinkan Anda menghindari overfitting. Memilih model terbaik Anda berdasarkan hasil CV akan mengarah pada model yang tidak overfit, yang belum tentu berlaku untuk sesuatu seperti kesalahan di luar tas. Cara termudah untuk menjalankan CV di R adalah dengan caretpaket. Contoh sederhana di bawah ini:

> library(caret)
> 
> data(iris)
> 
> tr <- trainControl(method = "cv", number = 5)
> 
> train(Species ~ .,data=iris,method="rf",trControl= tr)
Random Forest 

150 samples
  4 predictor
  3 classes: 'setosa', 'versicolor', 'virginica' 

No pre-processing
Resampling: Cross-Validated (5 fold) 

Summary of sample sizes: 120, 120, 120, 120, 120 

Resampling results across tuning parameters:

  mtry  Accuracy  Kappa  Accuracy SD  Kappa SD  
  2     0.96      0.94   0.04346135   0.06519202
  3     0.96      0.94   0.04346135   0.06519202
  4     0.96      0.94   0.04346135   0.06519202

Accuracy was used to select the optimal model using  the largest value.
The final value used for the model was mtry = 2. 
David
sumber
Terima kasih banyak atas balasan dan sarannya. Hanya ingin tahu betapa berbedanya menggunakan paket caret untuk pemilihan fitur bila dibandingkan dengan memilih variabel penting menggunakan algoritma randomForest?
Arun
Itu terdengar seperti pertanyaan yang berbeda untuk dikirim - perbedaannya sangat luas mengingat Anda menjalankan hal-hal seperti pemilihan fitur rekursif menggunakan algoritma pilihan Anda di caret.
David
@ David Apa yang Anda maksud dengan "yang belum tentu demikian untuk sesuatu seperti kesalahan di luar tas"? Apakah maksud Anda bahwa estimasi di luar kantong bukan cara yang baik untuk menghindari overfitting?
Pierre
5

@ xof6 benar dalam arti bahwa semakin dalam model memiliki lebih cenderung untuk berpakaian, tapi saya ingin menambahkan beberapa parameter yang mungkin berguna bagi Anda. Saya tidak tahu paket mana yang Anda gunakan dengan R dan saya tidak akrab dengan R sama sekali, tapi saya pikir harus ada rekan-rekan dari parameter ini yang diterapkan di sana.

Jumlah pohon - Semakin besar jumlah ini, semakin kecil kemungkinan hutan untuk ditumbuhi. Ini berarti bahwa karena setiap pohon keputusan mempelajari beberapa aspek dari data pelatihan, Anda mendapatkan lebih banyak pilihan untuk dipilih, sehingga untuk berbicara. Jumlah fitur - Jumlah ini merupakan berapa banyak fitur yang dipelajari setiap pohon. Ketika jumlah ini bertambah, pohon-pohon menjadi semakin rumit, karenanya mereka mempelajari pola-pola yang mungkin tidak ada dalam data uji. Dibutuhkan beberapa percobaan untuk menemukan nilai yang tepat, tetapi seperti itu adalah pembelajaran mesin. Eksperimen dengan kedalaman umum juga, seperti yang kami sebutkan!

moriara
sumber
4

Berikut ini adalah tautan yang bagus tentang hal itu di stackexchange /stats/111968/random-forest-how-to-handle-overfitting , namun pengalaman umum saya adalah semakin mendalam model memiliki semakin cenderung. untuk berpakaian.

0xF
sumber
Ini masuk akal dengan satu pengklasifikasi pohon. Namun, saya telah membaca di forum-forum ini bahwa hutan-hutan acak dilindungi dari pemasangan yang berlebihan dan bahwa pohon-pohon harus ditanam sepenuhnya (yaitu nodesize = 1 untuk klasifikasi).
Seanosapien
0

Saya selalu, mengurangi mtrysampai kesalahan pada dataset kereta meningkat, kemudian saya menurunkan nodesize dan kedalaman sampai perbedaan antara kesalahan pada kereta dan dataset berhenti berkurang

Qbik
sumber