我正在尝试了解 XGBoost 算法并围绕它有一些问题。
我读过各种博客,但似乎都在讲述不同的故事。下面是我正在使用的代码片段(仅供参考)。
param <- list( objective = 'reg:linear',
eta = 0.01,
max_depth = 7,
subsample = 0.7,
colsample_bytree = 0.7,
min_child_weight = 5
)
以下是我的 4 个问题:
1)XGBoost 似乎使用梯度下降通过改变系数来最小化成本函数。我知道它可以用于使用线性回归的 gblinear 模型。
但是,对于 gbtree 模型,XGboost 如何应用梯度体面,因为基于树的模型中没有系数可供模型更改。或者有吗?
2) 类似地,gbtree 模型使用参数 lambda 进行 L2 正则化,使用 alpha 进行 L1 正则化。我知道正则化对系数施加了一些限制,但是 gbtree 模型又没有系数。那么它如何对其施加约束呢?
3)目标函数的工作是什么。例如 reg:linear。据我了解,分配目标函数只会告诉模型使用哪个评估指标。但是,它有一个单独的 eval_metric 参数。那么为什么我们需要目标函数呢?
4) 简单来说,min_child_weight 是什么?我以为这只是最低限度的没有。叶节点中的观察值。但我认为这与粗麻布指标等有关,我不太了解。
因此,如果有人能以简单易懂的方式对这些内容进行更多了解,我将不胜感激?