Случайный лес против регрессии


21

Я запустил модель регрессии МНК на наборе данных с 5 независимыми переменными. Независимые переменные и зависимые переменные являются непрерывными и линейно связаны. Площадь R составляет около 99,3%. Но когда я запускаю то же самое, используя случайный лес в R, мой результат выглядит так: «% Var объяснено: 88.42». Почему случайный лесной результат так уступает регрессии? Я предполагал, что случайный лес будет, по крайней мере, таким же хорошим, как регрессия OLS.


4
Если ваша цель состоит в том, чтобы предсказывать, более высокая R-квадрат может быть связана с переоснащением. Попробуйте сравнить прогнозы RN с прогнозами регрессии, используя перекрестную проверку.
Маноэль Гальдино

Ответы:


27

Я не знаю точно, что вы сделали, поэтому ваш исходный код поможет мне угадать меньше.

Многие случайные леса по сути являются окнами, в которых предполагается, что среднее значение представляет систему. Это прославленное CAR-дерево.

Допустим, у вас есть двухлистное CAR-дерево. Ваши данные будут разбиты на две части. (Постоянный) выход каждой кучи будет ее средним.

Теперь давайте сделаем это 1000 раз со случайными подмножествами данных. У вас все еще будут прерывистые регионы с выходными данными, которые являются средними. Победитель в РФ - самый частый результат. Вот только "Пушистики" граница между категориями.

Пример кусочно-линейного вывода дерева CART:

Скажем, например, что наша функция у = 0,5 * х + 2. Сюжет этого выглядит следующим образом: фигура 1

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

сюжет с тривиальной корзиной

Если бы нам пришлось сделать это снова с большим количеством листьев в дереве CART, мы могли бы получить следующее: введите описание изображения здесь

Почему CAR-леса?

Вы можете видеть, что в пределе бесконечных листьев дерево CART будет приемлемым аппроксиматором.

Проблема в том, что в реальном мире шумно. Нам нравится мыслить в средствах, но миру нравится как центральная тенденция (среднее значение), так и тенденция изменения (стандартное отклонение). Шум есть.

То же самое, что придает дереву CAR большую силу, способность обрабатывать разрывы, делает его уязвимым для моделирования шума, как если бы это был сигнал.

Поэтому Лео Брейманн сделал простое, но мощное предложение: используйте методы Ensemble, чтобы сделать деревья классификации и регрессии устойчивыми. Он берет случайные подмножества (двоюродного брата по начальной загрузке) и использует их для обучения леса CAR-деревьев. Когда вы задаете вопрос о лесу, весь лес говорит, и наиболее распространенный ответ принимается в качестве результата. Если вы имеете дело с числовыми данными, может быть полезно посмотреть на ожидание как на выход.

Итак, для второго сюжета, подумайте о моделировании с использованием случайного леса. Каждое дерево будет иметь случайное подмножество данных. Это означает, что расположение «лучшей» точки разделения будет варьироваться от дерева к дереву. Если вы будете составлять график вывода случайного леса по мере приближения к разрыву, сначала несколько ветвей будут указывать скачок, а затем многие. Среднее значение в этой области будет проходить по гладкому сигмовидному пути. Начальная загрузка свернута с гауссовским, и размытие по Гауссу на этой ступенчатой ​​функции становится сигмоидальной.

Итоги:

Вам нужно много веток на дерево, чтобы получить хорошее приближение к очень линейной функции.

Существует множество «циферблатов», которые можно изменить, чтобы повлиять на ответ, и маловероятно, что вы установили для них все правильные значения.

Ссылки:


Разве лесная регрессия RANDOM не выполняется с кусочно-постоянными функциями, что явно плохо подходит для линейно связанных данных?
seanv507

Я думаю, что мы говорим то же самое. Какая константа используется? право.
EngrStudent - Восстановить Монику

Если бы я думал, что мы говорим одно и то же, я бы назвал это комментарием. Я не понимаю ваш ответ. Мой ответ объясняет, что данные OP являются линейными и поэтому плохо соответствуют кусочно-постоянной функцией.
seanv507

