是第
颗树,也就是我们第
次迭代需要得到的树。
也就是t个模型的预测值等于前t个模型的预测值+当前正在训练第t个模型的预测值。
那么上述公式简化为:
2.目标函数变换
我们可以讲上述公式变换:
首先将算法模型带入取代
,将后面基学习器树的复杂度进行拆分,拆成前t-1棵树的复杂度加上当前模型树的复杂度,又因为我们当时正在训练第t棵树,所以针对于前k棵树都是常量,所以现在我们的目标函数又可以写成:
这里我们考虑平方损失,此时目标函数又可以变形为:
根据上面我们就构造好了目标函数,但是为了将其进行简化,我们将其进行泰勒二阶展开
泰勒二阶展开式一般形式如下:
此时我们定义,
.
目标函数利用泰勒展开式就可以变成:
其中
因为我们的和
都是和前
个学习器相关,所以都为常数,那么简化后的目标函数就为:
变换优势总结
- 变换后的目标函数可以被二阶泰勒展开,使得目标函数在每个节点的损失函数可以被表示为关于该节点预测值的二次函数,这样可以在计算最优分裂点时,使用牛顿法或拟牛顿法等高效的优化算法来求解。
- 变换后的目标函数可以解决梯度爆炸和梯度消失问题,这是由于使用指数函数和对数函数进行变换,将目标函数的值范围映射到了一个合适的区间,从而避免了数值溢出和数值不稳定的情况。
- 变换后的目标函数可以解决分类问题的类别不平衡问题,这是由于在分类问题中,负样本数量通常远大于正样本数量,导致算法容易偏向于负样本。通过将目标函数变换为指数损失函数或对数损失函数,可以对正负样本进行加权,从而解决类别不平衡问题。
3.将树引入目标函数
那么得到了想要的目标函数,我们现在就需要将树引入到我们的目标计算函数中,去取代和
,我们依旧参照GBDT的计算原理和过程,也就是XGBoost的预测原理。
使用
代表树中叶子节点的权重
代表的是树的结构
对于决策树的例子大家可以参考我的上篇文章: