GBDT回归算法
- 构建初始分类器,其中为根节点的标签
- 对迭代轮数
- 对样本,计算残差
- 利用样本拟合CART回归树得到第棵树,其叶节点共包含个样本
- 对叶节点进行最佳拟合
- 更新分类器
- 得到强学习器
XGboost
XGBoost的目标函数由训练损失和正则化项两部分组成,目标函数定义如下:
当我们学习第棵树时有,代入我们的目标函数得到:
根据泰勒展开式
,
重新定义一棵树,叶子节点的权重为,实例到叶子节点的映射关系为
树的复杂度
叶子节点归组
令,得到:
这个式子是关于的一元二次函数
-
1. 分裂一个结点
在实际训练过程中,当建立第 t 棵树时,XGBoost采用贪心法进行树结点的分裂:
从树深为0时开始:
- 对树中的每个叶子结点尝试进行分裂;
- 每次分裂后,原来的一个叶子结点继续分裂为左右两个子叶子结点,原叶子结点中的样本集将根据该结点的判断规则分散到左右两个叶子结点中;
- 新分裂一个结点后,我们需要检测这次分裂是否会给损失函数带来增益,增益的定义如下:
-
如果增益Gain>0,即分裂为两个叶子节点后,目标函数下降了,那么我们会考虑此次分裂的结果。
-
在分裂一个结点时,我们会有很多个候选分割点,寻找最佳分割点的大致步骤如下:
- 遍历每个结点的每个特征;
- 对每个特征,按特征值大小将特征值排序;
- 线性扫描,找出每个特征的最佳分裂特征值;
- 在所有特征中找出最好的分裂点(分裂后增益最大的特征及特征值)