IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 人工智能 -> xgboost的公式推导 -> 正文阅读

[人工智能]xgboost的公式推导

一、简介

XGBoost, LightGBM, CatBoost, NGBoost实际上是对GBDT方法的不同实现,针对同一目标、做了不同的优化处理。
xgboost的基学习器采用CART回归树。

二、公式——二阶泰勒展开

1、目标函数

目标函数=损失函数 + 正则化项
在这里插入图片描述 正则化项用于控制树的复杂度,防止过拟合,使得模型更简化,也使得最终的模型的预测结果更稳定。

在这里插入图片描述
其中,
T:叶子数量,
wj:叶子分数的L2正则项
r:加入新叶子节点引入的复杂度代价

例如:
在这里插入图片描述
此时
在这里插入图片描述
预测函数,样本的预测结果=每棵树预测分数之和

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

二、二阶泰勒展开

对目标函数改进,进行二阶泰勒展开:
在这里插入图片描述
定义
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
XGBoost 的目标函数:
在这里插入图片描述
T为叶子节点数量

Ij定义为每个叶子节点里面的样本集合
在这里插入图片描述
在这里插入图片描述
即每个样本所在叶子节点索引的分数(叶子权重w)
Gj,Hj分别表示每个叶子节点的一阶梯度的和,与二阶梯度的和:
在这里插入图片描述
目标函数改写为:
在这里插入图片描述
求偏导得到:
在这里插入图片描述
求解得
在这里插入图片描述
在这里插入图片描述
分数越小,代表树的结构越好。

三、贪心法(计算增益)

1、增益

求Obj分数最小的树结构,可以穷举所有可能,但计算量太大,使用贪心法,即利用打分函数(计算增益)。

以Gain作为是否分割的条件,Gain看作是未分割前的Obj减去分割后的左右Obj:
在这里插入图片描述
如果Gain<0,则此叶节点不做分割,分割方案个数很多,计算量依然很大。

2、贪心法

贪心方法,获取最优分割节点(split point)
将所有样本按照gi从小到大排序,通过遍历,查看每个节点是否需要分割
对于特征值的个数为n时,总共有n?1种划分
Step1,对样本扫描一遍,得出GL,GR
Step2,根据Gain的分数进行分割
通过贪心法,计算效率得到大幅提升,XGBoost重新定义划分属性,即Gain,而Gain的计算是由目标损失函数obj决定的

3、优化

XGBoost的分裂节点算法(近似算法,Histogram 2016 paper):
对于连续型特征值,样本数量非常大,该特征取值过多时,遍历所有取值会花费很多时间,且容易过拟合
方法,在寻找split节点的时候,不会枚举所有的特征值,而会对特征值进行聚合统计,然后形成若干个bucket(桶),只将bucket边界上的特征值作为split节点的候选,从而获得性能提升
从算法伪代码中该流程还可以分为两种,全局的近似是在新生成一棵树之前就对各个特征计算分位点并划分样本,之后在每次分裂过程中都采用近似划分,而局部近似就是在具体的某一次分裂节点的过程中采用近似算法

四、总结

XGBoost算法特点:
1、XGBoost将树模型的复杂度加入到正则项中,从而避免过拟合,泛化性能好

2、损失函数是用泰勒展开式展开的,用到了一阶导和二阶导,可以加快优化速度

3、在寻找最佳分割点时,采用近似贪心算法,用来加速计算

4、不仅支持CART作为基分类器,还支持线性分类器,在使用线性分类器的时候可以使用L1,L2正则化

5、支持并行计算,XGBoost的并行是基于特征计算的并行,将特征列排序后以block的形式存储在内存中,在后面的迭代中重复使用这个结构。在进行节点分裂时,计算每个特征的增益,选择增益最大的特征作为分割节点,各个特征的增益计算可以使用多线程并行

6、优点:速度快、效果好、能处理大规模数据、支持自定义损失函数等
缺点:算法参数过多,调参复杂,不适合处理超高维特征数据

  人工智能 最新文章
2022吴恩达机器学习课程——第二课(神经网
第十五章 规则学习
FixMatch: Simplifying Semi-Supervised Le
数据挖掘Java——Kmeans算法的实现
大脑皮层的分割方法
【翻译】GPT-3是如何工作的
论文笔记:TEACHTEXT: CrossModal Generaliz
python从零学(六)
详解Python 3.x 导入(import)
【答读者问27】backtrader不支持最新版本的
上一篇文章      下一篇文章      查看所有文章
加:2021-09-01 11:55:38  更:2021-09-01 11:57:32 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/27 16:23:51-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码