Làm thế nào để tránh bị quá mức trong rừng ngẫu nhiên?


11
  1. Tôi muốn tránh quá nhiều trong rừng ngẫu nhiên. Về vấn đề này, tôi dự định sử dụng mtry, bitsize và maxnodes, v.v. Bạn có thể giúp tôi chọn giá trị cho các tham số này không? Tôi đang sử dụng R.

  2. Ngoài ra, nếu có thể, vui lòng cho tôi biết làm thế nào tôi có thể sử dụng xác thực chéo k-gấp cho rừng ngẫu nhiên (tính bằng R).

Câu trả lời:


7

Liên quan đến các mô hình khác, Rừng ngẫu nhiên ít có khả năng phù hợp hơn nhưng nó vẫn là thứ mà bạn muốn thực hiện một nỗ lực rõ ràng để tránh. Điều chỉnh các tham số mô hình chắc chắn là một yếu tố của việc tránh quá mức nhưng nó không phải là yếu tố duy nhất. Trong thực tế, tôi muốn nói rằng các tính năng đào tạo của bạn có nhiều khả năng dẫn đến tình trạng thừa hơn so với các tham số mô hình, đặc biệt là với Rừng ngẫu nhiên. Vì vậy, tôi nghĩ rằng chìa khóa thực sự có một phương pháp đáng tin cậy để đánh giá mô hình của bạn để kiểm tra mức độ vượt quá nhiều hơn bất kỳ điều gì khác, điều này đưa chúng ta đến câu hỏi thứ hai của bạn.

Như đã nói ở trên, chạy xác thực chéo sẽ cho phép bạn tránh bị quá mức. Chọn mô hình tốt nhất của bạn dựa trên kết quả CV sẽ dẫn đến một mô hình không phù hợp, điều này không nhất thiết là trường hợp xảy ra như lỗi túi. Cách dễ nhất để chạy CV trong R là với caretgói. Một ví dụ đơn giản dưới đây:

> 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. 

Cảm ơn bạn rất nhiều vì đã trả lời và lời khuyên. Chỉ muốn biết sự khác biệt khi sử dụng gói caret để lựa chọn tính năng khi so sánh với việc chọn các biến quan trọng bằng thuật toán RandomForest?
Arun

Nghe có vẻ như là một câu hỏi khác nhau để đăng - sự khác biệt là rất lớn khi bạn chạy những thứ như lựa chọn tính năng đệ quy bằng bất kỳ thuật toán nào bạn chọn trong dấu mũ.
David

@David Ý bạn là gì khi "không nhất thiết là trường hợp xảy ra lỗi gì đó như lỗi túi"? Bạn có nghĩa là ra khỏi ước tính túi không phải là một cách tốt để tránh thừa.
Pierre

5

@ xof6 là chính xác theo nghĩa là mô hình càng sâu thì nó càng có xu hướng phù hợp hơn, nhưng tôi muốn thêm một số tham số có thể hữu ích cho bạn. Tôi không biết bạn đang sử dụng gói nào với R và tôi hoàn toàn không quen với R, nhưng tôi nghĩ rằng phải có các đối tác của các tham số này được triển khai ở đó.

Số lượng cây - Con số này càng lớn, rừng càng ít có khả năng phù hợp. Điều này có nghĩa là khi mỗi cây quyết định đang học một số khía cạnh của dữ liệu đào tạo, bạn sẽ có nhiều tùy chọn hơn để lựa chọn, có thể nói như vậy. Số lượng tính năng - Số này cấu thành số lượng tính năng mà mỗi cây riêng lẻ học được. Khi con số này tăng lên, các cây ngày càng phức tạp hơn, do đó chúng đang học các kiểu có thể không có trong dữ liệu thử nghiệm. Sẽ mất một số thử nghiệm để tìm ra giá trị phù hợp, nhưng đó là học máy. Thử nghiệm với độ sâu chung là tốt, như chúng tôi đã đề cập!


4

Đây là một liên kết tuyệt vời về điều đó trên stackexchange /stats/111968/random-forest-how-to-handle-overfting , tuy nhiên kinh nghiệm chung của tôi là mô hình càng có chiều sâu thì nó càng có xu hướng để quá sức.


Điều này có ý nghĩa với một phân loại cây duy nhất. Tuy nhiên, tôi đã đọc trên các diễn đàn này rằng các khu rừng ngẫu nhiên được bảo vệ khỏi sự phù hợp quá mức và cây nên được trồng đầy đủ (ví dụ: kích thước hạch = 1 để phân loại).
Seanosapien

0

Tôi luôn luôn, giảm mtrycho đến khi lỗi trên tập dữ liệu tàu tăng, sau đó tôi hạ thấp nút và độ sâu cho đến khi chênh lệch giữa lỗi trên tàu và tập dữ liệu dừng lại để giảm

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.