xgboost全称eXtreme Gradient Boosting,要理解xgboost算法,首先要理解决策树和boosting。

1、决策树:决策树是一个类似流程图的树结构,分支节点表示对一个特征进行测试,根据测试结果进行分类,树叶节点代表一个类别。我们对不同特征进行测试,并根据测试结果决定类别,将数据集划分为多个子数据集,再继续在子数据集上选择特征,再次划分,直到创建出一颗完整的决策树。对于测试数据,只要根据其特征,从根节点一直往下即可预测出其标签。

2、boosting:boosting属于一种集合算法,即利用统计学采样原理,训练成千上百个不同的算法模型,分别使用这些模型进行预测,然后采用少数服从多数原则,可以在一定程度上解决过拟合问题。具体到boosting的流程为:数据集有m个训练样本,给每个样本分配一个初始权重,然后使用这个带权重的数据集来训练模型,训练完成后,针对模型预测错误的样本,调整权重,再用其训练出下一个新模型,重复上述过程B次,训练出B个模型。

Bagging可以并行训练多个模型,而boosting只能串行训练,因为其下一个模型依赖上一个模型的训练结果。

Bagging训练出的B个模型权重是一样的,而boosting训练出的模型本身带有权重信息,单个模型的权重由训练的效果决定,即准确性高的权重会相应的大些。

算法:集合算法需要训练出很多不同的算法模型,所以先假设有k棵树:

目标函数为:

用泰勒展开逼近目标函数,就得到了新的目标函数:

现在,需要将树的形式从抽象概念转化为函数:

树的复杂度定义为:

xgboost中的部分参数

eta[default = 0.3,别名:learning_rate] 更新中使用的步长缩小以防止过度拟合。在每个提升步骤之后,我们可以直接获得新特征的权重,并eta缩小特征权重以使提升过程更加保守。

gamma[default = 0,别名:min_split_loss] 在树的叶节点上进行进一步分区所需的最小损耗减少。gamma越大,算法越保守。范围:[0,∞]

max_depth[default=6] 树的最大深度。增加此值将使模型更复杂,更容易过度拟合。lossguided当tree_method设置为as时,仅在增长策略中接受0,hist并且它表示没有深度限制。请注意,在训练深树时,XGBoost会积极地消耗内存。

max_delta_step[default=0] 允许每个叶子输出的最大增量步长。如果该值设置为0,则表示没有约束。如果将其设置为正值,则可以帮助使更新步骤更加保守。通常不需要此参数,但当类非常不平衡时,它可能有助于逻辑回归。将其设置为值1-10可能有助于控制更新。范围:[0,∞]

lambda[default=1, alias:reg_lambda] 关于权重的L2正则化项。增加此值将使模型更加保守。

alpha[default=0, alias:reg_alpha] 关于权重的L1正则化项。增加此值将使模型更加保守。

tree_methodstring [default =auto] autoexactapproxhistgpu_hist

  • auto:使用启发式方法选择最快的方法。
  • 对于中小型数据集,exact将使用精确的贪婪()。
  • 对于非常大的数据集,approx将选择近似算法()。
  • 因为旧行为总是在单个机器中使用精确贪婪,所以当选择近似算法来通知该选择时,用户将得到消息。
  • exact:精确的贪婪算法。
  • approx:使用分位数草图和梯度直方图的近似贪婪算法。
  • hist:快速直方图优化近似贪心算法。它使用了一些性能改进,例如垃圾箱缓存。
  • gpu_hist:GPU实现hist 算法。

max_leaves[default=0] 要添加的最大节点数。仅在grow_policy=lossguide设置时相关。

predictor, [default=``cpu_predictor``] 要使用的预测算法类型。提供相同的结果,但允许使用GPU或CPU。

  • cpu_predictor:多核CPU预测算法。
  • gpu_predictor:使用GPU进行预测。默认情况下tree_methodgpu_exactgpu_hist

