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