美文网首页数据算法
机器学习之XGBoost(简单理解)

机器学习之XGBoost(简单理解)

作者: swensun | 来源:发表于2018-03-07 00:56 被阅读758次

这篇文章打算介绍一下boosting 和xgboost,这两天也看了好多文章,也感觉了解的不深,算是做个记录。

Boost算法

先简单提一下Bagging, 原理是从现有数据中有放回的抽取若干个样本构建分类器,重复若干次建立若干个分类器进行投票。
而Boost(提升)是指每一步都产生一个弱预测模型,然后加权累加到总模型中。每一步弱预测模型生成的依据都是损失函数的负梯度方向,若干步以后就可以达到逼近损失函数局部的最小值。

首先Boost是一个加法模型,有若干个基函数及其权重乘积之和的累加。

image.png
其中b是基函数,beta是基函数的系数,这就是最终分类器的样子。目标就是想办法使损失函数的期望最小值。
image.png
一步对m个分类起优化太难,因此有一个稍微折中的办法,因为是加法模型,每一步只对其中一个基函数及其系数进行求解,逐步逼近损失函数的最小值。
image.png

要使损失函数最小,那么新加的这一项刚好等于损失函数的负梯度。这样一步一步就使得损失函数下降最快。


image.png

这里的lambda可以和beta合并表示步长。对于这个基函数而言,其实就是关于x和这个函数梯度的一个拟合,然后步长的选择可以根据线性搜索,即寻找在这个梯度上下降最小值的那个步长,尽快逼近损失函数的最小值。
梯度提升完

GBDT

首先既然是树,上一篇介绍过,基函数是决策树,而损失函数则是根据具体问题具体分析,不过总体方法都是一样,梯度下降。
比如到第m步, 计算残差。


image.png

有了残差,再用(xi, rim)去拟合第m个基函数。假设这颗树把输入空间划分成j个空间R1m, R2m, ...., Rjm。假设在每个空间的输出为bjm。这样,第m棵树可以表示如下:


image.png

下一步,对树的每个区域分别用线性搜索的方法寻找最佳步长,然后与上面的区域预测值合并,最后可以得到第m步的目标函数。


image.png

对于GBDT容易出现过拟合,所以有必要增加一点正则项,比如叶子节点数目或叶子节点预测值的平方和,限制模型复杂度的过度提升。

XGBoost

之前用的梯度下降只考虑了一阶信息,根据泰勒展开,把二阶信息用上:


image.png

其中fm为参数的函数是正则项。可以表示如下:


image.png

对于决策树而言,最重要的一共有多少个节点以及节点的权值。所以决策树可以表示为:


image.png

各种公式,最后得到

image.png

可以得到的结果是:把新一步函数的损失函数变成了只与上一步相关的一个新的损失函数。这样可以遍历数据中所有的分割点,寻找新的损失函数下降最多的分割点,重复上述操作。

相比于梯度下降提升,XGBoost在划分新的树的时候还用到了二阶信息,因此能够更快的收敛;由于用c/c++写的,速度也快。在寻找最加分割点的时候,还可以引入并行计算,因此速度进一步提高。

参考文章:
XGBoost 与 Boosted Tree:多看几遍

相关文章

  • 机器学习之XGBoost(简单理解)

    这篇文章打算介绍一下boosting 和xgboost,这两天也看了好多文章,也感觉了解的不深,算是做个记录。 B...

  • 机器学习之-XGBoost

    之前一直对XGBoost走马观花,觉得就是那么滴,没有详细的理解其中的细节,这次重新看了下,原来里面还是有很多东西的。

  • 机器学习之XGBoost篇

    更多机器学习视频教程:http://www.admin444.com/P-c8129a48 一.xgboost的优...

  • 集成学习

    参考:一文搞定GBDT、Xgboost和LightGBM的面试机器学习算法之LightGBMLightGBM两种使...

  • GBDT进化->XGBoost & LightGBM简记

    很全面的阐释XGBoost: 集成学习之Boosting —— XGBoost 大体来看,XGBoost 在原理方...

  • 机器学习之GBDT(简单理解)

    之前简单介绍过决策树,这篇文章简单介绍一下GBDT(Gradient Boosting Decision Tree...

  • 机器学习之SVM(简单理解)

    应该对现有流行并将继续流行下去的分类模型有深刻的了解。随机森林和支持向量机(svm)上篇文章简单介绍了随机森林,这...

  • xgboost的原理没你想像的那么难

    xgboost 已然火爆机器学习圈,相信不少朋友都使用过。要想彻底掌握xgboost,就必须搞懂其内部的模型原理。...

  • 称霸kaggle的XGBoost究竟是啥?

    一、前言:kaggle神器XGBoost 相信入了机器学习这扇门的小伙伴们一定听过XGBoost这个名字,这个看起...

  • XGBoost(三):Python语言实现

    原文链接:XGBoost(三):Python语言实现 微信公众号:机器学习养成记 上篇文章介绍了XGBoost在R...

网友评论

    本文标题:机器学习之XGBoost(简单理解)

    本文链接:https://www.haomeiwen.com/subject/ynedfftx.html