XGBoost 算法原理

一、简介

XGBoost(eXtreme Gradient Boosting)是GBDT(Gradient Boosting Decision Tree)的一种实现。GBDT又是提升树(Boosting Tree)的一种优化模型。Boosting则是集成学习的一种算法。
enssemble learning

1.1 梯度提升树(Gradient Boosting Decison Tree, GBDT)

之前提到的 Bagging 的思想比较简单,即每一次从原始数据中根据均匀概率分布有放回的抽取和原始数据大小相同的样本集合,样本点可能出现重复,然后对每一次产生的训练集构造一个分类器,再对分类器进行组合。

Boosting的每一次抽样的样本分布都是不一样的。每一次迭代,都根据上一次迭代的结果,增加被错误分类的样本的权重,使得模型能在之后的迭代中更加注意到难以分类的样本,这是一个不断学习的过程,也是一个不断提升的过程,这也就是Boosting思想的本质所在。迭代之后,将每次迭代的基分类器进行集成。那么如何进行样本权重的调整和分类器的集成是我们需要考虑的关键问题。

GB(Gradient Boosting) 是一种 Boosting 算法,因此它也试图利用一群弱学习器来创建一个强学习器。该算法与 AdaBoost算法 算法相似,但在某些方面有所不同。在这种方法中,我们试图将增强问题形象化为一个优化问题。我们采用一个损失函数,并试图优化它。

提升树是一种以分类树或者回归树作为基本分类器的算法。提升树一般采用加法模型,即基函数的线性组合与前向分步算法。对分类问题决策树是二叉分类树,对回归问题决策树是二叉回归树。对于提升树,当损失函数是平方误差损失函数和指数损失函数时,每一步优化比较简单,但是对于一般损失函数,往往每一步优化没那么容易。通常优化损失函数,是希望损失函数能够不断的减小,而且是损失函数能够尽可能快的减小。而梯度提升算法针对这问题 ,让损失函数沿着梯度方向最速下降的方法。

GBDT是以决策树(CART)为基学习器的GB算法。在GBDT的迭代中,假设我们前一轮迭代得到的强学习器是 f t − 1 ( x ) f_{t-1}(x) ft1(x), 损失函数是 L ( y , f t − 1 ( x ) ) L(y,f_{t-1}(x)) L(y,ft1(x)) , 我们本轮迭代的目标是找到一个CART回归树模型的弱学习器 h t ( x ) h_t(x) ht(x),让本轮的损失函数 L ( y , f t − 1 ( x ) + h t ( x ) ) L(y,f_{t-1}(x)+h_t(x)) L(y,ft1(x)+ht(x)) 最小(这里也可以看出来,其实GBDT就是一个学习残差的过程)。也就是说,本轮迭代找到决策树,要让样本的损失尽量变得更小。

GBDT的核心就在于:每一棵树学的是之前所有树结论和的残差,这个残差就是一个加预测值后能得真实值的累加量。比如A的真实年龄是18岁,但第一棵树的预测年龄是12岁,差了6岁,即残差为6岁。那么在第二棵树里我们把A的年龄设为6岁去学习,如果第二棵树真的能把A分到6岁的叶子节点,那累加两棵树的结论就是A的真实年龄;如果第二棵树的结论是5岁,则A仍然存在1岁的残差,第三棵树里A的年龄就变成1岁,继续学习。

GBDT的目标函数:
L ( y , f t − 1 ( x ) + h t ( x ) ) L(y,f_{t-1}(x)+h_t(x)) L(y,ft1(x)+ht(x))

GBDT用于分类算法的损失函数:

  • 指数损失函数
  • 对数损失函数

GBDT用于回归算法的损失函数:

  • 均方损失函数
  • 绝对值损失函数
  • Huber损失函数
  • 分位数损失函数

GBDT的算法描述如下:
(1)初始化弱学习器:
f 0 ( x ) = a r g   m i n c ∑ i = 1 m L ( y i , c ) f_0(x)=arg\ min_c \sum_{i=1}^m L(y_i,c) f0(x)=arg minci=1mL(yi,c)

(2)对t=1,2,…,T有:
  (a)首先对样本i=1,2,…,m,计算损失函数在当前模型 f t − 1 ( x ) f_{t−1}(x) ft1(x)的负梯度值,作为残差
r t i = − [ ∂ L ( y i , f ( x i ) ) ) ∂ f ( x i ) ] f ( x ) = f t − 1      ( x ) r_{ti} = -\bigg[\frac{\partial L(y_i, f(x_i)))}{\partial f(x_i)}\bigg]_{f(x) = f_{t-1}\;\; (x)} rti=[f(xi)L(yi,f(xi)))]f(x)=ft1(x)
  (b)将上一步得到的残差作为样本新的真实值,利用新的训练样本( x i x_i xi, r t i r_{ti} rti)(i=1,2,…,m), 拟合一颗CART回归树,得到第t颗回归树,其对应的叶子节点区域为对应的叶节点区域为 R t j , j = 1 , 2 , . . . , J R_{tj}, j =1,2,..., J Rtj,j=1,2,...,J
   (c)最小化损失函数,从而在叶结点区域 j = 1 , 2 , . . . , J j=1,2,...,J j=1,2,...,J上计算最佳拟合值:
c t j = a r g    m i n ⏟ c ∑ x i ∈ R t j L ( y i , f t − 1 ( x i ) + c ) c_{tj} = \underbrace{arg\; min}_{c}\sum\limits_{x_i \in R_{tj}} L(y_i,f_{t-1}(x_i) +c) ctj=c argminxiRtjL(yi,ft1(x

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值