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