Я пробіг 4500 випадкових лісів за ніч з деякими випадковими параметрами параметрів:
Проблема регресії, Ysignal = x1^2+sin(x2*pi) + x3 * x4 + x5
коли будь-яка x
вибірка відбирається незалежно від нормального розподілу, sd = 1, середнє = 1
Ytotal = Ysignal + Yerror
де 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
набори даних були відібрані з проблеми регресії, і доданий шум
n.obs
був випадковим числом від 1000 до 5000
n.extra.dummy.variables
між 1 і 20
ntree
завжди 1000
sample_replacement
завжди true
mtry
становить від 5 до 25, обмежений n.obs
noise.factor
між 0 і 9
samplesize.ratio
випадкове число між 10% і 100%, розмір відношення кожної завантажувальної програми
всі моделі були навчені як би rfo = randomForest(x=X, y=Ytotal, <more args>)
randomForest.performance
, Його здатність пояснити найвищу частку від TEV
збільшення в загальному випадку, коли samplesize
опускається , коли TEV
менше , ніж 50% , і зменшується , коли TEV
вище , ніж 50%.
Таким чином, якщо ваші randomForest-modelfit
звіти, наприклад, 15% пояснюють відхилення OOB-CV, і це є прийнятною для вас точністю моделі, то, ймовірно, ви можете змінити ефективність трохи вище, знизивши sampsize
до третини спостережень ntree > 1000
.
Мораль : Для дуже галасливих даних краще де-співвіднести дерева, ніж зменшити упередженість шляхом вирощування дерев максимального розміру.