【机器学习】XgBoost 原理详解 数学推导
XgBoost (Xtreme Gradient Boosting 极限 梯度 增强)
1.基本描述:
假设Xg-模型有 t 颗决策树数,t棵树有序串联构成整个模型,各决策树的叶子节点数为 k1,k2,...,kt,
对于决策树 Ti, 叶子节点数为 ki, 设这颗数每个叶子节点上的权值为:wj_i (i∈[0,t]为决策树下标,j∈[0,ki]为叶子节点下标)
该模型在 对一个样本进行 分类/回归 时,这个样本数据点 在树的根节点输入, 在树的某一叶子节点输出
2.模型构造:
=》Xg-模型有 t 颗决策树数,假设该模型由0颗数 逐一新增至 t颗树的 数学模型变化过程
当 t = 0 时: y_0 = F0(x) = f0(x) = 0
t = 1 时: y_1 = F1(x) = F0(x) + f1(x) = f1(x)
t = 2 时: y_2 = F2(x) = F1(x) + f2(x) = f1(x) + f2(x)
... ...
t = t 时: y_t = Ft(x) = Ft-1(x) + ft(x)
其中当t = i时,即Xg-模型 为 i颗决策树构成时:
fi(x) 为第i颗 (最后一棵) 决策树的 数学模型 (函数)
y_i 为样本数据x 经过整个xg模型的分类输出值
Fi(x) 为整个Xgboost的 数学模型 (函数)在 t-1 颗决策树构成的 数学模型为 Ft_1(x) 的Xg-模型上,(末尾)新增一颗 数学模型为ft(x)的决策树
新构成的Xg-模型的 数学模型为:y = Ft(x) = Ft-1(x) + ft(x) 【2.2】
3.结构分析:
第t棵决策树,各个叶子节点的权值为 w1,w2,...,wk,树的数学模型为:ft(x) = wq(x)
wq 表示, 当这棵决策树的输入为x时, 样本被分类到下标为q(q∈[1,k])的叶子节点上对应的 权值 (向量)
若样本数据维数为d,对于样本 X(x_1, x_2, ..., x_d), 权值 wq(wq_1,wq_2,...,wq_d)有
ft(x) = wq(x) , w ∈ Rt , q: Rd → {1,2,...,T} 【2.3】
T: 树的数量, Rt: 维度为t的向量空间, Rd: 维度为d的向量空间, q:表示1到T之间的树下标t下的解叶子结点的下标
*向量空间Rn: 设有非空集合V(元素均为n维向量)、域P(向量各维度的值类型,实数->实数域,复数->复数域),向量的加法&数乘运算满足8条件
= (wq_1,wq_2,...,wq_d)t(x_1, x_2, ..., x_d)
= (wq_1*x_1, wq_2*x_2, ..., wq_d*x_d)t
· 定义第t颗构造树的 惩罚函数 Ω(ft) = γL + (1/2)λ*∑L_i{ wi² } 【2.4】
其中,γ:惩罚(系数)力度,L:该树的叶子结点数量,wi:这棵树各个叶子结点的权重向量模的平方
Xg模型 - 优化目标:在加入第t颗构造树时,所选取一个 ft 使得整体的损失(目标)函数 尽量大地降低· 定义整个Xg模型的目标(损失)函数 Obj(t) = ∑n_i{ lost(yi, Ft(xi)) } + ∑t_j{ Ω(fj) } 【2.5】
其中,n为样本量,i为样本下标,xi为第i个样本,yi为第i个样本的真实类别
,t 为Xg模型构造树的个数,j为树的下标,fj为第j棵树的 惩罚函数
,lost(yi, Ft(xi))表示 当前Xg模型的预测函数Ft(x) 对于第i个样本xi的预测值,与其真实值yi 所求得的 损失值
将【2.2】代入【2.5】=》
Obj(t) = ∑n_i{ lost(yi, Ft-1(xi) + ft(xi) } + C + Ω(ft) 【2.6】
其中C(Constant)为常数 (前t-1颗构造树的惩罚项值的和 & ∑中导出的定值项)
设lost(a,b) = (a-b)²,则=》
= ∑n_i{ [yi - (Ft-1(xi) + ft(xi))]² } + C + Ω(ft) 平方项添-号,并展开
= ∑n_i{ [(Ft-1(xi) - yi) + ft(xi)]² } + C + Ω(ft)
= ∑n_i{ (Ft-1(xi) - yi)² + ft(xi)² + 2*(yi - Ft-1(xi))*ft(xi) } + C + Ω(ft) 定值项 Ft-1(xi) - yi,导出到C
= ∑n_i{ ft(xi)² + 2*(Ft-1(xi) - yi)*ft(xi) } + C + Ω(ft) 【2.7】残差项: yi - Ft-1(xi)
用·泰勒展开式·来近似原目标函数:
·泰勒展开式:若f(x)二次可导,则 f(x + △x) ≈ f(x) + (1/1!)f'(x)△x + (1/2!)f''(x)△x² 【2.8】
因为 lost(yi, Ft-1(xi) + ft(xi)) = [yi - (Ft-1(xi) + ft(xi))]² 其中 lost(a,b) = (a-b)²
= [(Ft-1(xi) - yi) + ft(xi)]²
令 x=(Ft-1(xi) - yi), △x=ft(xi), 设函数 Lost(x) = x² 【2.9】
= Lost(x + △x)
≈ Lost(x) + Lost'(x)△x + (1/2)Lost''(x)△x² 泰勒展开 【2.10】
其中,Lost(x) = (Ft-1(xi) - yi)²
Lost'(x) = 2(Ft-1(xi) - yi)*Ft-1'x = gi
Lost''(x)= 2*[Ft-1'x² + Ft-1''x*(Ft-1(xi) - yi)] = hi
将【2.8】和 gi、hi全部代入【2.10】得:
lost(yi, Ft-1(xi) + ft(xi)) ≈ (Ft-1(xi) - yi)² + gi*ft(xi) + (1/2)hi*ft²(xi) 【2.11】
= (yi - Ft-1(xi))² + gi*ft(xi) + (1/2)hi*ft²(xi)
= lost(yi, Ft-1(xi)) + gi*ft(xi) + (1/2)hi*ft²(xi) 【2.12】
将【2.12】代入【2.6】得:
Obj(t) = ∑n_i{ lost(yi, Ft-1(xi) + ft(xi) } + Ω(ft) + C
≈ ∑n_i{ lost(yi, Ft-1(xi)) + gi*ft(xi) + (1/2)hi*ft²(xi) } + Ω(ft) + C
= ∑n_i{ gi*ft(xi) + (1/2)hi*ft²(xi) } + Ω(ft) + C 定值项 lost(yi, Ft-1(xi)),导出到C
= ∑n_i{ gi*ft(xi) + (1/2)hi*ft²(xi) } + γL + (1/2)λ*∑L_j{ wj² } + C 将【2.4】代入
= ∑n_i{ gi*wq(xi) + (1/2)hi*wq²(xi) } + γL + (1/2)λ*∑L_j{ wj² } + C 将【2.3】代入
为了化简(整)表达式,需要将 样本遍历:n_i 和 当前构造树的叶子结点的遍历:L_j 统一为 【叶子结点的遍历 L_j】
分析:对于新添构造树,有 n 个样本输入,每一个样本点终必会分类到该树 L 个叶子节点的某一个 节点上, 定义 I 为 i (i=1,2,...,n,表示n个样本的下标) 的集合
设n个样本经过新添构造树分类后, 其L个叶子结点上样本子集分别为 I1,I2,...IL, 则有集合关系 I1+I2+...+Ij+...+I L = N{1,2,...,n},
j 为L个叶子结点下标, Ij 表示第 j 个叶子结点上 分布的 子样本集的 下标集
= ∑L_j{ ∑Ij_i{ giwj } + (1/2)∑Ij_i{ hiwj² } + (1/2)λwj² }} + γL + C
= ∑L_j{ ∑Ij_i{ giwj } + (1/2)∑Ij_i{ hiwj² } + (1/2)λwj² }} + γL + C
= ∑L_j{ wj*∑Ij_i{ gi } + (1/2)(wj²)*∑Ij_i{ hi + λ }} + γL + C 【2.13】
令 ∑Ij_i{ gi } = Gj, ∑Ij_i{ hi + λ } = Hj 代入【2.13】则=》(注意在 ∑L_j{∑Ij_i{ * }} 中若将∑Ij_i{ * }视为整体,内部下标 i被消化, 外部下标 j还存在)
= ∑L_j{ wj*Gj + (1/2)(wj²)*(Hj + λ)} + γL + C 【2.14】由于求解目标为 当新添树的各个叶子结点上的 w 为何值时 (wj=?), 能够使得 整体的 损失函数值 (Obj(t)min) 取得最小, 则
由于目标 w 存在于 新添树的数学模型 ft 中, 令 J(ft) = Obj(t)
əJ(ft) / əwj =令= 0
= əObj(t) / əwj 【2.14】式对 wj 求导
= ∑L_j{ Gj + wj*(Hj + λ)} = 0
=》 Gj + wj*(Hj + λ) = 0
=》 wj = - Gj / (Hj + λ) 【2.15】
将【2.15】代入到【2.14】得:
Obj(t) = -(1/2)∑L_j{ Gj² / (Hj + λ) } + γL + C 【2.16】
因为目标是使函数值越小越好,可忽略常数C,则目标函数为:Obj(t) = -(1/2)∑L_j{ Gj² / (Hj + λ) } + γL 【2.17】
要使 Obj(t) 函数值 越小越好,即 V = (1/2) Gj² / (Hj + λ) 越大越好, 将 V 记为 模型增益分数 【2.18】
·在明确了 新添第t颗构造树 有L个叶子结点 和 各叶子结点的权值优化目标 基础上, 通过下面的方法来确定 该树的划分结构
由于每一个确定的样本 xi, 对应确定了 gi,hi
假设将 n 个样本xi 按某一指标 如x<a划分为两份, 归为 左子树部分 I_left 和 右子树部分 I_right,则
其中 I_left、I_right 分别为归为左/右子树部分的 样本的下标 i 的集合,则
Gl = ∑I_left_i{ gi } Hl = ∑I_left_i{ hi + λ }
Gr = ∑I_right_i{ gi } Hr = ∑I_right_i{ hi + λ }定义若当前所选取的 划分方案为Strategy ,则该方案的 模型增益分数 可做如下定义:
VGain = 【划分后的模型增益分数 - 划分前的模型增益分数】- 新增叶子结点带来的复杂度代价(增益阈值)
= (1/2)[ Gl²/(Hl + λ) + Gr² / (Hr + λ) - (Gl+Gr)² / (Hl+Hr+λ)] - γ 【2.18】
目标是使【2.18】函数值 越大越好,其中增益阈值γ·枚举法:各种划分方法构成的各种树结构,计算该结构的 模型增益分数,选取 增益分数 最大的划分方案
=》由于树的结构有很多可能,所以对于 精确搜索的情况,可采用贪心算法
贪心算法:贪婪地增加树的叶子结点数目,1.对于每个叶子结点尝试增加一个分裂点,2.对于每一次分裂穷举所有可能的分割方案
如何穷举 所有可能的分割方案?
·对样本X的每一个特征值(x_1, x_2, ..., x_d) 分别进行 实例的排序
·用线性扫描 寻找该特征的 最优分裂点
·对所有特征选取一个 最佳分裂点
优化终止条件:当可选优化方案中 最大增益分数 低于阈值时;当叶子节点数达到上限时;...
【待更新…】
【机器学习】XgBoost 原理详解 数学推导相关推荐
- 奇异值分解(SVD)的原理详解及推导
1. 写在前面 最近整理推荐系统模型的时候, 第二个模型打算整理一下隐语义模型, 这里面绕不开一种思想就是矩阵分解, 而作为矩阵分解的经典方法SVD感觉这次有必要学学了, SVD不仅是一个数学问题,在 ...
- XGBoost原理详解
XGBoost是boosting算法的其中一种.Boosting算法的思想是将许多弱分类器集成在一起形成一个强分类器.因为XGBoost是一种提升树模型,所以它是将许多树模型集成在一起,形成一个很强的 ...
- 机器学习算法[9]--集成方法之XGBoost原理详解及XGBoost库实现
机器学习 1. XGBoost 1.1 原理 1.1.1 算法解析 1.1.2 算法流程 1.2 XGBoost库实现 1. XGBoost 1.1 原理 XGBoost(Extreme Gradie ...
- 奇异值分解(SVD)原理详解及推导 (转)
很不错的文章,适合入门. 转载出处http://blog.csdn.net/zhongkejingwang/article/details/43053513 在网上看到有很多文章介绍SVD的,讲的也都 ...
- 奇异值分解(SVD)原理详解及推导(转载)
转载自:http://blog.csdn.net/zhongkejingwang/article/details/43053513 在网上看到有很多文章介绍SVD的,讲的也都不错,但是感觉还是有需要补 ...
- 奇异值分解(SVD)原理详解及推导
转载于:http://blog.csdn.net/zhongkejingwang/article/details/43053513 在网上看到有很多文章介绍SVD的,讲的也都不错,但是感觉还是有需要补 ...
- 机器学习-线性回归 原理详解
一.什么是线性回归 回归算法是一种有监督算法. 回归算法可以看作是用来建立"解释"变量(自变量X)和因变量(Y)之间的关系.从机器学习的角度讲,就是构建一个算法模型来做属性(X)与 ...
- 主成分分析(PCA)原理详解 2016/12/17 · IT技术 · 主成分分析, 数学 分享到: 21 原文出处: 中科春哥 一、PCA简介 1. 相关背景 主成分分析(Principa
主成分分析(PCA)原理详解 2016/12/17 · IT技术 · 主成分分析, 数学 分享到:21 原文出处: 中科春哥 一.PCA简介 1. 相关背景 主成分分析(Principal Co ...
- 机器学习,深度学习基础算法原理详解(图的搜索、交叉验证、PAC框架、VC-维(持续更新))
机器学习,深度学习基础算法原理详解(图的搜索.交叉验证.PAC框架.VC-维.支持向量机.核方法(持续更新)) 机器学习,深度学习基础算法原理详解(数据结构部分(持续更新)) 文章目录 1. 图的搜索 ...
最新文章
- java中建立单链表_Java数据结构,单链表的建立
- Sql Server 2005 中的row_number() 分页技术
- freebsd mysql 安装_Freebsd中mysql安装及使用笔记-阿里云开发者社区
- 企业网络推广网站排名首页但确保用户体验也是企业网络推广的关键
- 2016-1-29 图解HTTP(04)
- 解析Vue.js中的computed工作原理
- 使用CodeFirst创建并更新数据库
- .NET Core系列 :3 、使用多个项目
- jhipster_JHipster入门,第3部分
- 一个月市值蒸发116亿元,《姜子牙》救不了光线传媒
- java第一季_Java入门第一季
- “很多人奉劝我控住分秒 恰反来我偏莽撞闯入年年岁岁”
- 计算机网络(四)数据交换方式过程,图文详解、优缺点分析(电路交换、报文交换、分组交换)
- Python面积计算器源代码
- Java面向对象编程(OOP)
- 【成长笔记】图片验证码识别
- STM32 Cube MX 之hal库软件模拟IIC 可直接移植使用
- 仿微信视频通话大小视图切换(SurfaceView实现)
- ZBrush控制撤销历史记录次数
- docker部署项目通过127.0.0.1访问数据库:Connection refused