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.obs
là một số ngẫu nhiên trong khoảng từ 1000 đến 5000
n.extra.dummy.variables
trong khoảng từ 1 đến 20
ntree
luôn luôn 1000
sample_replacement
luôn luôn true
mtry
là 5 đến 25, giới hạn n.obs
noise.factor
trong 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 TEV
sự gia tăng chung khi samplesize
Giảm khi TEV
nhỏ hơn 50% và giảm khi TEV
cao hơn 50%.
Do đó, nếu các randomForest-modelfit
bá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ạ sampsize
xuố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.