集成学习之Boosting-xgboost

一、什么是Xgboost

二、Xgboost的基本原理

三、Xgboost的工作实例

四、算法的优缺点

***************************************************************************************************************

一、什么是Xgboost

        XGBoost 是“Extreme Gradient Boosting”的简称,针对传统GBDT算法做了很多细节改进,包括损失函数、正则化、切分点查找算法优化、稀疏感知算法、并行化算法设计等等。xgboost可以说是提升方法的完全加强版本。

二、Xgboost的基本原理

        1.复合树模型

            Xgboost所对应的模型是复合树模型。复合树模型是一组分类和回归树(classification and regression trees - CART)。

            (1)一个CART树来判断某人是否喜欢电游戏:

        我们把家庭中的成员分到了不同的叶子节点,同时每个叶子节点上都有一个分数。CART与决策树相比,细微差别在于CART的叶子节点仅包含判断分数。在CART中,相比较于分类结果,每个叶子节点的分数给我们以更多的解释。

             (2)实践中一棵树不够的,往往将若干棵树的预测结果组合起来,这就是复合树模型:

        以上就是复合树模型的例子,每个叶子节点对应不同的家庭成员以及每个叶子节点所具有的分数(打游戏的权重)。

         a.复合树模型的表达式:,其中K是CART树的数量,是函数                                                   空间F的一个函数,F是CART树所有可能集合。

          b.目标函数(Obj):

          我们可以发现随机森林和提升树有着一样的模型就是复合树模型对于随机森林是随机且有放回选择样本去同时训练若干棵树,对于提升树是根据预测值和真实的残差去构造CART树来拟合残差使结果一点点逼近真实情况。

        2.知道复合树的模型,我们如何训练这些树呢?

         假如我们有如下的目标函数:,t迭代次数。对于所有的监督学习的模型需要做的两件事:定义目标函数obj(一定包括损失函数和正则项),然后优化。

          具体方式是增量训练:

           注:在训练的过程中确定选择那棵树一定对目标函数优化有益的。

           3.优化目标函数Obj寻找最佳的CART树

              a.当我们用MSE(均方差)作为损失函数,此时的目标函数如下:

               从上面的式子可以看出MSE为损失函数,求解最优解很方便,这就是二次函数求导数。

                b.当我们的损失函数是其他形式,目标函数如下:        

        将上面的式子进行整理得到新的目标函数:

        我们确定的目标函数的一般形式就要求解(用叶子节点集合以及叶子节点得分表示)其一般形式如下:

        所以通过优化目标函数Obj来求,也就是求这棵树叶子节点的权重wi。

        4.目标函数中的正则项,即树的复杂度:

        为了求解叶子节点的权重wi,将带入到目标函数中:

        求解wi:

        具体例子,将树中叶子节点的值带入上面wi的式子中:

        5.那么如何学习树的结构呢(树的叶子节点的权重是在有了树的结构后求出来的)? 

        现在我们已经知道一旦树的结构固定下来以后,如何来计算叶子节点上的分数,以及计算这棵树的优劣。那么关于现在我们要来解决如何来学习这棵树的结构。比较简单粗暴的方法就是遍历所有可能的树结构,然后从中找到最好的那棵树。但是这也是不切实际的,因为需要遍历的情况实在是太多了。所以我们来寻求一种贪婪的解法,就是在树的每个层构建的过程中,来优化目标。那么这里假设在某一层的构建过程中,假设特征已经选定,我们先如何进行二叉划分呢,以及是不是需要进行划分?我们可以通过下面的式子来计算划分之后,在目标上所获得的收益(这个收益越越好,负数表示收益为负)

             那么针对排序后的特征,我们所要做的就是遍历各种划分,找到一个最好的划分点,                 如下图表示。

              对上面图的公式描述如下所示:

        以上就得到了树的结构和各个节点的分数。要记住一点是先有第5步构造树的结构再有第四步树的叶子节点的权重。这样函数就求出来了,可以和前轮函数相加得到第轮的函数。

四、算法的优缺点

        https://blog.csdn.net/u013363120/article/details/80195471


本文参考链接:

1.https://blog.csdn.net/sb19931201/article/details/52557382-xgboost入门与实战(原理篇)

2.https://zhuanlan.zhihu.com/p/27816315-XGBoost入门系列第一讲



        

     

你可能感兴趣的:(集成学习之Boosting-xgboost)