Я запустил модель регрессии МНК на наборе данных с 5 независимыми переменными. Независимые переменные и зависимые переменные являются непрерывными и линейно связаны. Площадь R составляет около 99,3%. Но когда я запускаю то же самое, используя случайный лес в R, мой результат выглядит так: «% Var объяснено: 88.42». Почему случайный лесной результат так уступает регрессии? Я предполагал, что случайный лес будет, по крайней мере, таким же хорошим, как регрессия OLS.
r
regression
random-forest
user28906
источник
источник
Ответы:
Я не знаю точно, что вы сделали, поэтому ваш исходный код поможет мне угадать меньше.
Многие случайные леса по сути являются окнами, в которых предполагается, что среднее значение представляет систему. Это прославленное CAR-дерево.
Допустим, у вас есть двухлистное CAR-дерево. Ваши данные будут разбиты на две части. (Постоянный) выход каждой кучи будет ее средним.
Теперь давайте сделаем это 1000 раз со случайными подмножествами данных. У вас все еще будут прерывистые регионы с выходными данными, которые являются средними. Победитель в РФ - самый частый результат. Вот только "Пушистики" граница между категориями.
Пример кусочно-линейного вывода дерева CART:
Скажем, например, что наша функция у = 0,5 * х + 2. Сюжет этого выглядит следующим образом:
Если бы мы смоделировали это с использованием одного дерева классификации только с двумя листами, мы сначала нашли бы точку наилучшего разделения, разделили в этой точке, а затем аппроксимировали выход функции на каждом листе как среднее значение по листу.
Если бы нам пришлось сделать это снова с большим количеством листьев в дереве CART, мы могли бы получить следующее:
Почему CAR-леса?
Вы можете видеть, что в пределе бесконечных листьев дерево CART будет приемлемым аппроксиматором.
Проблема в том, что в реальном мире шумно. Нам нравится мыслить в средствах, но миру нравится как центральная тенденция (среднее значение), так и тенденция изменения (стандартное отклонение). Шум есть.
То же самое, что придает дереву CAR большую силу, способность обрабатывать разрывы, делает его уязвимым для моделирования шума, как если бы это был сигнал.
Поэтому Лео Брейманн сделал простое, но мощное предложение: используйте методы Ensemble, чтобы сделать деревья классификации и регрессии устойчивыми. Он берет случайные подмножества (двоюродного брата по начальной загрузке) и использует их для обучения леса CAR-деревьев. Когда вы задаете вопрос о лесу, весь лес говорит, и наиболее распространенный ответ принимается в качестве результата. Если вы имеете дело с числовыми данными, может быть полезно посмотреть на ожидание как на выход.
Итак, для второго сюжета, подумайте о моделировании с использованием случайного леса. Каждое дерево будет иметь случайное подмножество данных. Это означает, что расположение «лучшей» точки разделения будет варьироваться от дерева к дереву. Если вы будете составлять график вывода случайного леса по мере приближения к разрыву, сначала несколько ветвей будут указывать скачок, а затем многие. Среднее значение в этой области будет проходить по гладкому сигмовидному пути. Начальная загрузка свернута с гауссовским, и размытие по Гауссу на этой ступенчатой функции становится сигмоидальной.
Итоги:
Вам нужно много веток на дерево, чтобы получить хорошее приближение к очень линейной функции.
Существует множество «циферблатов», которые можно изменить, чтобы повлиять на ответ, и маловероятно, что вы установили для них все правильные значения.
Ссылки:
источник
Я заметил, что это старый вопрос, но я думаю, что следует добавить еще. Как сказал @Manoel Galdino в комментариях, обычно вас интересуют прогнозы по невидимым данным. Но этот вопрос касается производительности на тренировочных данных и вопрос, почему случайный лес плохо работает с тренировочными данными ? Ответ подчеркивает интересную проблему с мешочными классификаторами, которая часто доставляла мне неприятности: регрессия к среднему значению.
Проблема заключается в том, что классификаторы в пакетном режиме, такие как случайный лес, которые создаются путем взятия образцов начальной загрузки из вашего набора данных, как правило, плохо работают в крайних случаях. Поскольку крайних данных немного, они, как правило, сглаживаются.
Более подробно, напомним, что случайный лес для регрессии усредняет прогнозы большого количества классификаторов. Если у вас есть одна точка, которая далека от других, многие из классификаторов не увидят ее, и они, по сути, сделают прогноз вне выборки, что может быть не очень хорошо. Фактически, эти прогнозы вне выборки будут стремиться подтянуть прогноз для точки данных к общему среднему значению.
Если вы используете одно дерево решений, у вас не будет той же проблемы с экстремальными значениями, но подогнанная регрессия также не будет очень линейной.
Вот иллюстрация на R. Получены некоторые данные, в которых
y
представлена идеальная линейная комбинация из пятиx
переменных. Затем делаются прогнозы с использованием линейной модели и случайного леса. Затем значенияy
обучающих данных наносятся на график против прогнозов. Вы можете ясно видеть, что случайный лес плохо работает в крайних случаях, потому что точки данных с очень большими или очень маленькими значениямиy
редки.Вы увидите ту же схему для прогнозов невидимых данных, когда для регрессии используются случайные леса. Я не уверен, как этого избежать.
randomForest
Функция R имеет опцию коррекции смещения сырой ,corr.bias
которая использует линейную регрессию по косой, но это действительно не работает.Предложения приветствуются!
источник
Случайный лес пытается найти местности среди множества объектов и множества точек данных. Он разделяет объекты и дает их различным деревьям, поскольку у вас мало функций, общий результат не так хорош, как логистическая регрессия. Случайный лес может обрабатывать числовые и категориальные переменные, но плохо справляется с пропущенными значениями.
источник
Я думаю, что Random Forest (RF) - хороший инструмент, когда функциональная форма отношений между Xs и y сложна (из-за нелинейных отношений и эффекта взаимодействия). RF классифицирует Xs на основе наилучшей точки отсечения (с точки зрения минимального SSE) и не применяет информацию исследователя о функциональной форме отношений. С другой стороны, регрессия OLS использует эту информацию. В своем примере вы знаете, каков тип отношений между X и y, и используете всю эту информацию в своей регрессионной модели, но RF не использует эту информацию.
источник
В основном, регрессия хорошо работает с непрерывными переменными, а случайный лес - с дискретными переменными.
Вы должны предоставить более подробную информацию о проблеме и о природе переменных, чтобы быть более конкретными ...
источник