04-06 梯度提升树

目录

  • 梯度提升树
  • 一、梯度提升树学习目标
  • 二、梯度提升树详解
    • 2.1 梯度提升树和提升树
  • 三、回归梯度提升树流程
    • 3.1 输入
    • 3.2 输出
    • 3.3 流程
  • 四、梯度提升树优缺点
    • 4.1 优点
    • 4.2 缺点
  • 五、小结

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

梯度提升树

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

一、梯度提升树学习目标

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

二、梯度提升树详解

2.1 梯度提升树和提升树

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

第\(t\)轮第\(i\)样本的损失函数的负梯度表示为
\[
r_{ti}=-{[\frac{\partial{L(y_i,f(x_i))}}{\partial{f(x_i)}}]}_{f(x)=f_{t-1}(x)}
\]
利用\((x_i,r_{ti}),\quad(i=1,2,\cdots,m)\),我们可以拟合一颗CART回归树,得到了第\(t\)棵回归树,它对应的叶节点区域为\(R_{tj},\quad(j=1,2,\cdots,J)\),其中\(J\)为叶子节点数。

三、回归梯度提升树流程

3.1 输入

有\(m\)个数据\(n\)个特征的训练数据集\(T=\{(x_,y_1),(x_2,y_2),\cdots,(x_m,y_m)\}\),损失函数为\(L(y,f(x))\)。

3.2 输出

回归树\(\hat{f(x)}\)。

3.3 流程

  1. 初始化
    \[
    f_0(x) = \underbrace{arg\,min}_c\sum_{i=1}^mL(y_i,c)
    \]
  2. 对\(i=1,2,\cdots,m\)
    1. 对\(i=1,2,\cdots,m\),计算
      \[
      r_{mi}=-{[\frac{\partial{L(y_i,f(x_i))}}{\partial{f(x_i)}}]}_{f(x)=f_{m-1}(x)}
      \]
    2. 对\(r_{mi}\)拟合一个回归树,得到第\(m\)棵树的叶节点区域\(R_{mi},\quad{j=1,2,\cdots,J}\)
    3. 对\(j=1,2,\cdots,J\),计算
      \[
      c_{mj} = \underbrace{arg\,min}_c\sum_{x_i\in{R_{mj}}}L(y_i,f_{m-1}(x_i)+c)
      \]
    4. 更新
      \[
      f_m(x)=f_{m-1}(x)+\sum_{j=1}^Jc_{mj}I(x\in{R_{mj}})
      \]
  3. 得到回归树
    \[
    \hat{f(x)}=f_M(x)=\sum_{i=1}^M\sum_{j=1}^Jc_{mj}I(x\in{R_{mj}})
    \]

四、梯度提升树优缺点

4.1 优点

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

4.2 缺点

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

五、小结

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

原文地址:https://www.cnblogs.com/nickchen121/p/11686763.html

时间: 2024-07-31 17:14:37

04-06 梯度提升树的相关文章

mllib之随机森林与梯度提升树

随机森林和GBTs都是集成学习算法,它们通过集成多棵决策树来实现强分类器. 集成学习方法就是基于其他的机器学习算法,并把它们有效的组合起来的一种机器学习算法.组合产生的算法相比其中任何一种算法模型更强大.准确. 随机森林和梯度提升树(GBTs).两者之间主要差别在于每棵树训练的顺序. 随机森林通过对数据随机采样来单独训练每一棵树.这种随机性也使得模型相对于单决策树更健壮,且不易在训练集上产生过拟合. GBTs则一次只训练一棵树,后面每一棵新的决策树逐步矫正前面决策树产生的误差.随着树的添加,模型

scikit-learn 梯度提升树(GBDT)调参小结

在梯度提升树(GBDT)原理小结中,我们对GBDT的原理做了总结,本文我们就从scikit-learn里GBDT的类库使用方法作一个总结,主要会关注调参中的一些要点. 1. scikit-learn GBDT类库概述 在sacikit-learn中,GradientBoostingClassifier为GBDT的分类类, 而GradientBoostingRegressor为GBDT的回归类.两者的参数类型完全相同,当然有些参数比如损失函数loss的可选择项并不相同.这些参数中,类似于Adabo

