我知道梯度增强树。极端梯度提升算法现在被广泛应用。树助推器(gbtree)和线性助推器(gblinear)之间究竟有什么区别?
我的理解是,考虑到模型的复杂性,助推器树会生长出一棵适合(分类的错误率,回归的平方和)的树。线性助推器有什么不同?
我知道梯度增强树。极端梯度提升算法现在被广泛应用。树助推器(gbtree)和线性助推器(gblinear)之间究竟有什么区别?
我的理解是,考虑到模型的复杂性,助推器树会生长出一棵适合(分类的错误率,回归的平方和)的树。线性助推器有什么不同?
我最近才开始使用梯度增强树,如果我错了,请纠正我。我发现这个 wiki 页面https://en.wikipedia.org/wiki/Gradient_boosting信息丰富。查看算法和梯度树提升部分。
据我了解,梯度提升当然适用于大多数学习者。梯度提升将在迭代中() 训练一名新学习者上一次迭代的集成残差。
合奏更新为
在哪里是以前的合奏和是一个系数,使得,
特此将新学习器与旧集成按系数融合,这样新的集成解释了目标最准确的(由损失函数度量定义)
正如 wiki 页面上所解释的,弗里德曼在对决策树的特殊修改中提出,其中每个终端节点*** 新学员, 有自己独立的价值。这种修改不能转移到大多数其他学习器,例如 gblinear。
*** (维基文章描述了每个覆盖特征空间的不相交区域(R)。我更喜欢将其视为终端节点,恰好覆盖每个不相交的区域)
还要提一下,如果您选择严格的加性线性回归作为基础学习器,我认为该模型将无法拟合交互和非线性。在下面的示例中,xgboost 不适合
library(xgboost)
X = replicate(2,rnorm(5000))
y = apply(X,1,prod)
test = sample(5000,2000)
Data = cbind(X=X)
xbm = xgboost(Data[-test,],label=y[-test],params=list(booster="gblinear"),nrounds=500)
ytest = predict(xbm,Data[test,])
plot(y[test],ytest)