Я заметил, что при построении моделей регрессии случайных лесов, по крайней мере, в R
, прогнозируемое значение никогда не превышает максимальное значение целевой переменной, видимое в данных обучения. В качестве примера см. Код ниже. Я строю регрессионную модель для прогнозирования mpg
на основе mtcars
данных. Я строю модели OLS и случайных лесов и использую их для прогнозирования mpg
гипотетического автомобиля, который должен иметь очень хорошую экономию топлива. Как mpg
и ожидалось, OLS прогнозирует высокий уровень , а случайный лес - нет. Я заметил это и в более сложных моделях. Почему это?
> library(datasets)
> library(randomForest)
>
> data(mtcars)
> max(mtcars$mpg)
[1] 33.9
>
> set.seed(2)
> fit1 <- lm(mpg~., data=mtcars) #OLS fit
> fit2 <- randomForest(mpg~., data=mtcars) #random forest fit
>
> #Hypothetical car that should have very high mpg
> hypCar <- data.frame(cyl=4, disp=50, hp=40, drat=5.5, wt=1, qsec=24, vs=1, am=1, gear=4, carb=1)
>
> predict(fit1, hypCar) #OLS predicts higher mpg than max(mtcars$mpg)
1
37.2441
> predict(fit2, hypCar) #RF does not predict higher mpg than max(mtcars$mpg)
1
30.78899
r
random-forest
Гаурав Бансал
источник
источник
Ответы:
Как уже упоминалось в предыдущих ответах, случайный лес для деревьев регрессии / регрессии не дает ожидаемых прогнозов для точек данных, выходящих за рамки диапазона обучающих данных, поскольку они не могут экстраполировать (хорошо). Дерево регрессии состоит из иерархии узлов, где каждый узел задает тест, который необходимо выполнить для значения атрибута, а каждый конечный (конечный) узел задает правило для расчета прогнозируемого результата. В вашем случае тестовое наблюдение проходит через деревья к конечным узлам с указанием, например, «если x> 335, то y = 15», которые затем усредняются по случайному лесу.
Вот скрипт R, визуализирующий ситуацию как со случайным лесом, так и с линейной регрессией. В случае случайного леса прогнозы являются постоянными для тестирования точек данных, которые либо ниже самого низкого значения x обучающих данных, либо выше самого высокого значения x обучающих данных.
источник
В случайный лес нет способа экстраполировать, как это делает OLS. Причина проста: предсказания из случайного леса осуществляются путем усреднения результатов, полученных на нескольких деревьях. Сами деревья выводят среднее значение отсчетов в каждом терминальном узле, листья. Результат не может быть вне диапазона обучающих данных, потому что среднее всегда находится в диапазоне его составляющих.
Другими словами, невозможно, чтобы среднее значение было больше (или ниже), чем для каждой выборки, а регрессии случайных лесов основаны на усреднении.
источник
Деревья решений / Random Forrest не могут экстраполировать за пределы данных обучения. И хотя OLS может это сделать, к таким прогнозам следует относиться с осторожностью; поскольку выявленная картина не может продолжаться за пределами наблюдаемого диапазона.
источник