两大集成学习的框架:bagging 和 boosting。xgboost 是属于boosting系列的算法。
这篇文章主要介绍一下,xgboost 模型的训练过程。
从宏观来说,就是创建一棵树拟合目标函数,期望loss 最小,然后构建另外一个树来拟合前面所有树的残差。
那从每一棵树来说,它是如何构造一棵树的呢。具体的
从第0层开始,如果分裂能够比不分裂带来提升,那么就选择分裂,看一下。所以在分裂的过程当中就考虑了 normalization。
首先,1) 只有一个节点,这个节点是包含了所有的训练数据,也就是不分裂,只有一个叶子节点,那么这个叶子节点的分数应该是。
举个例子,下面这个图是从原始的无分裂的状态,分裂了两次之后的结果。
下面看xgboost 是根据什么来选择是否分裂的?xgboost 使用了贪心算法。其实是根据当前的每个feature的每个split 进行 object gain 评估。选择能够降低目前的object loss 最好的点,也就是Gain (收益)最大的点。
1) 遍历所有的feature 1....d
2) 遍历每个feature 的 split point,计算object gain。
3) 找到最大的split point,然后那个点就是当前最好的选择。如果所有的选择都只带来negative gain的ÿ