XGBoost基本上都是组合大量小学习率的回归树。在这种情况,越晚添加的树比越早添加的树更重要。
Rasmi根据深度神经网络社区提出一个新的使用dropout的boosted trees,并且证明它在某些情况有更好的结果。
以下是新的tree boosterdart的介绍。

原始文章

特征

  • Drop Trees是为了解决过拟合

    • 可以防止一些琐碎的树(为了纠正小错误)。
      因为训练中引入了随机,所以有以下的不同:
  • 因为随机dropout不使用用于保存预测结果的buffer所以训练会更慢
  • 因为随机,早停可能不够稳定

DART算法怎么运行

DART算法和MART(GBDT)算法主要有两个不同点:

dropout

计算下一棵树要拟合的梯度的时候,仅仅随机从已经生成的树中选取一部分。假设经过nn次迭代之后当前模型为MM,M=∑ni=1TiM=\sum_{i=1}^nT_i,当中TiT_i是第ii次学习到的树。DART算法首先选择一个随机子集I⊂{1,...,n}I\subset{\{1,...,n\}},创建模型M^=∑i∈ITi\hat{M}=\sum_{i\in{I}}T_i。树TT从{(x,−L′x(M^(x)))}\{(x,-L_x'(\hat{M}(x)))\}学习得到,当中L′x()L_x'()表示求损失函数的梯度作为下一次的标签,GDBT中使用损失函数的梯度作为下一个树的输入标签。

归一化

DART和MART第二点不同就是DART添加一棵树时需要先归一化。归一化背后的原理是:树T是尝试减少M^\hat{M}和最优预测器之间的差距,dropped trees也是为了减少这个差距。因此引入new tree和dropped trees都是为了达到相同的目标。进一步说,假设通过II建立模型M^\hat{M}时drop掉k棵树。所以新的树TT大概是dropped trees中每一个独立的树的k倍。因此,DART算法将树TT乘以1/k1/k,这使TT的大小和每一个单独的dropped trees相同。然后,新的树和dropped trees都乘以k/(1+k)k/(1+k),再将新的树加入集成模型中。乘以k/(k+1)k/(k+1)是为了保证新的树的引入和不引入的效果一样。

XGBoost官方文档

  • 在第m次训练,假设k棵树被dropped。
  • 假设D=∑i∈KFiD = \sum_{i \in \mathbf{K}} F_i是dropped trees叶子节点的得分,Fm=ηF~mF_m = \eta \tilde{F}_m是新的树的叶子节点的得分,η\eta表示学习率
  • 目标函数如下:
    Obj=∑j=1nL(yj,y^m−1j−Dj+F~m)+Ω(F~m).

    \mathrm{Obj}= \sum_{j=1}^n L \left( y_j, \hat{y}_j^{m-1} - D_j + \tilde{F}_m \right)+ \Omega \left( \tilde{F}_m \right).

  • DD和FmF_m有相同的目标,使用拉伸系数(scale factor):
    y^mj=∑i∉KFi+a(∑i∈KFi+bFm).

    \hat{y}_j^m = \sum_{i \not\in \mathbf{K}} F_i + a \left( \sum_{i \in \mathbf{K}} F_i + b F_m \right) .

参数

booster

  • dart
    DART booster继承了gbtree,所以dart也有eta.gamma,max_depth等参数,额外增加的参数如下

sample_type [default=”uniform”]

算法抽样的类型
* uniform:(default)均匀选择树dropped。
* weighted:按照权重来选择树dropped。

normalize_type [default=”tree”]

归一化算法的类型
* tree:新的tree和每一个dropped trees有同样的权重
* 新的trees的权重为 1 / (k + learning_rate)
* dropped trees乘以一个系数 k / (k + learning_rate)

a(∑i∈KFi+1kFm)=a(∑i∈KFi+ηkF~m)∼a(1+ηk)D=ak+ηkD=D,a=kk+η.

\begin{split}a \left( \sum_{i \in \mathbf{K}} F_i + \frac{1}{k} F_m \right) &= a \left( \sum_{i \in \mathbf{K}} F_i + \frac{\eta}{k} \tilde{F}_m \right) \\ &\sim a \left( 1 + \frac{\eta}{k} \right) D \\ &= a \frac{k + \eta}{k} D = D , \\ &\quad a = \frac{k}{k + \eta} . \end{split}
* forest:新的树和所有dropped trees的和有相同的权重
* 新的trees的权重为 1 / (1 + learning_rate)
* dropped trees乘以一个系数 1 / (1 + learning_rate)

a(∑i∈KFi+Fm)=a(∑i∈KFi+ηF~m)∼a(1+η)D=a(1+η)D=D,a=11+η.

\begin{split}a \left( \sum_{i \in \mathbf{K}} F_i + F_m \right) &= a \left( \sum_{i \in \mathbf{K}} F_i + \eta \tilde{F}_m \right) \\ &\sim a \left( 1 + \eta \right) D \\ &= a (1 + \eta) D = D , \\ &\quad a = \frac{1}{1 + \eta} . \end{split}

rate_drop [default=0.0]

  • dropout的概率(在生成的树中dropped一部分)
  • 范围:[0.0, 1.0]

one_drop [default=0]

  • 当这个被设置时,至少有一个树始终会被dropped(allows Binomial-plus-one or epsilon-dropout from the original DART paper)

skip_drop [default=0.0]

  • 在boosting迭代的过程中略过dropout过程的概率

    • 如果一次dropout被略过,新的树被添加进model用和gbtree一样的方式。
    • 非0的skip_drop比rate_drop和one_drop有更高的优先级。
  • 范围:[0.0,1.0][0.0,1.0]

DART booster相关推荐

  1. 《深度学习,统计学习,数学基础》人工智能算法工程师手册:程序员写的AI书,50 章一网打尽...

    来源:专知 本文约3400字,建议阅读10+分钟. 免费开源人工智能手册,带你快速上手写代码! [ 导读 ]市面上很多人工智能相关的书籍.大部分的书,面向小白,内容深度不够:小部分教材书或者科研书,内 ...

  2. 机器学习的宝典-华校专老师的笔记

    华校专,清华航天学院工程力学本科,国防科大计算机专业硕士.清华四年每年成绩都是本系头名,曾任阿里巴巴资深算法工程师,现任智易科技首席算法研究员,<Python 大战机器学习>的作者. 这是 ...

  3. XGBOOST回归用法和官方参数解释

    XGBoost Parameters 本文连接官网地址:https://xgboost.readthedocs.io/en/latest/parameter.html Before running X ...

  4. 《深度学习,统计学习,数学基础》人工智能算法工程师手册

    [ 导读 ]市面上很多人工智能相关的书籍.大部分的书,面向小白,内容深度不够:小部分教材书或者科研书,内容艰深,又过于复杂.那么有没有,面向算法工程师(程序员)人群的,面向有一定数学基础.算法基础,能 ...

  5. 《AI算法工程师手册》

    本文转载自:http://www.huaxiaozhuan.com/ 这是一份机器学习算法和技能的学习手册,可以作为学习工作的参考,都看一遍应该能收获满满吧. 作者华校专,曾任阿里巴巴资深算法工程师, ...

  6. flutter开发中常用的dart插件

    flutter插件官网地址:https://pub.dartlang.org/packages/ 1. image_picker 一个可以从图库选择图片,并可以用相机拍摄新照片的flutter插件 2 ...

  7. 用Flutter + Dart快速构建一款绝美移动App

    作者 | Wojciech Kuroczycki 译者 | 弯月 来源 | CSDN(ID:CSDNnews) 如今,与前端或移动相关的新框架层出不穷.所有从事Web开发的人都应该熟悉各种目不暇接的新 ...

  8. 《The Coaching Booster》问与答

    由Shirly Ronen-Harel和Jens R. Woinowski 编写的<The Coaching Booster> 一书探讨了不同的教练方法和实践,并介绍了一种教练框架,支持教 ...

  9. 一种事件相机描述子——DART

    点击上方"3D视觉工坊",选择"星标" 干货第一时间送达 一.背景知识 在物体分类.目标跟踪等问题下,我们经常需要提取物体的一些特征.传统图像中常使用描述子(例 ...

  10. Dart In Action -Dart快速入门(二)

    写在前面 本文基本上是将dart官网部分内容进行翻译,没兴趣的请出门左转至Dart的官网,有兴趣的同志请继续阅读本文. Flutter教程在这里 Dart的一些重要概念 当你学习Dart语言时,记住这 ...

最新文章

  1. 前端的小玩意(5)——用dojo写的二级下拉菜单自动添加功能
  2. 检查密钥是否存在于json对象中
  3. Python学习day13-函数进阶(1)
  4. 高人对libsvm的经典总结(全面至极)
  5. 在 Eclipse Galileo 中更快地编写 Java 代码使用新的 toString() 生成器
  6. 搜索引擎学习(三)Lucene查询索引
  7. springcloud(二):注册中心Eureka
  8. 分析PCB技术印制电路板的可靠性设计(z)
  9. 【剑指offer】面试题33:二叉搜索树的后序遍历序列
  10. OpenCV3学习(7.1)——图像分割之一(漫水填充FloodFill)
  11. 配置多台机器SSH相互通信信任
  12. Word文档中页眉页脚怎么设置
  13. ElasticsearchTemplate的详细使用,完成多条件查询、匹配度查询等
  14. length()与lengthb()的区别
  15. 香港理工大学,新设“元宇宙科技”专业
  16. Linux 快速修改某个分区的名称/标签
  17. 卫星各个波段的说明及用途(C/Ku/Ka/S/L)
  18. Jmeter(十八):硬件性能监控指标
  19. 谷歌基情录:TensorFlow、Hadoop、MapReduce 都靠他们诞生!
  20. 计算机音乐一次就好歌词,沈腾歌曲一次就好歌词

热门文章

  1. 挂yy协议的服务器,yy协议挂机软件
  2. vue解决mintui中使用MessageBox弹窗拦截,移动端多次点击手机的物理返回键,选择确定后页面返回不正确问题
  3. cba篮球暂停次数和时间_CBA在比赛时,为什么有“官方暂停”?
  4. 前端JavaScript学习小总结
  5. 人工智能资料库:第37辑(20170220)
  6. 分享几款交互UI设计软件用法,了解后再选择
  7. 一只青蛙跳向三个台阶_青蛙跳台阶算法
  8. 梅隆大学计算机专业申请,卡内基梅隆大学计算机专业申请条件(附案例)
  9. 博客园app for xamarin android
  10. 图片灯箱插件-lightBox