Я пробіг 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.
Мораль : Для дуже галасливих даних краще де-співвіднести дерева, ніж зменшити упередженість шляхом вирощування дерев максимального розміру.