Có phải mô hình hóa với Rừng ngẫu nhiên yêu cầu xác nhận chéo?


23

Theo như tôi đã thấy, các ý kiến ​​có xu hướng khác nhau về điều này. Thực tiễn tốt nhất chắc chắn sẽ ra lệnh bằng cách sử dụng xác thực chéo (đặc biệt nếu so sánh RF với các thuật toán khác trên cùng một tập dữ liệu). Mặt khác, nguồn ban đầu nói rằng lỗi OOB thực tế được tính toán trong quá trình đào tạo mô hình là đủ chỉ số về hiệu suất của bộ kiểm tra. Ngay cả Trevor Hastie, trong một cuộc đàm phán tương đối gần đây nói rằng "Rừng ngẫu nhiên cung cấp xác nhận chéo miễn phí". Theo trực giác, điều này có ý nghĩa với tôi, nếu đào tạo và cố gắng cải thiện mô hình dựa trên RF trên một tập dữ liệu.

Ai đó có thể vui lòng đưa ra các lập luận cho và chống lại nhu cầu xác thực chéo với các khu rừng ngẫu nhiên không?


Các câu hỏi tìm kiếm ý kiến ​​rõ ràng thường không được khuyến khích trên các trang web trao đổi ngăn xếp, datascience.stackexchange.com/help/dont-ask , có lẽ bạn có thể viết lại câu hỏi để yêu cầu mẫu mực hỗ trợ trải nghiệm người dùng? Hoặc tìm kiếm một cơ sở lý thuyết cho vị trí này hay vị trí khác.
image_doctor 20/07/2015

2
Rừng ngẫu nhiên ít có khả năng phù hợp hơn các thuật toán ML khác, nhưng vẫn nên sử dụng xác thực chéo (hoặc một số hình thức đánh giá tạm thời thay thế).
David

Tôi nghĩ bạn sholud hỏi câu hỏi đó trên thống kê SO: stats.stackexchange.com
Marcin Kosiński

Tôi muốn thứ hai @David ... bằng cách này hay cách khác, bạn sẽ thực hiện xác nhận chéo.

Bạn có thể cung cấp một tài liệu tham khảo cho tuyên bố được tuyên bố bởi Trevor Hastie?
tipanverella

Câu trả lời:


7

Theo mặc định, rừng ngẫu nhiên lấy dữ liệu 2/3 để đào tạo và nghỉ ngơi để kiểm tra hồi quy và gần 70% dữ liệu cho đào tạo và nghỉ ngơi để kiểm tra trong quá trình phân loại. Nguyên tắc vì nó ngẫu nhiên lựa chọn biến trong mỗi lần tách cây, nó không thiên về sự phù hợp các mô hình khác. Tuy nhiên, nếu bạn muốn sử dụng CV bằng cách sử dụng nfold trong sklearn, bạn vẫn có thể sử dụng khái niệm bộ giữ ngoài như oob_score (hết túi) = True hiển thị hiệu suất mô hình có hoặc không sử dụng CV. Vì vậy, tóm lại, sử dụng oob_score = True có hoặc không có nfold có thể tự biết liệu sử dụng CV có tốt cho dữ liệu của bạn hay không. Nói chung nếu mục tiêu của bạn đang theo một phân phối nhất định và bạn không có nhiều dữ liệu quan sát với bạn thì sử dụng CV sẽ không cung cấp cải thiện nhiều.


5

Một điểm khác biệt chính là xác nhận chéo đảm bảo tất cả các mẫu sẽ xuất hiện trong tập huấn luyện và kiểm tra, do đó 100% dữ liệu của bạn sẽ được sử dụng tại một số điểm để đào tạo và kiểm tra.

Tùy thuộc vào kích thước của tập dữ liệu của bạn, bootstrapping, lấy mẫu thay thế, xảy ra trong khu rừng ngẫu nhiên sẽ không đảm bảo các phần tách mà cây nhìn thấy sẽ chứa tất cả các trường hợp. Nếu bạn có đủ cây trong rừng, ước tính OOB sẽ hội tụ một cách bất thường theo giá trị ước tính OOB tốt nhất.

Độ chính xác của cả hai phương pháp ở một mức độ nào đó sẽ phụ thuộc vào dữ liệu, do đó có thể nên thận trọng khi so sánh cả hai phương pháp trên dữ liệu cụ thể mà bạn có trước mặt và xem liệu ước tính CV và RF OOB có cho các giá trị tương tự nhau không.

Nếu họ không làm như vậy, thì sẽ đáng để khám phá thêm các ước tính về tỷ lệ lỗi thực sự, có lẽ bằng các giá trị K cao hơn nhiều trong CV.


3

Tôi đã thực hiện một số thử nghiệm trên một tập dữ liệu gồm 50 nghìn hàng, sử dụng sklearn.RandomForestRegressor.

Tôi nhận được điểm số khác nhau đáng kể - Tôi đang sử dụng một gini được chuẩn hóa cho số liệu - tùy thuộc vào việc tôi sử dụng rf.oob_prediction_(0,2927) hay CV KFold (0,258 cho 7 lần và 0,3236 cho 3 lần).

Với điều đó, có vẻ như quan điểm của bạn về "đặc biệt là nếu so sánh RF với các thuật toán khác trên cùng một tập dữ liệu" là một sự cân nhắc mạnh mẽ đối với việc sử dụng CV thủ công thay vì dựa vào dự đoán OOB.

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.