Caret xgbLinear和xgbTree

you*_*ngz 5 r gbm r-caret xgboost

我在Caret上使用GBM的这两个派生词.我在相同的数据集上尝试了两种算法,它们返回不同的准确度并在不同的时间执行.通过这个名字,我可以认为第一个在某处使用线性函数,而另一个使用树.无论如何,我不明白它在哪里使用Linear而不是Tree.我知道GBM算法使用树作为预测器,可能是第一种情况使用不同的结构,如训练?我在哪里可以找到关于此主题的一些文档?

谢谢

phi*_*ver 9

您可以在插入符号github页面上找到有关模型所有代码所在的单独模型的更多详细信息.插入文件位于此处.

但是你应该知道两个模型之间使用的参数的差异:

  • xgbLinear 用途:nrounds,lambda,alpha,eta
  • xgbTree 用途:nrounds,max_depth,eta,gamma,colsample_bytree,min_child_weight

这些选择会影响模型的结果,并会导致不同的预测.因此也有不同的准确性.xgboost中提供的其他选项将与xgboost的默认设置一起使用.

Caret模型包含dotdotdot(...)选项.所以,如果你想训练gammaxgbLinear,你可以在火车上的功能说明这一点.但不是在网格参数中.任何其他xgboost参数也是如此.

(非常糟糕)例子:

grid = expand.grid(nrounds = c(10,20), lambda= c(0.1), alpha = c(1), eta = c(0.1))
train(Species ~  ., data = iris, method = "xgbLinear", tuneGrid = grid, gamma = 0.5)
Run Code Online (Sandbox Code Playgroud)