Caret xgbLinear和xgbTree

时间:2016-09-26 08:28:39

标签: r r-caret xgboost gbm

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

由于

1 个答案:

答案 0 :(得分:9)

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

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

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

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

Caret模型包含dotdotdot(...)选项。因此,如果您想使用gamma训练xgbLinear,可以在列车功能中指定此项。但不是在网格参数中。任何其他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)