Подтвердить что ты не робот

Выборочная настройка леса - глубина дерева и количество деревьев

У меня есть основной вопрос о настройке случайного классификатора леса. Существует ли какое-либо отношение между количеством деревьев и глубиной дерева? Нужно ли, чтобы глубина дерева была меньше, чем количество деревьев?

4b9b3361

Ответ 1

Я согласен с Тимом, что между количеством деревьев и глубиной деревьев нет большого пальца. Как правило, вы хотите столько деревьев, сколько улучшит вашу модель. Чем больше деревьев, тем больше вычислительных затрат, и после определенного количества деревьев улучшение незначительно. Как вы можете видеть на рисунке ниже, через некоторое время нет существенного улучшения в уровне ошибок, даже если мы не увеличиваем количество деревьев.

enter image description here

Глубина дерева означает длину дерева, которое вы желаете. Более крупное дерево помогает передавать больше информации, тогда как более мелкое дерево дает менее точную информацию. Поэтому глубина должна быть достаточно большой, чтобы разделить каждый узел на нужное количество наблюдений.

Ниже приведен пример короткого дерева (листовой узел = 3) и длинного дерева (листовой узел = 6) для набора данных Iris: Короткое дерево (листовой узел = 3) дает менее точную информацию по сравнению с длинным деревом (листовой узел = 6).

Короткое дерево (листовой узел = 3):

enter image description here

Длинное дерево (листовой узел = 6):

enter image description here

Ответ 2

Для большинства практических проблем я согласен с Тимом.

Тем не менее, другие параметры влияют, когда ошибка ансамбля сходится как функция добавленных деревьев. Я предполагаю, что ограничение глубины дерева обычно приведет к сближению ансамбля немного раньше. Я редко бывал с древовидной глубиной, как если бы время вычисления было снижено, это не дает никакого другого бонуса. Снижение размера выборки бутстрапов дает меньшее время выполнения и более низкую корреляцию деревьев, что, как правило, приводит к лучшей производительности модели при сопоставимом времени выполнения. Не так называемый трюк: когда объяснение дисперсии RF модели ниже 40% (казалось бы, шумные данные), можно снизить выборки до ~ 10-50% и увеличить деревья до, например, 5000 (обычно это не так много). Ошибка ансамбля будет сходиться позже как функция деревьев. Но, из-за более низкой корреляции деревьев, модель становится более надежной и достигнет более низкого уровня погрешности OOB сходятся на плато.

Ниже показано, что сэмплирование дает наилучшую сходимость в долгосрочной перспективе, тогда как maxnodes начинается с нижней точки, но сходится меньше. Для этих шумных данных ограничение maxnodes все же лучше, чем у RF по умолчанию. Для данных с низким уровнем шума уменьшение дисперсии путем снижения maxnodes или размера выборки не приводит к увеличению смещения из-за отсутствия соответствия.

Для многих практических ситуаций вы просто отказались, если бы вы могли объяснить только 10% дисперсии. Таким образом, по умолчанию RF обычно штрафуется. Если ваш квант, который может делать ставки на сотнях или тысячах позиций, объяснение 5-10% объясняется удивительным.

зеленая кривая - это maxnodes, которые имеют глубину дерева, но не точно.

введите описание изображения здесь

library(randomForest)

X = data.frame(replicate(6,(runif(1000)-.5)*3))
ySignal = with(X, X1^2 + sin(X2) + X3 + X4)
yNoise = rnorm(1000,sd=sd(ySignal)*2)
y = ySignal + yNoise
plot(y,ySignal,main=paste("cor="),cor(ySignal,y))

#std RF
rf1 = randomForest(X,y,ntree=5000) 
print(rf1)
plot(rf1,log="x",main="black default, red samplesize, green tree depth")

#reduced sample size
rf2 = randomForest(X,y,sampsize=.1*length(y),ntree=5000) 
print(rf2)
points(1:5000,rf2$mse,col="red",type="l")

#limiting tree depth (not exact )
rf3 = randomForest(X,y,maxnodes=24,ntree=5000)
print(rf2)
points(1:5000,rf3$mse,col="darkgreen",type="l")

Ответ 3

Верно, что в целом больше деревьев приведет к лучшей точности. Однако, больше деревьев также означает больше вычислительных затрат и после определенного количества деревьев, улучшение незначительно. Статья от Oshiro et al. (2012) отметили, что на основе их теста с 29 наборами данных после 128 деревьев нет значительного улучшения (что является встроенным в график Сорен).

Что касается глубины дерева, стандартный алгоритм случайного леса вырабатывает полное дерево решений без обрезки. Единому дереву решений требуется обрезка, чтобы преодолеть сложную проблему. Однако в случайном лесу эта проблема устраняется случайным выбором переменных и действием OOB.

Ссылка: Oshiro, T.M., Perez, P.S. и Баранаускас, J.A., 2012, июль. Сколько деревьев в случайном лесу?. В MLDM (стр. 154-168).