首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >一文掌握XGBoost核心原理

一文掌握XGBoost核心原理

作者头像
用户2183996
修改于 2019-09-22 09:46:25
修改于 2019-09-22 09:46:25
1.2K0
举报
文章被收录于专栏:技术沉淀技术沉淀

开公众号啦,分享读书心得,欢迎一起交流成长。

XGBoost是经典的提升树学习框架,其配套论文和PPT分享也相当经典,本文简单梳理其思路,原文见XGBoost原理简介

整体思路

和一般提升模型一样,提升树模型也遵循相同的范式

  • 采用加法模型「forward stage-wise manner」
  • 每轮引入一weak learner「此处是一棵CART树」
  • 学习之前weak learners的不足「用梯度表征」

同时要考虑过拟合等问题「overfitting is everywhere」。

Tree Ensemble

遵循李航老师统计学习三要素公式

假设空间「模型」

Tree Ensemble基本思想是将多棵树的结果融合作为最终输出,示意图如下

paper-xgboost-tree-ensemble

不难看出,模型的假设空间是一系列CART树的集成,输出为

其模型参数为

颗树

目标函数「策略」

模型假设有了,另一个核心元素就是目标函数,和一般监督模型一样

目标函数分两部分「Bias-variance tradeoff is everywhere

  • Training Loss measures how well model fit on training data
  • Regularization measures complexity of model

具体到Tree Ensemble,其目标函数为

优化求解「算法」

模型参数的最终求解。参数

颗树,无法用SGD类似方法优化求解,因为不是

空间上的数值向量。一般采用Additive Training(Boosting)的思想求解。

Gradient Boosting

Tree Ensemble章节回答了what we are learning的问题,Gradient Boosting章节要回答how do we learn的问题。

Additive Traing范式

采用Additive Training(Boosting)的模式,即每一轮学习一颗新树

paper-xgboost-boosting

学习一颗新树

问题是每一轮

中,

如何学习?

Define objective(loss, regularization) and optimize it.

在第

轮,树的每一次生长,确定选那个特征分裂/分裂点取在哪里即可。其依据是使Objective最小,这里涉及两点,即

取何值Objective最小,以及Objective最小值表达式是什么。

定义Objective及其近似

Objective是

的一般函数,其最小值一般表达式并不完全确定「not general」。XGBoost对其进行二阶泰勒展开近似,推导变换后Objective可形式化为

个独立的二项式,表达式可统一「只需Objective一阶二阶可导即可」。

以下简单梳理推导核心步骤。

paper-xgboost-taylor-expansion

其中每次迭代

视为

泰勒近似展开,用一阶二阶导表示。对应到Square Loss后理解会更直观一些,一阶导正比于残差,二阶导为常数。

经过简化,现在Objective为

此时学习只依赖loss function一阶二阶导,理论理解和工程实现都简洁不少。

The learning of function only depend on the objective via

and

.

确定Objective最小值

为方便推导,需要一些符号表示上的辅助

  • 变换树的表达方式,见下文「如何表征一棵树」章节

表示落在第

个叶子节点所有样本集合

  • 详细符号含义见下文「符号约定」章节
  • 正则项」考虑叶子节点数以及叶子分的L2范数,见下图

paper-xgboost-regularization

不难推导如下式子

对上述四个式子几点解释

  • 式子1是经过泰勒展开近似的目标函数
  • 式子2考虑树新表达方式,公式加入正则项
  • 式子3将

个样本,按划分的叶子节点重新group,整合train loss和regularization

  • 式子4引入

简化表达

  • 式子4是

个独立的二项式

对二项式

,在

取极值

。不难得出

取值为

时,Obj有以下最小值

最小值中包含两项,第一项表示树拟合好坏,第二项表示树的复杂度。如此,即可根据gain选择分裂特征和分裂点了。

一点验证

当模型为GBDT,Loss选为Square Loss,不加正则项,其结论应该跟上述推导完全一致。Square Loss

求一阶导

即其一阶导是负残差。求二阶导,其值为常数

Square Loss情况下,取

集合的均值「残差均值」作为该节点预测值「optimal weight」,应该跟

保持一致。

不难看出

此处无正则

样本个数

残差之和

综上,其optimal weight即为残差均值,其实是XGBoost里

的特例。

如何表征一棵树

决策树可看做一系列If-Then规则的集合,但这样表示起来比较麻烦。为了方便公式的推导,XGBoost将其表示为一向量。

Think regression tree as a function that maps the attributes to the score. We define tree by a vector of scores in leafs, and a leaf index mapping function that maps an instance to a leaf.

即用长度为

「叶子节点数」的向量

