我尝试使用iris
包中的gbm
对gbm
数据集拟合梯度增强模型(弱学习者的最大深度= 2棵树)。我将学习次数为M = 1000
的迭代次数设置为learning.rate = 0.001
。然后,我将结果与回归树的结果进行了比较(使用rpart
)。但是,似乎回归树的性能优于梯度提升模型。这是什么原因呢?以及如何改善梯度增强模型的性能?我认为学习率0.001应该足以满足1000次迭代/增强树。
library(rpart)
library(gbm)
data(iris)
train.dat <- iris[1:100,]
test.dat <- iris[101:150,]
learning.rate <- 0.001
M <- 1000
gbm.model <- gbm(Sepal.Length ~ .,data = train.dat,distribution = "gaussian",n.trees = M,interaction.depth = 2,shrinkage = learning.rate,bag.fraction = 1,train.fraction = 1)
yhats.gbm <- predict(gbm.model,newdata = test.dat,n.trees = M)
tree.mod <- rpart(Sepal.Length ~ .,data = train.dat)
yhats.tree <- predict(tree.mod,newdata = test.dat)
> sqrt(mean((test.dat$Sepal.Length - yhats.gbm)^2))
[1] 1.209446
> sqrt(mean((test.dat$Sepal.Length - yhats.tree)^2))
[1] 0.6345438