`train.error` 对 gbm 的实际代表是啥?
Posted
技术标签:
【中文标题】`train.error` 对 gbm 的实际代表是啥?【英文标题】:What does `train.error` actually represent for gbm?`train.error` 对 gbm 的实际代表是什么? 【发布时间】:2013-12-02 20:52:22 【问题描述】:考虑下面的简短 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)
输出:
[1] 0.03704581
[1] 0.1519719
[1] 0.07148612
【问题讨论】:
【参考方案1】:我问了我大学的一位教授。
显然train.error
表示每棵树添加后的训练误差(即MSE)。因此我计算的误差等于最后一棵树的训练误差,所以在我的例子中:
mean((yhat.boost-Hitters$Salary)^2) == boost.hitters$train.error[1000]
【讨论】:
所以实际上是均方误差。感谢您以简单的方式表示它。以上是关于`train.error` 对 gbm 的实际代表是啥?的主要内容,如果未能解决你的问题,请参考以下文章
从结构到性能,一文概述XGBoostLight GBM和CatBoost的同与不同