Отклонение в гм является среднеквадратичной ошибкой, и оно будет зависеть от масштаба, в котором находится ваша зависимая переменная.
Например:
library(dismo)
library(mlbench)
data(BostonHousing)
idx=sample(nrow(BostonHousing),400)
TrnData = BostonHousing[idx,]
TestData = BostonHousing[-idx,]
Зависимая переменная - это последний столбец "medv", поэтому мы запускаем gbm для необработанных данных:
gbm_0 = gbm.step(data=TrnData,gbm.x=1:13,gbm.y=14,family="gaussian")
mean total deviance = 84.02
mean residual deviance = 7.871
estimated cv deviance = 13.959 ; se = 1.909
training data correlation = 0.952
cv correlation = 0.916 ; se = 0.012
Вы можете видеть, что среднее отклонение также можно рассчитать по вашим остаткам (что предсказывается по y - y):
mean(gbm_0$residuals^2)
[1] 7.871158
Всегда полезно использовать testData (на котором модель не была обучена). Вы также можете проверить, насколько близко это к фактическим данным, используя либо корреляцию, либо MAE (средняя абсолютная ошибка):
pred = predict(gbm_0,TestData,1000)
# or pearson if you like
cor(pred,TestData$medv,method="spearman")
[1] 0.8652737
# MAE
mean(abs(TestData$medv-pred))
[1] 2.75325
Визуализируйте, хорошая корреляция имеет смысл, что ваши прогнозы в среднем отклоняются на 3.
Теперь, если вы измените шкалу зависимой переменной, отклонение из-за вашей интерпретации изменится, или MAE останется прежним:
TrnData$medv = TrnData$medv*2
TestData$medv = TestData$medv*2
gbm_2 = gbm.step(data=TrnData,gbm.x=1:13,gbm.y=14,family="gaussian")
mean total deviance = 336.081
mean residual deviance = 30.983
estimated cv deviance = 57.52 ; se = 10.254
training data correlation = 0.953
cv correlation = 0.911 ; se = 0.019
elapsed time - 0.2 minutes
pred = predict(gbm_2,TestData,1000)
cor(pred,TestData$medv,method="spearman")
[1] 0.8676821
mean(abs(TestData$medv-pred))
[1] 5.47673