XGBoost是2014年3月陈天奇博士提出的,是基于CART树的一种boosting算法,XGBoost使用CART树有两点原因:对于分类问题,CART树的叶子结点对应的值是一个实际的分数,而非一个确定的类别,这有利于实现高效的优化算法;XGBoost有两个特点快和准,快一方面是并行的原因,另一方面是CART树的计算没有对数项。

XGBoost首先是一种基于决策树的集成模型,假设有K棵CART树,则集成的预测结果为:(fK代表第k颗树的输出结果)

XGBoost的目标优化函数定义为:

目标优化函数的第一项为训练损失,第二项为树模型的复杂度,也是优化函数的正则化项。Xgboost包含的CART树的确定包括两个部分:树的结构、叶子节点分数,如果树的结构确定,模型的正则化项也设为各个叶子节点值的平方和,就可以使用梯度下降或随机梯度下降来优化目标函数。

XGboost目标函数的优化采用的是加法训练,这是一种启发式算法,运用加法训练,首先优化第一棵树,之后再优化第二棵树,直至优化完k棵树。

第t步时,在现有的t-1棵树的基础上,添加使目标函数最小的第t颗CART树:

对于平方损失函数,目标优化函数可表示为:

对于一般的损失函数,可以对目标函数做二阶泰勒展开,得到目标优化函数:

其中:

等价于平方损失函数中的:

二阶泰勒展开形式:

移除常数项后,得到的近似目标优化函数为:

模型的正则化项定义为:

将正则化项代入目标优化函数得:

令:

目标函数等价于:
   

假设树的结构固定,优化每个叶子节点的权重,目标函数对wj求偏导等于0可得:

XGBoost的节点切分标准定义为:

该Gain实际上是单节点的obj减去切分后的两个子节点的obj,Gain为正,值得切分,Gain的左半部分大于g,值得切分。

Xgboost对样本的遍历转化成了在叶子节点上遍历,特征的选择和切分可以并行实现,优于传统的GBDT算法。

xgboost算法原理的更多相关文章

  1. XGBoost算法原理小结

    在两年半之前作过梯度提升树(GBDT)原理小结,但是对GBDT的算法库XGBoost没有单独拿出来分析.虽然XGBoost是GBDT的一种高效实现,但是里面也加入了很多独有的思路和方法,值得单独讲一讲 ...

  2. GBDT和XGBOOST算法原理

    GBDT 以多分类问题为例介绍GBDT的算法,针对多分类问题,每次迭代都需要生成K个树(K为分类的个数),记为\(F_{mk}(x)\),其中m为迭代次数,k为分类. 针对每个训练样本,使用的损失函数 ...

  3. 转载:XGBOOST算法梳理

    学习内容: CART树 算法原理 损失函数 分裂结点算法 正则化 对缺失值处理 优缺点 应用场景 sklearn参数 转自:https://zhuanlan.zhihu.com/p/58221959 ...

  4. 机器学习相关知识整理系列之三:Boosting算法原理,GBDT&XGBoost

    1. Boosting算法基本思路 提升方法思路:对于一个复杂的问题,将多个专家的判断进行适当的综合所得出的判断,要比任何一个专家单独判断好.每一步产生一个弱预测模型(如决策树),并加权累加到总模型中 ...

  5. GBDT算法原理深入解析

    GBDT算法原理深入解析 标签: 机器学习 集成学习 GBM GBDT XGBoost 梯度提升(Gradient boosting)是一种用于回归.分类和排序任务的机器学习技术,属于Boosting ...

  6. 1.XGBOOST算法推导

    最近因为实习的缘故,所以开始复习各种算法推导~~~就先拿这个xgboost练练手吧. (参考原作者ppt 链接:https://pan.baidu.com/s/1MN2eR-4BMY-jA5SIm6W ...

  7. 机器学习 之XGBoost算法

    目录 1.基本知识点简介 2.XGBoost提升树算法 2.1 XGBoost原理 2.2 XGBoost中损失函数的泰勒展开 2.3 XGBoost中正则化项的选定 2.4 最终的目标损失函数及其最 ...

  8. xgboost算法教程(两种使用方法)

    标签: xgboost 作者:炼己者 ------ 欢迎大家访问我的简书以及我的博客 本博客所有内容以学习.研究和分享为主,如需转载,请联系本人,标明作者和出处,并且是非商业用途,谢谢! ------ ...

  9. python平台下实现xgboost算法及输出的解释

    python平台下实现xgboost算法及输出的解释 1. 问题描述 ​ 近来, 在python环境下使用xgboost算法作若干的机器学习任务, 在这个过程中也使用了其内置的函数来可视化树的结果, ...

随机推荐

  1. ALLEGRO修改位号回注ORCAD原理图

    资料:ALLEGRO修改位号回注ORCAD原理图 https://wenku.baidu.com/view/54e221e114791711cd7917e2.html?re=view

  2. Scrapy教程

    Scrapy教程 原文地址https://doc.scrapy.org/en/latest/intro/tutorial.html 此教程我们假设你已经装好了Scrapy,如果没有请查看安装指南.. ...

  3. 最短路 uva12661 Funny Car Racing

    传送门:点击打开链接 题意:给你有向图,每条边呈周期性开放,即开放a时间,再关闭b时间.再开放a时间以此类推 假设时间不足以穿过这条路则不能走.你能够在节点等待时间,问从s走到t所须要的最小时间 细致 ...

  4. 在eclipse中添加android ADT

    对于程序开发的学者来说,eclipse并不陌生,它为我们提供了一个非常广阔的平台来开发程序.同样我们也可以用它来开发android程序. 但是在eclipse中并不能直接开发android程序,需要我 ...

  5. java中url正则regex匹配

    String regex = "^(?:https?://)?[\\w]{1,}(?:\\.?[\\w]{1,})+[\\w-_/?&=#%:]*$"; 解释说明: ^ : ...

  6. 15 nginx反向代理实现nginx+apache动静分离

    一:nginx反向代理实现nginx+apache动静分离-------------概念--------------------------- nginx反向代理服务器+负载均衡 用nginx做反向代 ...

  7. 平滑处理 - cvSmooth() 函数实现

    前言 平滑是图像处理中很重要的操作,其主要用途是降噪.Open CV 提供了 5 种不同的平滑方法:简单模糊,简单无缩放变换的模糊,中值模糊,高斯模糊和双边滤波,它们都通过函数 cvSmooth 实现 ...

  8. 多媒体开发之---h264 高度和宽度获取

    ( School of Computer Science & Technology, Soochow University,SuZhou 215006:) Abstract: H.264 is ...

  9. python 基础 1.5 python数据类型(二)--列表常用方法示例

    #/usr/bin/python #coding=utf-8 #@Time   :2017/10/12 23:30 #@Auther :liuzhenchuan #@File   :列表.py lis ...

  10. mybatis 运算符转义收录

    在ibatis配置文件写SQL语句的时候对于一些比如“<”,">","<>","&"," ' &q ...