和将样本实例映射到叶子索引的映射函数

表示。

paper-xgboost-tree

这样树的预测输出可直接用

表示,跟正则项

保持一致,公式表示推导上比较方便。

如何防止过拟合

XGBoost中有很多防止过拟合手段,比如

正则化

每一轮树的目标函数Objective中可以包含正则项,是防止过拟合经典手段

Shrinkage

每一轮树都不完全拟合残差或梯度,给后续学习器学习的空间

is called step-size or shrinkage, usually set around 0.1. This means we do not do full optimization in each step and reserve chance for future rounds, it helps prevent overfitting

Column Subsampling

随机森林里使用的经典方法,也叫做feature subsampling,每次只用一部分特征学习,也可防止过拟合。

Candidate Proposal

在选择连续特征分裂点时,不遍历所有可能值「exact greedy algorithm」,而是由数据分位点生成一系列候选「candidate proposal」,从中选择分裂点。这样不仅降低了计算量,同时还有一定防止过拟合效果。

特征重要性

树模型一个优点就是可以确定特征重要性,具体如何做呢?XGBoost里提供这几个衡量标准

  • 该特征作为分裂特征在所有树中出现的次数
  • 该特征作为分裂特征的增益「avg&total」
  • 该特征作为分裂特征的对样本的覆盖「avg&total」

详细可参考文档Python API Reference

当然还有更一般化确定特征重要性的方法,比如Permutation Test,林轩田老师在机器学习技法中随机森林章节中有介绍。其基本思想是某一维特征做permutation,依据模型performance的下降程度判定特征重要性。

符号约定

表示样本输入

表示模型在

上的输出

表示第

论学习的树

表示Training Loss

表示树

的复杂度,正则项

表示

对应的叶子节点索引

表示树叶子节点对应的得分向量

表示树叶子节点数

表示落到

节点上样本集

表示

集合一阶导之和

表示

集合二阶导之和

