xgboost算法数学原理
1、求预测值
y^i=ϕ(xi)=∑k=1Kfk(xi),fk∈F,(1) \hat{y}_i=\phi\left(\mathbf{x}_i\right)=\sum_{k=1}^K f_k\left(\mathbf{x}_i\right), \quad f_k \in \mathcal{F},\tag{1} y^i=ϕ(xi)=k=1∑Kfk(xi),fk∈F,(1)
F={
f(x)=wq(x)}(q:Rm→T,w∈RT)\mathcal{F}=\left\{f(\mathbf{x})=w_{q(\mathbf{x})}\right\}\left(q: \mathbb{R}^m \rightarrow T, w \in \mathbb{R}^T\right)F={
f(x)=wq(x)}(q:Rm→T,w∈RT):递归树的的空间;
qqq:每棵树的结构,映射一个样本到一个叶子节点index;
T:T:T:叶子的数目;fkf_kfk对于一个独立的树结构qqq和叶子权重www。
wiw_iwi:在i−thi-thi−th叶子节点的分数;(与决策树不同,递归树在每个叶子节点上包含一个连续分数)。
示例图:(注:图中的人指的是一个个样本)
结合上面的公式理解就是对于样本iii的预测值等于KKK棵递归树样本落在的叶子节点对应的分数的和;

2、计算带正则项的损失
L(ϕ)=∑il(y^i,yi)+∑kΩ(fk) where Ω(f)=γT+12λ∥w∥2(2) \begin{aligned} & \mathcal{L}(\phi)=\sum_i l\left(\hat{y}_i, y_i\right)+\sum_k \Omega\left(f_k\right) \\ & \text { where } \Omega(f)=\gamma T+\frac{1}{2} \lambda\|w\|^2 \end{aligned}\tag{2} L(ϕ)=i∑l(y^i,yi)+k∑Ω(fk) where Ω(f)=γT+21λ∥w∥2(2)
lll:衡量预测值yi^\hat{y_i}yi^和目标值yiy_iyi差别的可微的凸函数;
Ω\OmegaΩ:模型复杂度的惩罚项;用于平滑最终的学习权重避免过拟合。正则化的目标函数倾向于选择一个更简单、可预测的函数(递归树模型);传统的梯度提升树没有用正则化项,RGF用到。
3、梯度树集成(Gradient Tree Boosting)
从对全部递归树的损失,利用贪心和近似,推导到一棵树的损失
为什么用(3)式作为目标函数而不是(2)式?
将(1)和(2)合并:
L(ϕ)=∑il(∑k=1Kfk(xi),yi)+∑kΩ(fk) where Ω(f)=γT+12λ∥w∥2(2) \begin{aligned} & \mathcal{L}(\phi)=\sum_i l\left(\sum_{k=1}^K f_k\left(\mathbf{x}_i\right), y_i\right)+\sum_k \Omega\left(f_k\right) \\ & \text { where } \Omega(f)=\gamma T+\frac{1}{2} \lambda\|w\|^2 \end{aligned}\tag{2} L(ϕ)=i∑l(k=1∑

XGBoost是一种梯度提升决策树算法,其预测值由多棵决策树的输出加权求和得出。文章详细介绍了XGBoost的预测模型表达式,以及带正则项的损失函数,包括二阶泰勒展开和二阶近似的损失函数。通过不断优化单棵树来减少整体损失,XGBoost使用了贪心策略,每次迭代只优化一棵树,并通过计算叶子节点的增益来决定分裂。正则化项用于控制模型复杂度,防止过拟合。
最低0.47元/天 解锁文章
988

被折叠的 条评论
为什么被折叠?