笔记︱决策树族——梯度提升树(GBDT)

笔记︱决策树族--梯度提升树(GBDT) 本笔记来源于CDA DSC,L2-R语言课程所学进行的总结. 一.介绍:梯度提升树(Gradient Boost Decision Tree) Boosting算法和树模型的结合.按次序建立多棵树,每棵树都是为了减少上一次的残差(residual),每个新的模型的建立都是为了使之前模型的残差往梯度方向减少.最后将当前得到的决策树与之前的那些决策树合并起来进行预测. 相比随机森林有更多的参数需要调整. ---------------------------

【Spark MLlib速成宝典】模型篇07梯度提升树【Gradient-Boosted Trees】(Python版)

目录 梯度提升树原理 梯度提升树代码(Spark Python) 梯度提升树原理 待续... 返回目录 梯度提升树代码(Spark Python) 代码里数据:https://pan.baidu.com/s/1jHWKG4I 密码:acq1 # -*-coding=utf-8 -*- from pyspark import SparkConf, SparkContext sc = SparkContext('local') from pyspark.mllib.tree import Gradi

梯度提升树(GBDT)原理小结

在集成学习之Adaboost算法原理小结中,我们对Boosting家族的Adaboost算法做了总结,本文就对Boosting家族中另一个重要的算法梯度提升树(Gradient Boosting Decison Tree, 以下简称GBDT)做一个总结.GBDT有很多简称,有GBT(Gradient Boosting Tree),?GTB(Gradient Tree Boosting?),?GBRT(Gradient Boosting Regression Tree), MART(Multipl

04-07 scikit-learn库之梯度提升树

目录 scikit-learn库之梯度提升树 一.GradietBoostingClassifier 1.1 使用场景 1.2 参数 1.3 属性 1.4 方法 二.GradietBoostingClassifier 更新.更全的<机器学习>的更新网站,更有python.go.数据结构与算法.爬虫.人工智能教学等着你:https://www.cnblogs.com/nickchen121/ scikit-learn库之梯度提升树 本文主要介绍梯度提升树的两个模型GradientBoosting

集成学习之梯度提升树(GBDT)算法

梯度提升树(GBDT)的全称是Gradient Boosting Decision Tree.GBDT还有很多的简称,例如GBT(Gradient Boosting Tree), GTB(Gradient Tree Boosting ),GBRT(Gradient Boosting Regression Tree), MART(Multiple Additive Regression Tree)等,其实都是指的同一种算法,本文统一简称GBDT. GBDT 也是 Boosting 算法的一种,但是

梯度提升树GBDT原理

1.模型 提升方法实际采用加法模型(即基函数的线性组合)与前向分布算法.以决策树为基函数的提升方法称为提升树(boosting tree).对分类问题决策树是二叉分类树,对回归问题决策树是二叉决策树.提升树模型可以表示为决策树的加法模型: 其中,表示决策树:为决策树的参数:M为树的个数 2.学习过程 回归问题提升树使用以下前向分布算法: 在前向分布算法的第m步,给定当前模型,需求解 得到,即第m棵树的参数 当采用平方误差损失函数时, 其损失变为 其中,是当前模型拟合数据的残差(residual)

机器学习(七)—Adaboost 和 梯度提升树GBDT

1.Adaboost算法原理,优缺点: 理论上任何学习器都可以用于Adaboost.但一般来说,使用最广泛的Adaboost弱学习器是决策树和神经网络.对于决策树,Adaboost分类用了CART分类树,而Adaboost回归用了CART回归树. Adaboost算法可以简述为三个步骤: (1)首先,是初始化训练数据的权值分布D1.假设有N个训练样本数据,则每一个训练样本最开始时,都被赋予相同的权值:w1=1/N. (2)然后,训练弱分类器hi.具体训练过程中是:如果某个训练样本点,被弱分类器h