Số lượng cây tối ưu trong một khu rừng ngẫu nhiên có phụ thuộc vào số lượng người dự đoán không?


46

Ai đó có thể giải thích tại sao chúng ta cần một số lượng lớn cây trong rừng ngẫu nhiên khi số lượng người dự đoán lớn? Làm thế nào chúng ta có thể xác định số lượng cây tối ưu?

Câu trả lời:


70

Rừng ngẫu nhiên sử dụng đóng bao (chọn một mẫu quan sát thay vì tất cả chúng) và phương pháp không gian con ngẫu nhiên (chọn một mẫu các tính năng chứ không phải tất cả chúng, nói cách khác - đóng gói thuộc tính ) để trồng cây. Nếu số lượng quan sát lớn, nhưng số lượng cây quá nhỏ, thì một số quan sát sẽ chỉ được dự đoán một lần hoặc thậm chí là không. Nếu số lượng dự đoán lớn nhưng số lượng cây quá nhỏ, thì một số tính năng có thể (về mặt lý thuyết) có thể bị bỏ qua trong tất cả các không gian con được sử dụng. Cả hai trường hợp đều dẫn đến việc giảm sức mạnh dự đoán rừng ngẫu nhiên. Nhưng cuối cùng là một trường hợp khá cực đoan, vì việc lựa chọn không gian con được thực hiện tại mỗi nút.

Trong quá trình phân loại, thứ nguyên không gian con là (khá nhỏ, là tổng số dự đoán) theo mặc định, nhưng một cây chứa nhiều nút. Trong hồi quy, kích thước không gian con là (đủ lớn) theo mặc định, mặc dù một cây chứa ít nút hơn. Vì vậy, số lượng cây tối ưu trong một khu rừng ngẫu nhiên phụ thuộc vào số lượng người dự đoán chỉ trong trường hợp cực đoan. pp/3ppp/3

Các trang chính thức của thuật toán trạng thái mà rừng ngẫu nhiên không overfit, và bạn có thể sử dụng như là cây nhiều như bạn muốn. Nhưng Mark R. Segal (14 tháng 4 năm 2004. "Tiêu chuẩn học máy và hồi quy rừng ngẫu nhiên." Trung tâm tin sinh học & thống kê sinh học phân tử) đã phát hiện ra rằng nó phù hợp với một số bộ dữ liệu ồn ào. Vì vậy, để có được số lượng tối ưu, bạn có thể thử đào tạo rừng ngẫu nhiên theo lưới ntreetham số (đơn giản, nhưng tiêu tốn nhiều CPU hơn) hoặc xây dựng một rừng ngẫu nhiên có nhiều cây với keep.inbag, tính tỷ lệ lỗi ngoài túi (OOB) cho cây đầu tiên (trong đó thay đổi từ đến ) và vẽ tỷ lệ lỗi OOB so với số lượng cây (phức tạp hơn, nhưng ít tốn CPU hơn).n 1nn1ntree


-2

Theo bài viết này

Họ đề nghị rằng một khu rừng ngẫu nhiên nên có một số cây trong khoảng 64 - 128 cây . Cùng với đó, bạn nên có sự cân bằng tốt giữa ROC AUC và thời gian xử lý.


10
Có vẻ kỳ lạ là không có sự phụ thuộc vào kết quả của họ vào số lượng tính năng trong bộ dữ liệu ...
naught101

-5

Tôi muốn thêm vào một ngày nào đó nếu bạn có hơn 1000 tính năng cho bạn và 1000 hàng bạn không thể chỉ lấy số lượng cây.

Tôi khuyên bạn trước tiên nên phát hiện số lượng cpu và ram trước khi thử khởi chạy xác thực chéo để tìm tỷ lệ giữa chúng và số cây

Nếu bạn sử dụng sikit learn trong python, bạn có tùy chọn n_jobs=-1để sử dụng tất cả quy trình nhưng chi phí cho mỗi bản sao yêu cầu dữ liệu cốt lõi sau đó bạn có thể truy cập công thức này

ntree = sqrt (số hàng * số cột) / numberofcpu


6
Tôi nghĩ bạn cần chỉnh sửa điều này để cung cấp bằng chứng và biện minh cho tuyên bố của mình.
mdewey
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.