zoukankan      html  css  js  c++  java
  • 04-06 梯度提升树


    更新、更全的《机器学习》的更新网站,更有python、go、数据结构与算法、爬虫、人工智能教学等着你:https://www.cnblogs.com/nickchen121/p/11686958.html

    梯度提升树

    梯度提升树(gradien boosting decision tree,GBDT)在工业上用途广泛,属于最流行、最实用的算法之一,梯度提升树可以看成是提升树的优化版。

    一、梯度提升树学习目标

    1. 梯度提升树和提升树
    2. 回归梯度提升树流程
    3. 梯度提升树优缺点

    二、梯度提升树详解

    2.1 梯度提升树和提升树

    梯度提升树其实流程和提升树差不多,但是在损失函数拟合方面,提升树损失函数拟合用的是平方损失,而梯度提升树则是使用损失函数的负梯度来拟合本轮损失的近似值,进而拟合一个回归树。

    t轮第i样本的损失函数的负梯度表示为

    rti=[L(yi,f(xi))f(xi)]f(x)=ft1(x)

    利用(xi,rti),(i=1,2,,m),我们可以拟合一颗CART回归树,得到了第t棵回归树,它对应的叶节点区域为Rtj,(j=1,2,,J),其中J为叶子节点数。

    三、回归梯度提升树流程

    3.1 输入

    m个数据n个特征的训练数据集T={(x,y1),(x2,y2),,(xm,ym)},损失函数为L(y,f(x))

    3.2 输出

    回归树f(x)^

    3.3 流程

    1. 初始化

    f0(x)=argminci=1mL(yi,c)

    1. i=1,2,,m
      1. i=1,2,,m,计算

      rmi=[L(yi,f(xi))f(xi)]f(x)=fm1(x)

      1. rmi拟合一个回归树,得到第m棵树的叶节点区域Rmi,j=1,2,,J
      2. j=1,2,,J,计算

      cmj=argmincxiRmjL(yi,fm1(xi)+c)

      1. 更新

      fm(x)=fm1(x)+j=1JcmjI(xRmj)

    2. 得到回归树

    f(x)^=fM(x)=i=1Mj=1JcmjI(xRmj)

    四、梯度提升树优缺点

    4.1 优点

    1. 相比较SVM,较少的调参时间即可得到一个准确率还不错的模型
    2. 相比较提升树,利用了损失函数的负梯度在当前模型的值作为提升树算法中残差值的近似值,即对于回归和分类问题找到了一种通用的拟合损失误差的方法

    4.2 缺点

    1. 由于弱学习器之间存在依赖,无法支持并行

    五、小结

    梯度提升树虽然在某种程度解决了提升树对于分类和回归问题使用不同的损失函数的问题,并且使用损失函数的负梯度作为提升树算法残差值的近似值,提升了模型的准确度,但是他还无法做到并行。下面介绍的XgBoost作为GBDT的升级版,将会解决这个问题。

  • 相关阅读:
    快速排序
    开博寄语
    002易语言编写获取人物坐标
    001寻找人物的坐标
    借条范例:
    python3练习-装饰器
    python3练习-杨辉三角/帕斯卡三角形
    python3内置函数
    Tableau修改参考线上显示的标签
    Tableau10.0学习随记-分组问题
  • 原文地址:https://www.cnblogs.com/abdm-989/p/14111594.html
Copyright © 2011-2022 走看看