Có một công thức hoặc quy tắc để xác định sampSize chính xác cho RandomForest không?


13

Tôi đang chơi với RandomForest và nhận thấy rằng việc tăng sampSize thường dẫn đến hiệu suất tốt hơn. Có một quy tắc / công thức / vv cho thấy sampSize tối ưu nên là gì hay nó là một thử nghiệm và lỗi? Tôi đoán một cách khác của phrasing nó; những rủi ro của tôi quá nhỏ của một sampSize hoặc quá lớn (quá mức?) là gì?


Câu hỏi này đề cập đến việc thực hiện R của rừng ngẫu nhiên trong randomForestgói. Hàm randomForestnày có một tham số sampSizeđược mô tả trong tài liệu như

Kích thước của mẫu để vẽ. Để phân loại, nếu sampize là một vectơ có độ dài số tầng, thì lấy mẫu được phân tầng theo tầng và các phần tử của sampize chỉ ra các số được rút ra từ tầng.

Câu trả lời:


21

Nói chung, cỡ mẫu cho một khu rừng ngẫu nhiên đóng vai trò kiểm soát "mức độ ngẫu nhiên" có liên quan, và do đó là một cách điều chỉnh sự đánh đổi sai lệch. Việc tăng kích thước mẫu dẫn đến một khu rừng "ít ngẫu nhiên" hơn và do đó có xu hướng phù hợp hơn. Giảm kích thước mẫu làm tăng sự thay đổi của từng cây trong rừng, ngăn ngừa quá mức, nhưng thường phải trả giá bằng hiệu suất của mô hình. Một tác dụng phụ hữu ích là kích thước mẫu thấp hơn làm giảm thời gian cần thiết để huấn luyện mô hình.

Quy tắc thông thường cho kích thước mẫu tốt nhất là "mẫu bootstrap", mẫu có kích thước tương đương với tập dữ liệu gốc, nhưng được chọn thay thế, vì vậy một số hàng không được chọn và một số hàng khác được chọn nhiều lần. Điều này thường cung cấp hiệu suất gần tối ưu và là mặc định trong triển khai R tiêu chuẩn. Tuy nhiên, bạn có thể tìm thấy trong các ứng dụng trong thế giới thực, việc điều chỉnh kích thước mẫu có thể dẫn đến hiệu suất được cải thiện. Khi nghi ngờ, hãy chọn cỡ mẫu thích hợp (và các tham số mô hình khác) bằng cách sử dụng xác thực chéo.


2

Tôi đã chạy 4500 rừng ngẫu nhiên qua đêm với một số cài đặt tham số ngẫu nhiên:

Vấn đề hồi quy Ysignal = x1^2+sin(x2*pi) + x3 * x4 + x5 trong đó bất kỳ xđược lấy mẫu độc lập với phân phối bình thường, sd = 1, mean = 1

Ytotal = Ysignal + Yerror

Ở đâu Yerror = rnorm(n.observations,sd=sd(Ysignal))*noise.factor

theoretical.explainable.variance"TEV" = var(Ysignal= / var(Ytotal)

randomForest.performance = explained.variance(OOB cross-validation) / TEV

các bộ dữ liệu được lấy mẫu từ bài toán hồi quy và nhiễu thêm vào n.obslà một số ngẫu nhiên trong khoảng từ 1000 đến 5000 n.extra.dummy.variablestrong khoảng từ 1 đến 20

ntree luôn luôn 1000

sample_replacement luôn luôn true

mtrylà 5 đến 25, giới hạn n.obs noise.factortrong khoảng từ 0 đến 9

samplesize.ratio một số ngẫu nhiên từ 10% đến 100%, kích thước tỷ lệ của mỗi bootstrap

tất cả các mô hình đã được đào tạo như rfo = randomForest(x=X, y=Ytotal, <more args>)

các randomForest.performance, khả năng của mình để giải thích phần cao nhất của TEVsự gia tăng chung khi samplesizeGiảm khi TEVnhỏ hơn 50% và giảm khi TEVcao hơn 50%.

Do đó, nếu các randomForest-modelfitbáo cáo của bạn, ví dụ 15% giải thích phương sai bằng OOB-CV và đây là độ chính xác mô hình chấp nhận được cho bạn, thì bạn có thể điều chỉnh hiệu suất cao hơn một chút bằng cách hạ sampsizexuống một phần ba số lượng quan sát, được đưa ra ntree > 1000.

Tinh thần : Đối với dữ liệu rất ồn, tốt hơn là khử các cây tương quan hơn là hạ thấp độ lệch bằng cách trồng cây có kích thước tối đa.


1

Để các khu rừng ngẫu nhiên hoạt động tốt trong dữ liệu mới như trong dữ liệu đào tạo, kích thước mẫu được yêu cầu là rất lớn, thường gấp 200 lần số lượng tính năng ứng cử viên . Xem ở đây .


2
Tiến sĩ Harrell, tôi nghĩ rằng OP đang hỏi về kích thước của việc lấy mẫu lại được sử dụng để xây dựng từng cây riêng lẻ, thay vì tổng kích thước của tập dữ liệu.
Sycorax nói Phục hồi lại
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.