2013-07-24 3 views
3

Я использую регрессионную модель случайного леса в R, и я нашел параметр corr.bias, который, согласно руководству, является «экспериментальным», мои данные нелинейны, и я просто задайте вопрос, может ли установить этот параметр в true, чтобы улучшить результаты, а также я не знаю точно, как это работает для нелинейных данных, поэтому я очень признателен, если кто-то может объяснить мне, как это смещение коррекции работает в случайном пакете леса, и если это может улучшить мою регрессионную модель или нет.Параметр corr.bias в модели случайной лесной регрессии в R

ответ

3

Короткий ответ заключается в том, что он выполняет простую коррекцию, основанную на линейной регрессии по фактическим и установленным значениям.

От regrf.c:

/* Do simple linear regression of y on yhat for bias correction. */ 
if (*biasCorr) simpleLinReg(nsample, yptr, y, coef, &errb, nout); 

и первые несколько строк этой функции просто:

void simpleLinReg(int nsample, double *x, double *y, double *coef, 
      double *mse, int *hasPred) { 
/* Compute simple linear regression of y on x, returning the coefficients, 
    the average squared residual, and the predicted values (overwriting y). */ 

Итак, когда вы подходите регрессионный случайный лес с corr.bias = TRUE объектной моделью возвращается будет содержать coef элемент, который будет просто двумя коэффициентами из линейной регрессии.

Тогда при вызове predict.randomForest это происходит:

## Apply bias correction if needed. 
yhat <- rep(NA, length(rn)) 
names(yhat) <- rn 
if (!is.null(object$coefs)) { 
    yhat[keep] <- object$coefs[1] + object$coefs[2] * ans$ypred 
} 

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

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

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