机器学习-XGBoost

        XGBoost 是一种 Boosting 方法,而 Boosting 方法又是集成学习的一个分支,先简单介绍下Boosting的概念。

        Boosting 是一个机器学习技术,可以用于回归和分类问题,它每一步产生一个弱预测模型(准确了率不高),并加权累积到总模型中。采用集成学习方法,其主要思想是将弱分类器组装成一个强分类器。在 PAC(概率近似正确)学习框架下,则一定可以将弱分类器组装成一个强分类器。

机器学习-XGBoost

                        图一    Boosting方法示意图

  1. GBDT,Gradient Boosting Decision Trees)

        如果每一步的弱预测模型生成都是移库函数损失的梯度方向,则称之为梯度提升(Gradient Boosting)。梯度提升算法首先给定一个目标损失函数,它的定义域是所有可行的弱函数集合(基函数)。提升算法通过迭代选择一个负梯度方向上的基函数来逐渐逼近局部极小值。对分类问题,决策树是二叉分类树,对回归问题决策树是二叉回归树。提升树模型可以表示为决策树的加法模型:

                          机器学习-XGBoost机器学习-XGBoost

其中 机器学习-XGBoost机器学习-XGBoost 为包含所有回归树的函数空间。因此,我们可以这样认为:回归树是一个将实例的特征向量映射为一个分值的函数。通过经验风险极小化确定下一刻决策树参数机器学习-XGBoost

                                          机器学习-XGBoost

梯度提升使用损失函数的负梯度作为回归问题提升树算法中的残差近似值,拟合一个回归树:

                                                            机器学习-XGBoost

提升树算法步骤:

机器学习-XGBoost

      2.  XGBoost 原理详解

       XGBoost 是对GBDT的改进,传统 GBDT 算法的目标函数只有损失函数这一项,而 XGBoost 在此基础上进行了改进,增加了正则项以防止模型过度复杂:

                              机器学习-XGBoost

如果对上式子对机器学习-XGBoost进行二阶泰勒展开:

                                 机器学习-XGBoost

因此可以得出有:

                       机器学习-XGBoost

    机器学习-XGBoost                     

而上式中的正则项机器学习-XGBoost的形式为:

                     机器学习-XGBoost

   机器学习-XGBoost

因此机器学习-XGBoost可以表示为:

             机器学习-XGBoost

如果对叶子节点做如下定义:

           机器学习-XGBoost  ,  机器学习-XGBoost

则有:

      机器学习-XGBoost

对于一元二次函数,有如下两条结论:

         机器学习-XGBoost

因此对于目标函数进行最小化,当机器学习-XGBoost时我们得到:

            机器学习-XGBoost

刚才所有的过程如下:

机器学习-XGBoost

于一个叶子节点,如何进行分裂我们需要遵循的原则是分裂后的两颗子树的最优目标函数值之和要小于未分裂之前的父节点,为了叙述方便我们定义如下的目标函数值的 “增益” :

 机器学习-XGBoost

机器学习-XGBoost

关于XGBoost的代码实例:

http://xgboost.readthedocs.io/en/latest/build.html

https://github.com/dmlc/xgboost/tree/master/demo/guide-python