`train.error'实际上代表什么是gbm?

mer*_*011 4 r gbm

考虑下面的简短R脚本.它似乎boost.hitters$train.error与原始残差或训练集的平方误差不匹配.

我根本找不到文档train.error,所以我想知道是否有人知道train.error这里真正代表什么以及它是如何计算的?

library(ISLR)
library(gbm)

set.seed(1)

Hitters=na.omit(Hitters)
Hitters$Salary = log(Hitters$Salary)

boost.hitters=gbm(Salary~.,data=Hitters, n.trees=1000,interaction.depth=4, shrinkage= 0.01)
yhat.boost=predict(boost.hitters,newdata=Hitters,n.trees=1000)

mean(boost.hitters$train.error^2)
mean(boost.hitters$train.error)

mean((yhat.boost-Hitters$Salary)^2)
Run Code Online (Sandbox Code Playgroud)

输出:

[1] 0.03704581
[1] 0.1519719
[1] 0.07148612
Run Code Online (Sandbox Code Playgroud)

mer*_*011 6

我问过我大学的一位教授.

显然train.error表示添加每个树后的训练错误(即MSE).因此,我计算的错误等于最后一棵树的训练错误,所以在我的例子中:

mean((yhat.boost-Hitters$Salary)^2) == boost.hitters$train.error[1000] 
Run Code Online (Sandbox Code Playgroud)