Я использую пакет 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». Это был плохой пример. Если смещение в вышеприведенном примере действительно присуще алгоритму, из этого следует, что поправка смещения может быть сформулирована с учетом распределения ответов, которое каждый пытается предсказать, что приводит к более точным прогнозам.
Подвержены ли смещения распределения ответов методы на основе деревьев, такие как случайный лес? Если да, то известно ли это ранее статистическому сообществу и как это обычно корректируется (например, вторая модель, которая использует остатки смещенной модели в качестве входных данных)?
Исправление смещения, зависящего от ответа, затруднено, поскольку по своей природе ответ неизвестен. К сожалению, оценка / прогнозируемый ответ не часто имеют одинаковое отношение к смещению.