Смещение, зависящее от распределения ответов при случайной регрессии леса


9

Я использую пакет randomForest в R (R версия 2.13.1, randomForest версия 4.6-2) для регрессии и заметил значительный сдвиг в моих результатах: ошибка прогнозирования зависит от значения переменной отклика. Высокие значения недооценены, а низкие значения переоценены. Сначала я подозревал, что это было следствием моих данных, но следующий простой пример предполагает, что это присуще алгоритму случайного леса:

n = 1000; 
x1 = rnorm(n, mean = 0, sd = 1)
response = x1
predictors = data.frame(x1=x1) 
rf = randomForest(x=predictors, y=response)
error = response-predict(rf, predictors)
plot(x1, error)

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

Обратите внимание, что я пытался уловить этот эффект в предыдущем примере, «RandomForest в R хвосты линейной регрессии mtry». Это был плохой пример. Если смещение в вышеприведенном примере действительно присуще алгоритму, из этого следует, что поправка смещения может быть сформулирована с учетом распределения ответов, которое каждый пытается предсказать, что приводит к более точным прогнозам.

Подвержены ли смещения распределения ответов методы на основе деревьев, такие как случайный лес? Если да, то известно ли это ранее статистическому сообществу и как это обычно корректируется (например, вторая модель, которая использует остатки смещенной модели в качестве входных данных)?

Исправление смещения, зависящего от ответа, затруднено, поскольку по своей природе ответ неизвестен. К сожалению, оценка / прогнозируемый ответ не часто имеют одинаковое отношение к смещению.


Я размышлял над этим вопросом почти 12 месяцев. См. Stats.stackexchange.com/questions/21530/… и kaggle.com/forums/t/1106/random-forests-newbie-question . Я согласен с тем, что проблема заключается в том, что выбросы плохо представлены средними значениями, которые используются в качестве прогноза на каждом узле. Корректировка прогноза или модель в узле кажутся разумными подходами, но не уверены, что такое стандартный подход.
Redcalx

Ответы:


4

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

Наивное решение (и опасное из-за переоснащения) состоит в том, чтобы обернуть модель в некую классическую регрессию, которая бы изменила масштаб отклика на желаемое распределение.

Лучшее решение - одна из моделей дерева «модель в листе», например, MOB в пакете для вечеринок. Идея здесь заключается в том, что разделение пространства признаков должно закончиться, когда задача упрощается не до простого значения (как в обычном дереве), а до простого отношения (скажем, линейного) между ответом и некоторыми предикторами. Такое отношение теперь может быть разрешено путем подбора некоторой простой модели, которая не будет нарушать распределение или обрезать экстремальные значения и сможет экстраполировать.


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

Вы правы; Я думал о сценарии, когда РФ дает совершенно бессмысленный ответ, а регрессия превращает его во что-то с обманчиво лучшим . R2

3

У меня была точно такая же проблема с условным RF, доступным через пакет погремушки. Я написал об этом по электронной почте Грэму Уильямсу (автору трещотки), который любезно направил мой запрос авторам леса, который ответил и предложил поиграть с двумя параметрами, которые на самом деле нигде не упоминаются в документации CRF, но, тем не менее, похоже, касаются проблема, а именно minplit = 2 и minbucket = 1.


minsplitЯ полагаю, вы имеете в виду
smci

2

Вы должны оценить оптимальное значение mtry и размера выборки, сводя к минимуму «перекрестную проверку ошибки» выборки по сетке различных mtry, параметров выборки для любой соответствующей переменной отклика для фиксированного набора функций, а затем делать любые выводы. с точки зрения результатов. Вы можете создать комбинацию параметров сетки, используя expand.grid.


2
Это хорошее предложение для построения моделей, в целом оптимизированные параметры дают более точные прогнозы. Однако, в этом случае, насколько я могу судить, смещение существует независимо от настройки. Существует только один предиктор, поэтому mtry должно быть равно 1. Любой размер выборки, меньший n, служит только для увеличения смещения, а размер узла имеет небольшой эффект.
rumbleB
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.