xgboost原理介绍与代码实现

1.引言

自从2015年以来,各大算法比赛网站上频繁出现了一个神器——xgboost,xgboost是陈天奇提出来的一种梯度提升树的方法,据作者统计,在2015年kaggle上的29个比赛中,有17个冠军就是用了xgboost模型。因此,本文将重点介绍一下这个神器的原理。

2. xgboost原理

2.1 正则化目标函数

给定一个数据集,假设样本量为 n n n,特征数为 m m m D = { ( x i , y i ) } ( ∣ D ∣ = n , x i ∈ R m , y i ∈ R ) \mathcal{D}=\left\{\left(\mathbf{x}_{i}, y_{i}\right)\right\}\left(|\mathcal{D}|=n, \mathbf{x}_{i} \in \mathbb{R}^{m}, y_{i} \in \mathbb{R}\right) D={ (xi,yi)}(D=n,xiRm,yiR),对于每一个样本,xgboost使用 K K K棵树的预测值加和作为模型最后的预测值:
y ^ i = ϕ ( x i ) = ∑ k = 1 K f k ( x i ) , f k ∈ F \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} y^i=ϕ(xi)=k=1Kfk(xi),fkF
其中, F = { f ( x ) = w q ( x ) } ( q : R m → T , w ∈ R T ) \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:RmT,wRT) q q q表示树的结构或者决策规则,即将一个样本映射到对应的叶节点序号,说白了就是判断一个样本属于哪个叶节点。 T T T表示叶节点的数量, w w w表示一个 T T T维向量,即整棵决策树所有叶节点对应的值,对于第 i i i个叶节点的预测值,可以表示为 w i w_i wi

xgboost使用正则化的目标函数如下:
L ( ϕ ) = ∑ i l ( y ^ i , y i ) + ∑ k Ω ( f k ) \mathcal{L}(\phi)=\sum_{i} l\left(\hat{y}_{i}, y_{i}\right)+\sum_{k} \Omega\left(f_{k}\right) L(ϕ)=il(y^i,yi)+kΩ(fk)
其中, Ω ( f ) = γ T + 1 2 λ ∥ w ∥ 2 \Omega(f)=\gamma T+\frac{1}{2} \lambda\|w\|^{2} Ω(f)=γT+21λw2,这里 l l l表示一个可微凸损失函数,用于计算预测值与真实值直接的差异, Ω \Omega Ω表示模型复杂度的惩罚,这里对每棵树的惩罚项主要包含两部分,一部分是树的结点树,另一部分是树每个叶节点预测值的L2值,这里主要是希望每棵树可以相对均匀地预测目标值,防止出现过拟合的情况。当惩罚项的参数为0时,则目标函数就变为传统梯度提升树的目标函数。
在这里插入图片描述

2.2 梯度提升树

如果直接对上面的目标函数进行最小化求解,很难对参数进行估计。由于xgboost是对每棵树的预测结果进行加总,因此,对于第 t t t次迭代时第 i i i个样本的预测值,可以记为 y ^ i ( t ) \hat{y}_{i}^{(t)} y^i(t),此时,对于第 i i i棵树的参数求解,只需要最小化如下的目标函数:
L ( t ) = ∑ i = 1 n l ( y i , y ^ i ( t − 1 ) + f t ( x i ) ) + Ω ( f t ) \mathcal{L}^{(t)}=\sum_{i=1}^{n} l\left(y_{i}, \hat{y}_{i}^{(t-1)}+f_{t}\left(\mathbf{x}_{i}\right)\right)+\Omega\left(f_{t}\right) L(t)=i=1nl(yi,y^i(t1)+f

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值