2012-05-09 5 views
6

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

n = 50; 
x1 = seq(1,n) 
x2 = matrix(1, n, 1) 
predictors = data.frame(x1=x1, x2=x2) 
response = x2 + x1 
rf = randomForest(x=predictors, y=response) 
plot(x1, response) 
lines(x1, predict(rf, predictors), col="red") 

Без сомнения, методы дерева не имеют свои ограничения, когда речь идет о линейности, но даже самый простой дерево регрессии, например tree() в R, не проявляет этого смещения. Я не могу представить, чтобы сообщество не осознавало этого, но не нашло упоминаний, как это вообще исправлено? Спасибо за любые комментарии

EDIT: Пример для этого вопроса является некорректным, смотрите «RandomForest для регрессии в R - распределения отклика зависимого смещения» при обмене стеки для улучшенной обработки https://stats.stackexchange.com/questions/28732/randomforest-for-regression-in-r-response-distribution-dependent-bias

ответ

5

Что вы обнаружили ISN «Собственное предубеждение в случайных лесах, а просто неспособность правильно настроить параметры настройки на модели.

Используя ваш пример данных:

rf = randomForest(x=predictors, y=response,mtry = 2,nodesize = 1) 
plot(x1, response) 
lines(x1, predict(rf, predictors), col="red") 

enter image description here

Для ваших реальных данных улучшение будет вряд ли будет настолько серьезен, конечно, и я уверен, вы получите больше пробег от nodesize чем mtry (mtry сделал большой часть здесь).

Причина, по которой обычные деревья не проявляют этого «смещения», состоит в том, что они по умолчанию выполняют поиск по всем переменным для лучшего разделения.

+0

спасибо Joran. Что-то не понравилось, и я рад видеть, что есть решение. К сожалению, для моей работы я уже настроил параметры с небольшим эффектом (за исключением, конечно, nTrees), и поэтому я в основном проигнорировал их для этого «простого» примера - я думаю, что смещение действительно существует в моем случае, снова спасибо – rumbleB

+0

Достаточно справедливо. .. Хотя если это ограничено вашими данными, это действительно не предвзятость в РФ, не так ли? ;) У вас просто сложно моделировать данные! – joran

+0

yup, предубеждение в РФ можно избежать - я изменил название этого вопроса, чтобы он мог быть более полезным для людей в будущем – rumbleB

Смежные вопросы