Ref

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2019.04.09 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
寻找网络中的hub节点
其实转录组走到现在我总觉得少了点什么东西,后来才想起来是cytospace寻找hub基因
生信菜鸟团
2023/09/27
1.8K0
寻找网络中的hub节点
Cytoscape插件1:Centiscape
Cytoscape的插件或多或少都有一些弊端,Centiscape是目前(文章时间2009)唯一一个可以一次计算多个中心值的插件(相对于network analysis等).它可以根据拓扑和生物学属性寻找最显著差异的基因。它只适合于无向网络,可以计算的参数有(average distance,diameter直径,degree度数,stress压力,betweenness中介性,radiality放射性,closeness紧密度(接近中心性),centroid value质心值,eccentricity离心值。插件的帮助文件有以上的定义,描述,生物学意义和计算的复杂性。每个参数的max,min,mean值都有提供。还可以可视化。右边的滑动块可以调整作者的值(默认是mean)。如果必要的话,可以把其中几个参数给deactive掉,也就是不勾选acitive复选框。用户可以选择其中几个参数more/equal而另外的选择less/equal,也可以假如AND-OR 参数。这些可以马上知道结果例如“哪些节点有高中介性值和高stress同时低离心值?”要注意的是,threshold也可以手动设置。一旦根据用户的选定设置,相应的子图就可以提取显示。两类图的输出可以被支持,根据centrality 画图,根据node画图,以上两种都支持其他工具所不支持的分析。 The plot by node 可以提供任何一个node 的所有计算的centiscape值,并以bar 图展示。Mean,max,min以不同颜色显示。图中的所有值都是标准化的,当用鼠标指向某一个时候显示的是真实值。 The plot by centrality 根据中心性画图。可以有五种方式画图 1 centrality vs centrality 2.centrality vs experimental data 3.experimental data vs experimental data 4.centrality vs itself 5.experimental vs itself 仔细看怎么用(plot by centrality可以发掘根据特殊的拓扑或实验特性聚成一类的群。并可以提取子网络进一步分析。拓扑特性和实验数据的结合可以用来对子网络的功能进行更多的有意义的预测或实验证实。 文章作者然后用一个例子来具体说明 整个网络的拓扑性质的总体会首先看到诸如min,max,mean等。例如,degree的平均值是13.5,平均距离是3显示这是一个高度连接的网络,也就是其中蛋白发生了强烈的相互作用。为了找到最高分蛋白的找出,我们可以应用“plot by centrality”。 画degree over degree,显示,分布是不均匀的,大多数nodes有低degree,很少的有高degree的。这和已知的生物网络的无尺度架构一致。下面这个是我的ucco的值,结果差不多,低degree的多余高degree的。
Y大宽
2019/02/25
2.7K0
Cytoscape插件1:Centiscape
基于networkx分析Louvain算法的社团网络划分
一个图G = (V, E)由一些点及点之间的连线(称为边)构成,V、E分别计G的点集合和边集合。在图的概念中,点的空间位置,边的区直长短都无关紧要,重要的是其中有几个点以及那些点之间有变相连。
用户7886150
2020/12/24
3.8K0
Cytoscape插件2:CytoHubba
CytoHubba:发现复杂网络的关键目标和子网络 网络对呈现包括PPI,基因调控,细胞路径和信号转导等多种类型生物数据非常有用。我们//+重要性,并且这也能帮助我们发现网络中的中心元素。 cytoHubba根据nodes在网络中的属性进行排名。它提供了11中拓扑分析方法,包括,Degrre度,Edge Percolated component边过滤成分,Maximum neighborhood component,Density of Maximum Neighborhood Component,Maximal Clique Centrality and six centralities(Botteleneck,EcCentricity,Closeness,Radiality,Betweenness, Stress)以上这些基于最短路径,MCC是新提出的方法,在酵母PPI网络中对关键蛋白的预测有更好的表现。比如依据给定的重要性概念对网络中心性对节点进行排名可以发现重要信息。 研究发现,一个蛋白的degree和他的基因的重要性直接相关,换句话说,具有高degree的蛋白更倾向于是关键蛋白。 已经有几个插件可以对网络数据进行节点排名,比如NetworkAnalyzer和CentiScaPe,他们可以计算有向或无向网络的拓扑参数。这些插件比其他常用的插件提供了更多的中心性测定指标,但是一些其他重要的特性和最近发展的方法他们并未包括进去。不同的方法聚焦不同的拓扑特点或者,相似的特征有着不同的计分策略。为了让生物工作者对网络特点的利用更加辩解,我们编写了cytoHubba插件以执行我们最新发展的算法和几个流行的算法。 加强的node 获取功能控制面板可以帮助研究者搜索和探索网络,并且可以提取感兴趣的子网络。 使用方法 CytoHubba界面提供了一个简单的交互界面有11个得分方法的分析界面。 首先,所有11中方法在每个node中的得分都会被赋予,当然前提是加载了PPI网络,并执行了“compute hubba result”功能。
Y大宽
2018/09/10
6.7K0
Cytoscape插件2:CytoHubba
如何从PPI网络进一步挖掘信息
从数据库中得到蛋白质的相互作用信息之后,我们可以构建蛋白质间的相互作用网络,但是这个网络是非常复杂的,节点和连线的个数很多,如果从整体上看,很难挖掘出任何有生物学价值的信息,所以我们需要借助一些算法来深入挖掘。
生信修炼手册
2020/05/08
1.4K0
如何从PPI网络进一步挖掘信息
半个【弗洛伊德算法】2-3 社交网络图中结点的“重要性”计算 (25分)
在社交网络中,个人或单位(结点)之间通过某些关系(边)联系起来。他们受到这些关系的影响,这种影响可以理解为网络中相互连接的结点之间蔓延的一种相互作用,可以增强也可以减弱。而结点根据其所处的位置不同,其在网络中体现的重要性也不尽相同。
韩旭051
2020/06/23
5890
半个【弗洛伊德算法】2-3 社交网络图中结点的“重要性”计算 (25分)
关于图算法 & 图分析的基础知识概览
网址:https://learning.oreilly.com/library/view/graph-algorithms-/9781492060116/
机器之心
2019/05/17
3.3K0
PTA 社交网络图中结点的“重要性”计算(30 分)
该文介绍了计算给定社交网络图中结点的重要性,以及基于紧密度中心性、介数中心性和接近中心性等指标的计算方法。首先介绍了相关概念和计算方法,然后给出了一些示例和输入输出格式。
Kindear
2017/12/29
1.2K0
PTA 社交网络图中结点的“重要性”计算(30 分)
PageRank、最小生成树:ML开发者应该了解的五种图算法
在互联世界中,用户不能被视为独立的实体。他们之间存在一定的关系,我们有时希望在构建机器学习模型时考虑到这些关系。
机器之心
2019/09/10
1.1K0
PageRank、最小生成树:ML开发者应该了解的五种图算法
社交网络图中结点的“重要性”计算
在社交网络中,个人或单位(结点)之间通过某些关系(边)联系起来。他们受到这些关系的影响,这种影响可以理解为网络中相互连接的结点之间蔓延的一种相互作用,可以增强也可以减弱。而结点根据其所处的位置不同,其在网络中体现的重要性也不尽相同。
叶茂林
2023/07/30
2520
关键点挖掘
当科学家共同写一篇论文,或者写一本书。通过网络连接,找出哪些科学家有更大的影响力。
DC童生
2019/05/15
1.1K0
小世界网络
在网络理论 的研究中,复杂网络是由数量巨大的节点 和节点之间错综复杂的关系共同构成的网络 结构。用数学的语言来说,就是一个有着足够复杂的拓扑 结构特征的图 。复杂网络具有简单网络,如晶格网络 、随机图 等结构所不具备的特性,而这些特性往往出现在真实世界的网络结构中。复杂网络的研究是现今科学研究中的一个热点,与现实中各类高复杂性系统,如的互联网 、神经网络 和社会网络 的研究有密切关系。
Defu Li
2019/03/12
3.7K0
小世界网络
关于图计算&图学习的基础知识概览:前置知识点学习(Paddle Graph L)系列【一】
关于图计算&图学习的基础知识概览:前置知识点学习(Paddle Graph Learning (PGL)) 欢迎fork本项目原始链接:关于图计算&图学习的基础知识概览:前置知识点学习(Paddle
汀丶人工智能
2022/11/18
9690
一文学会网络分析——Co-occurrence网络图在R中的实现
编者按:上个月菌群月坛,在军科院听取王军组陈亮博士分享网络分析的经验,不仅使我对网络的背景知识有了更全面的认识,更使我手上一个关于菌根的课题有极大的启示。这么好的知识,当然希望和大家分享,故约稿陈博士在“宏基因组”发布一下他的经验,感谢陈博士的整理和分享。下面是正文:
生信宝典
2019/05/09
10K32
一文学会网络分析——Co-occurrence网络图在R中的实现
SNA中:中心度及中心势诠释(不完整代码)
 SNA社会关系网络分析中,关键的就是通过一些指标的衡量来评价网络结构稳定性、集中趋势等。主要有中心度以及中心势两大类指标。 以下的代码都是igraph包中的。 ———————————————————————————————————————————————— 中心度指标的对比 指标名称 概念 比较 实际应用点度中心度 在某个点上,有多少条线 强调某点单独的价值 ★作为基本点的描述接近中心度 该点与网络中其他点距离之和的倒数,越大说明越在中心,越能够很快到达其他点 强调点在网络的价值,越大,越在中心 ★★
学到老
2018/03/16
2.6K0
cytoscape蛋白互作网络可视化及插件使用
上期推文基于STRING网站,使用差异基因进行了蛋白互作网络分析——STRING网站:蛋白互作分析的高效利器
生信菜鸟团
2025/06/19
3610
cytoscape蛋白互作网络可视化及插件使用
【实战帖】使用Python分析社交网络数据
目录 数据抓取 一、直接抓取数据 二、模拟浏览器抓取数据 三、基于API接口抓取数据 数据预处理 可视化 数据分析 扩散深度 扩散速度 空间分布 节点属性 网络属性 传播属性 在线社交网站为人们提供了一个构建社会关系网络和互动的平台。每一个人和组织都可以通过社交网站互动、获取信息并发出自己的声音,因而吸引了众多的使用者。作为一个复杂的社会系统,在线社交网站真实地记录了社会网络的增长以及人类传播行为演化。通过抓取并分析在线社交网站的数据,研究者可以迅速地把握人类社交网络行为背后所隐藏的规律、机制乃至一般
机器学习AI算法工程
2018/03/13
8.1K0
【实战帖】使用Python分析社交网络数据
R语言︱SNA-社会关系网络—igraph包(中心度、中心势)(二)
SNA社会关系网络分析中,关键的就是通过一些指标的衡量来评价网络结构稳定性、集中趋势等。主要有中心度以及中心势两大类指标。
悟乙己
2019/05/27
8.3K0
C++ 图论之Floyd算法求解次最短路径的感悟,一切都是脱壳后找最值而已
学霸刷完 200 道题,会对题目分类,并总结出解决类型问题的通用模板,我不喜欢模板这个名词,感觉到投机的意味,或许用方法或通用表达式更高级一点。而事实上模板一词更准确。
一枚大果壳
2023/12/10
2840
C++ 图论之Floyd算法求解次最短路径的感悟,一切都是脱壳后找最值而已
聚类方法 学习总结
1)聚类的核心概念是相似度(similarity)或距离(distance),有多种相似度或距离的定义。因为相似度直接影响聚类的结果,所以其选择是聚类的根本问题。
全栈程序员站长
2022/09/27
1.2K0
推荐阅读
相关推荐
寻找网络中的hub节点
更多 >
LV.1
澳门大学在读博士
作者相关精选
交个朋友
加入腾讯云官网粉丝站
蹲全网底价单品 享第一手活动信息
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档