@ seanv507 Преимущество RF заключается в том, что множество деревьев, подходящих (случайным подмножествам) возмущенных версий данных, усредняют разрывы. Результатом является лучшее приближение к лежащей в основе гладкой линии, чем то, что могло бы дать одно дерево.
Hong Ooi

По сути это повторная выборка начальной загрузки на дереве регрессии. Одна из вещей, которые мне не нравятся в начальной загрузке, это то, что равномерное распределение считается информационным априором. Разве идеальный случай не является неинформативным предшествующим?
EngrStudent - Восстановить Монику

7

Я заметил, что это старый вопрос, но я думаю, что следует добавить еще. Как сказал @Manoel Galdino в комментариях, обычно вас интересуют прогнозы по невидимым данным. Но этот вопрос касается производительности на тренировочных данных и вопрос, почему случайный лес плохо работает с тренировочными данными ? Ответ подчеркивает интересную проблему с мешочными классификаторами, которая часто доставляла мне неприятности: регрессия к среднему значению.

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

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

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

Вот иллюстрация на R. Получены некоторые данные, в которых yпредставлена ​​идеальная линейная комбинация из пяти xпеременных. Затем делаются прогнозы с использованием линейной модели и случайного леса. Затем значения yобучающих данных наносятся на график против прогнозов. Вы можете ясно видеть, что случайный лес плохо работает в крайних случаях, потому что точки данных с очень большими или очень маленькими значениями yредки.

Вы увидите ту же схему для прогнозов невидимых данных, когда для регрессии используются случайные леса. Я не уверен, как этого избежать. randomForestФункция R имеет опцию коррекции смещения сырой , corr.biasкоторая использует линейную регрессию по косой, но это действительно не работает.

Предложения приветствуются!

beta <- runif(5)
x <- matrix(rnorm(500), nc=5)
y <- drop(x %*% beta)
dat <- data.frame(y=y, x1=x[,1], x2=x[,2], x3=x[,3], x4=x[,4], x5=x[,5])
model1 <- lm(y~., data=dat)
model2 <- randomForest(y ~., data=dat)
pred1 <- predict(model1 ,dat)
pred2 <- predict(model2 ,dat)
plot(y, pred1)
points(y, pred2, col="blue")

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


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

2
Спасибо за комментарий! У меня был неприятный опыт, в котором он давал очень плохие прогнозы, которые заставляли меня выглядеть плохо. Но, возможно, нет способа получить более точные прогнозы для пограничных точек без увеличения дисперсии.
Flounderer

Дополнительный комментарий спустя годы, я заметил, что RF имеет тенденцию работать плохо везде, где есть небольшой разрыв в данных. Конечно, в крайних случаях набора данных часто бывает меньше данных, но время от времени вы можете получить пробел прямо в центре. RF может сделать правильный набор данных с любыми пробелами в нем.
SeldomSeenSlim

2

Случайный лес пытается найти местности среди множества объектов и множества точек данных. Он разделяет объекты и дает их различным деревьям, поскольку у вас мало функций, общий результат не так хорош, как логистическая регрессия. Случайный лес может обрабатывать числовые и категориальные переменные, но плохо справляется с пропущенными значениями.


0

Я думаю, что Random Forest (RF) - хороший инструмент, когда функциональная форма отношений между Xs и y сложна (из-за нелинейных отношений и эффекта взаимодействия). RF классифицирует Xs на основе наилучшей точки отсечения (с точки зрения минимального SSE) и не применяет информацию исследователя о функциональной форме отношений. С другой стороны, регрессия OLS использует эту информацию. В своем примере вы знаете, каков тип отношений между X и y, и используете всю эту информацию в своей регрессионной модели, но RF не использует эту информацию.


-2

В основном, регрессия хорошо работает с непрерывными переменными, а случайный лес - с дискретными переменными.

Вы должны предоставить более подробную информацию о проблеме и о природе переменных, чтобы быть более конкретными ...


Все переменные дневной доходности акций (финансовые временные ряды) ...
user28906

3
«Регрессия хорошо работает с непрерывными переменными, а случайный лес - с дискретными переменными». В общем случае это не так. Существуют различия в умозаключениях и предсказаниях, и даже с предсказаниями есть случаи, когда регрессия предпочтительнее, чем RF.
AdamO
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.