XGBoost算法浅述

极度梯度提升树XGBoost(xgb, eXtreme Gradient Boosting)是boosting算法的一种实现方式,针对分类或回归问题都有非常好的效果,是横扫kaggle的王牌算法,其学习应用速度及运行速度都极其快速。

提升树:通过多轮迭代,每轮迭代产生一个弱分类器,每个分类器在上一轮分类器的残差基础上进行训练。

boosting:集成学习算法,将一系列基本分类器按照不同的权重组合成为一个强分类器。


引入

从图中可以看出来,样本进入到XGBoost模型中的每一棵决策树中,在每一棵中针对每个类别有一个预测值,最后将同类所有的预测值相加获得最后该样本各个类别的预测结果。 

  1. XGboost的基本组成元素是:决策树(多个)。
  2. 提升树,则组成XGBoost的决策树之间有先后顺序,后一棵决策树的生成会考虑前一棵决策树的预测结果,即将前一棵决策树的偏差考虑在内。
  3. 样本进入每棵决策树。

基本原理

xgb的基本思想就是采用多个基学习器(决策树,每棵决策树的目标函数值最小的模型),下一个学习器学习的是前面基学习器的结果和实际值的差值(偏差)。那么,对于一完整的xgb模型,在学习第i个样本x_i时的学习过程可以理解为:

···

其中,是第t次迭代之后样本i的预测结果,f_t(x_i)是第t棵树的模型(学习与真是值的差值)的预测结果,是第t-1棵树的预测结果。

基本思路就是不断生成新的决策树(基学习器),每棵树都是基于上一颗树和目标值的差值来进行学习,最终模型结果的输出为。

目标函数

目标函数主要是通过衡量训练样本的预测结果与真实标记差距指导模型学习的函数,一般会在损失函数(也有定义损失函数为单个样本的偏差,代价函数为多个样本的偏差,此处损失函数表示参与训练的样本的偏差)的基础上添加一个正则项控制模型复杂程度。

(1)目标函数定义

损失函数,其中表示预测值,y_i表示真是值,n表示为样本数量,则

正则项表示为,其中t表示树的数量。

则最终目标函数为:

(2)目标函数化简(泰勒展开——求目标函数最小值)

泰勒展开

,其中g_i为损失函数的一阶导数,h_i为损失函数的二阶导数,此处导数均是对求导。

obj_{xgb}^t=\sum_{i=1}^{n}[l(y_i,y_i^{t-1})+g_if_t(x_i)+\frac{1}{2}h_if_t^2(x_i)]+\sum_{k=1}^{t}\Omega f_k=\sum_{i=1}^{n}[l(y_i,y_i^{t-1})+g_if_t(x_i)+\frac{1}{2}h_if_t^2(x_i)]+\sum_{k=1}^{t-1}\Omega f_k+\Omega f_t

其中,和为常数项(在求解第t棵树时,的值为已知)

忽略常数项

因为常数对函数的优化不会产生影响,去掉全部的常数项:

基于决策树的模型

(1)定义决策树

w为长度为T的一维向量,代表树q的各个叶子结点的权重;

q表示一棵树的结构(将输入的x映射到各个叶子结点,对应T)

(2)定义复杂度

T表示叶子结点数目,叶子结点越少模型越简单。

表示叶子结点权重向量的L_2范式。

将分解到叶子结点的计算:

定义(叶子结点j所包含样本的一阶偏导数(前t-1步)累加之和,常量),(叶子结点j所包含样本的二阶偏导数(前t-1步)累加之和,常量),则

你可能感兴趣的:(机器学习,人工智能,boosting,决策树,深度学习)