机器学习——XGboost模型
相关文章链接
机器学习——人工神经网络(NN)
机器学习——卷积神经网络(CNN)
机器学习——循环神经网络(RNN)
机器学习——长短期记忆(LSTM)
机器学习——决策树(decision tree)
机器学习——随机森林(Random forest)
机器学习——梯度提升决策树(GBDT)
一、XGBoost概述:
XGBoost:在训练出一棵树的基础上再训练下一棵树预测它与真是分布间的差距。通过不断训练用来弥补差距的树,最终用树的组合实现对真是分布的模拟。XGBoost本质上还是一个GBDT,但是力争把速度和效率发挥到极致,所以叫X (Extreme) GBoosted。
XGBoost与GBDT比较大的区别就是目标函数的定义。XGboost的目标函数包括损失函数和正则项两部分。
- 损失函数:代表模型拟合数据的程度。通常用其一阶导数指出梯度下降的方向,XGboost还计算了它的二阶导数,进一步考虑了梯度的变化趋势,拟合更快,精度更高。
- 正则项:用来控制模型的复杂程度。叶子结点越多,模型越大,不仅运算时间长,超过一定限度后还会过拟合,导致分类效果的下降。XGboost的正则项是一个惩罚机制,叶子结点的数量越多,惩罚力度越大,从而限制他们的数量。
XGboost的目标函数:
其中:
- 红色箭头所指向的L 即为损失函数(比如平方损失函数:
- 红色方框所框起来的是正则项(包括L1正则、L2正则)
- 红色圆圈所圈起来的为常数项
- 对于f(x),XGBoost利用泰勒展开三项,做一个近似。f(x)表示的是其中一颗回归树。
二、XGBoost核心思想
XGBoost的核心算法思想是:
- 不断的添加树,不断地进行特征分裂来生长一棵树,每次添加一棵树,其实是学习一个新函数f(x),去拟合上次预测的残差。
- 当我们训练完成得到k棵树,我们要预测一个样本的分数,其实就是根据这个样本的特征,在每棵树中会落到对应的一个叶子节点,每个叶子节点就对应一个分数。
- 最后只需要将每棵树对应的分数加起来就是该样本的预测值。
目标是要使得树群的预测值yi’尽量接近真实值yi,而且有尽量大的泛化能力。XGBoost也是需要将多棵树的得分累加得到最终的预测得分(每一次迭代,都在现有树的基础上,增加一棵树去拟合前面树的预测结果与真实值之间的残差)。
其中选取一个f来使我们的目标函数尽量最大地降低。这里f可以使用泰勒展开公式近似。
数学原理外XGBoost最大的改进是大幅提升了计算速度。数的构建中最耗时的部分是为确定最佳分裂点而进行的特征值排序。XGBoost在训练前会将特征值进行排序,存储为Block结构,此后重复使用这些结构,从而减少计算量。
三、树的生长与停止
树的生长:
XGBoost作者在其原始论文中给出了一种分裂节点的方法:枚举所有不同树结构的贪心法。不断的枚举不同树的结构,然后利用打分函数来寻找出一个最优结构的树,接着加入到模型中,不断重复这样的操作。寻找的过程使用的就是贪心算法。选择一个feature分裂,计算loss function最小值,然后再选一个feature分裂,又得到一个loss function最小值,枚举完,找到一个效果最好的,把树给分裂,就得到了小树苗。
XGBoost使用了和CART回归树一样的想法,利用贪心算法,遍历所有特征的所有特征划分点,不同的是使用的目标函数不一样。具体做法就是分裂后的目标函数值比单叶子节点的目标函数的增益,同时为了限制树的生长过深,还加了个阀值,只有当增益大于该阀值才进行分裂。从而继续分裂,形成一棵树,再形成一棵树,每次在上一次的预测基础上取最优进一步分裂/建树。
停止树的生长
设置树的最大深度,当样本权重和小于设定阀值时会停止生长防止过拟合。
- 当引入的分裂带来的增益小于设定阀值的时候,我们可以忽略掉这个分裂,所以并不是每一次分裂loss function整体都会增加的;
- 当树达到最大深度时则停止建立决策树,设置一个超参数max_depth,避免树太深导致学习局部样本,从而过拟合;
- 样本权重和小于设定阀值时则停止建树。
四、XGBoost的优缺点
优点:
- 善于捕捉复杂数据之间的依赖关系。
- 能从大规模数据集中获取有效模型。
- 在实用性上支持多种系统和语言。
缺点:
在高纬稀疏特征数据集和小规模数据集上的表现不是很好。
XGBoost和GBDT的不同:
- GBDT是机器学习算法,XGBoost是该算法的工程实现。
- 在使用CART作为基分类器时,XGBoost显式地加入了正则项来控制模型的复杂度,有利于防止过拟合,从而提高模型的泛化能力。
- GBDT在模型训练时只使用了代价函数的一阶导数信息,XGBoost对代价函数进行二阶泰勒展开,可以同时使用一阶和二阶导数。
- 传统的GBDT采用CART作为基分类器,XGBoost支持多种类型的基分类器,比如线性分类器。
- 传统的GBDT在每轮迭代时使用全部的数据,XGBoost采用了与随机森林相似的策略,支持对数据进行采样。
- 传统的GBDT没有设计对缺失值进行处理,XGBoost能够自动学习出缺失值的处理策略。
机器学习——XGboost模型相关推荐
- 机器学习——XGBoost大杀器,XGBoost模型原理,XGBoost参数含义
0.随机森林的思考 随机森林的决策树是分别采样建立的,各个决策树之间是相对独立的.那么,在我们得到了第k-1棵决策树之后,能否通过现有的样本和决策树的信息, 对第m颗树的建立产生有益的影响呢?在随机森 ...
- 加载svr模型_机器学习XGBoost实战,网格搜索自动调参,对比随机森林,线性回归,SVR【完整代码(含注释)+数据集见原文链接】...
建议:阅读2020.8.7的文章,完全了解GDBT和XGBT的原理. 机器学习- XGBoost,GDBT[过程:决策树,集成学习,随机森林,GDBT,XGBT,LightGBM] 本次实践内容: 数 ...
- 机器学习之XGBoost模型学习
1.划分数据集函数train_test_split以及数据的加载: python机器学习 train_test_split()函数用法解析及示例 划分训练集和测试集 以鸢尾数据为例 入门级讲解_侯小啾 ...
- 金融领域下的数据挖掘算法应用:XGboost模型
摩天,用友旗下社会化的企业数智化学习认证社区,提供数智营销.智慧医疗.数智金融.智能制造.项目管理等精品课程,数智化人才上摩天!https://mot.yonyou.com/ 你将会学到: XGboo ...
- 使用Optuna的XGBoost模型的高效超参数优化
介绍 : (Introduction :) Hyperparameter optimization is the science of tuning or choosing the best set ...
- python xgb模型 预测_如何使用XGBoost模型进行时间序列预测
字幕组双语原文:如何使用XGBoost模型进行时间序列预测 英语原文:How to Use XGBoost for Time Series Forecasting 翻译:雷锋字幕组(Shangru) ...
- 使用K-Fold训练和预测XGBoost模型的方法
文章目录 一.前言 二.Xgboost一般的训练方法 2.1 问题及数据分析 2.2 搭建xgboost预测模型 2.3 XGBoost模型训练保存及模型评估 2.4 使用XGBoost模型进行预测 ...
- python环境下,XGBoost模型文件转pmml格式用于部署
一. python环境下生成PMML 1. sklearn接口的xgboost 需要用sklearn2pmml包来生成pmml文件,一共有两种方法: 方法一: 在管道pipeline中进行fit后保存 ...
- Python 中解释 XGBoost 模型的学习曲线
XGBoost是梯度提升集成算法的强大而有效的实现.配置XGBoost模型的超参数可能具有挑战性,这通常会导致使用既费时又计算量大的大型网格搜索实验.配置XGBoost模型的另一种方法是在训练过程中算 ...
最新文章
- 【FFmpeg】ffmpeg中函数返回的错误码:AVERROR及AVERROR_*
- 程序人生:外链建设流程与细节都有哪些
- JavaScript eval
- Java实用教程笔记 子类与继承
- 图像切割之(一)概述
- 画动态分析图的个人小技巧
- 2022-01-07
- 相见恨晚的 Python 内置库:itertools
- 在dom最前面插入_前端性能优化之dom编程
- POJ3076 Sudoku
- 重建总结5_重建列表
- HTML中的控制模块,嵌入式Web控制模块 网页控制单片机 Web IO 网页远程控制器 浏览器IO控制...
- windows 一键设置ip地址脚本
- VS2010 SP1 编译QT4.8.0 x64版本
- Windows Server 2019 Datacenter OVF 模板 百度网盘 下载
- 网络存储 数据容灾 学习笔记4
- 档案管理学 | 档案实体管理概论
- Python学习之学校教学(辨别身份证的真伪,并判断性别)
- openpose的搭建
- IDEA创建maven工程(傻瓜式步骤)
热门文章
- 『力扣刷题』5238_找出给定方程的正整数解 解题代码
- PyQt 5.2 发布,此版本完全支持Qtv5.2.0
- android高德地图用地址获取经纬度,高德地图API-获取位置信息的经纬度
- [BZOJ1502] [NOI2005]月下柠檬树
- 2021年电商企业倒闭名单
- C# Socket客户端采用双线程断网重连断线重连)
- 技术概况python_《技》字意思读音、组词解释及笔画数 - 新华字典 - 911查询
- pip永久修改下载源(豆瓣源)
- 一文搞懂0.1UF和10UF电容并联使用技巧
- 智慧建筑行业创业机会分析