xgboost算法_xgboost算法学习心得相关推荐

  1. xgboost算法_xgboost算法原理篇

    1, 概述部分 这篇文章,主要来介绍一下xgboost的理论部分,可能会不够详细,由于xgboost算法相比较前三篇文章中提到的算法更加复杂,这里主要讲解一下损失函数正则化,切分点查找算法及其优化,叶 ...

  2. xgboost算法_XGBoost算法可能会长期占据你的视野!

    点击上方关注,All in AI中国 我仍然记得十五年前第一份工作的第一天,我刚刚完成了我的研究生课程,并以分析师的身份加入了一家全球投资银行.在上班的第一天,我还是很紧张的,我经常会有的小动作就是会 ...

  3. xgboost算法_XGBoost算法背后的数学:尽可能简单地解释XGBoost算法背后的数学机制...

    如果你想很好地理解某些内容,请尝试简单地给别人解释出来.--费曼 XGBoost是一个很优美的算法,它的过程不乏启发性.这些通常简单而美丽的概念在数学术语中消失了.我在理解数学的过程中也遇到过同样的挑 ...

  4. xgboost算法_xgboost算法过程推导

    xgboost的原理 首先值得说明的是,xgboost是gbdt的升级版,有兴趣的话可以先看看gbdt的推导.xgboost同样是构造一棵棵树来拟合残差,但不同之处在于(1)gbdt使用一阶导,xgb ...

  5. 写学习心得,赢华为P30、漫步者音响!

    为了更好的增强IT行业交流氛围,促进学员与小码哥教育之间的沟通:庆祝<恋上数据结构与算法>的"大麦",同时为提前庆祝小码哥4周年,小码哥教育正式对外开展有奖征文比赛活动 ...

  6. Surf算法学习心得(一)——算法原理

    Surf算法学习心得(一)--算法原理 写在前面的话: Surf算法是对Sift算法的一种改进,主要是在算法的执行效率上,比Sift算法来讲运行更快!由于我也是初学者,刚刚才开始研究这个算法,然而网上 ...

  7. 分享一下字符串匹配BM算法学习心得。

    字符串匹配BM(Boyer-Moore)算法学习心得 BM算法 是 Boyer-Moore算法 的缩写,是一种基于后缀比较的模式串匹配算法.BM算法在最坏情况下可以做到线性的,平均情况下是亚线性的(即 ...

  8. 《数据结构与算法 Python语言实现》书评与学习心得

    做为Python小白,本人几个月前读完了Mark Lutz的1400页巨著<Learning Python>(太TM啰嗦了,读过的请举手),本打算继续学习下一步<Programmin ...

  9. 《啊哈!算法》学习心得

    文章目录 内容概述 第一章 一大波数正在靠近--排序 第二章 栈.队列.链表 第三章 枚举!很暴力 第四章 万能的搜索 第五章 图的遍历 第六章 最短路径 Floyd-Warshall算法 Dijks ...

  10. K-均值聚类算法学习心得

    一.分类与聚类 分类作为一种监督学习方法,要求必须事先明确知道各个类别的信息,并且断言所有待分类项都有一个类别与之对应.但是很多时候上述条件得不到满足,尤其是在处理海量数据的时候,如果通过预处理使得数 ...

最新文章

  1. linux   RedHat AS5(x86_64)安装oracle10g
  2. 工信部:推动制定出台工业互联网发展战略
  3. PON:EPON/GPON/10G PON/XG-PON/NG-PON2—Vecloud微云
  4. forget password of WEBLOGIC user
  5. TCP协议的三次握手与四次挥手
  6. 1273 - Unknown collation: 'utf8mb4_0900_ai_ci'
  7. golang开发环境配置及Beego框架安装
  8. hadoop--Map Join
  9. 第十篇、微信小程序-view组件
  10. 图像特征描述_如何判断ORB特征点的好坏(得分)_FAST_SCORE对比HARRIS_SCORE
  11. 少儿编程python学啥-少儿编程学什么?少儿编程课程体系介绍
  12. windbg中ntsd使用用户态调试器链接到内核调试器的常用技巧
  13. VS2017超有用秘钥(亲测)
  14. java swing高仿qq聊天_GitHub - sxei/myqq: Java版SWing“高”仿QQ即时通聊天系统
  15. HammerDB造数报错
  16. 秒杀功能设计思想 php,seckill-system-php
  17. 电脑网线连接无线路由扩展设置
  18. 爱荷华州立 计算机博士,美国爱荷华州立大学无损检测中心裴宁博士来我院讲学...
  19. TortoiseGit 如何使用 cherry-pick
  20. win10如何修改系统文件夹名字

热门文章

  1. 小D课堂 - 零基础入门SpringBoot2.X到实战_第1节零基础快速入门SpringBoot2.0_4、快速创建SpringBoot应用之自动创建web应用...
  2. 阶段2 JavaWeb+黑马旅游网_15-Maven基础_第5节 使用骨架创建maven的java工程_15maven工程servlet实例之导入项目依赖...
  3. 网络编程基础,传输层服务
  4. VM虚拟机手动配置IP地址
  5. TypeScript完全解读(26课时)_9.TypeScript完全解读-TS中的类
  6. SpringBoot 系列
  7. 5-21 求前缀表达式的值(25分)
  8. 根据文件大小搜索电脑文件
  9. c# Invalidate() Update() Refresh()的区别
  10. python 简单的接口测试框架