Câu trả lời:
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/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 ntree
tham 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 1ntree
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ý.
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