GBDT

前向分布算法

在Adaboost算法中,我们的最终目的是通过构建弱分类器的线性组合:
f ( x ) = ∑ m = 1 M G m ( x ) f(x)= \sum_ {m=1}^{M}G_{m}(x) f(x)=m=1MGm(x)
加法模型的表达式为:
f ( x ) = ∑ m = 1 M β m b ( x ; γ m ) f(x)= \sum_ {m=1}^{M}\beta _{m}b(x; \gamma_{m}) f(x)=m=1Mβmb(x;γm)
其中, b ( x ; r m ) b(x;r_{m}) b(x;rm)为基函数, r m r_{m} rm是基函数的参数, β m \beta_{m} βm为基函数的系数。
前向分布算法总结如下:

输入:
训练数据集T ={(x1,y1), (x2, y2), …, (xN, yN)};损失函数L(y, f(x));基函数集{b(x; r)};

输出:
加法模型f(x)

解:

  1. 初始化f0(x)= 0
  2. 对m = 1, 2,…, M

    a,极小化损失函数> ( β m , γ m ) = arg ⁡ min ⁡ β , γ ∑ i = 1 N L ( y i , f m − 1 ( x i ) + β b ( x i ; γ ) ) \left(\beta_{m}, \gamma_{m}\right)=\arg \min _{\beta, \gamma} \sum_{i=1}^{N} L\left(y_{i}, f_{m-1}\left(x_{i}\right)+\beta b\left(x_{i} ; \gamma\right)\right) (βm,γm)=argβ,γmini=1NL(yi,fm1(xi)+βb(xi;γ))
    b,更新
    f m ( x ) = f m − 1 ( x ) + β m b ( x ; γ m ) f_{m}(x)=f_{m-1}(x)+\beta_{m} b\left(x ; \gamma_{m}\right) fm(x)=fm1(x)+βmb(x;γm)

  3. 得到加法模型

    f m ( x ) = f m − 1 ( x ) + β m b ( x ; γ m ) f_{m}(x)=f_{m-1}(x)+\beta_{m} b\left(x ; \gamma_{m}\right) fm(x)=fm1(x)+βmb(x;γm)

这样,前向分布算法将同时求解从m=1到M的所有参数βm, rm的优化问题简化为逐次求解各个βm, rm的优化问题。

负梯度拟合

针对各种各样损失函数如何让进行通用性拟合的问题,Freidman提出了用损失函数的负梯度来拟合本轮损失的近似值,进而拟合一个CART回归树。
第t轮的第i个样本的损失函数的负梯度表示为:

在这里插入图片描述

损失函数

  1. 分类算法损失
    1. 指数损失
      L ( y , f ( x ) ) = e x p ( − y f ( x ) ) L(y,f(x))=exp(-yf(x)) L(y,f(x))=exp(yf(x))
    2. 对数损失
      L ( y , f ( x ) ) = l o g ( 1 + e x p ( − y f ( x ) ) ) L(y,f(x))=log(1+exp(-yf(x))) L(y,f(x))=log(1+exp(yf(x))) 二分类
      L ( y , f ( x ) ) = − ∑ k = 1 K y k log ⁡ p k ( x ) L(y, f(x))=-\sum_{k=1}^{K} y_{k} \log p_{k}(x) L(y,f(x))=k=1Kyklogpk(x) 多分类
  2. 回归算法损失

    均方差
    绝对损失
    Huber损失(均方差和绝对损失的折中产物,对于远离中心的异常点,采用绝对损失,而中心附近的点采用均方差。这个界限一般用分位数点度量)
    分位损失

二分类,多分类

二分类

在这里插入图片描述

多分类

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

正则化

  1. 和Adaboost类似的正则化项,即步长(learning rate)。定义为ν。(Shrinkage 的思想)ν的取值范围为0<ν≤1。对于同样的训练集学习效果,较小的ν意味着我们需要更多的弱学习器的迭代次数。通常我们用步长和迭代最大次数一起来决定算法的拟合效果。

  2. 通过子采样比例(subsample)。取值为(0,1]。这里是不放回抽样。如果取值为1,则全部样本都使用,等于没有使用子采样。如果取值小于1,则只有一部分样本会去做GBDT的决策树拟合。选择小于1的比例可以减少方差,即防止过拟合,但是会增加样本拟合的偏差,因此取值不能太低。推荐在[0.5, 0.8]之间。

  3. 使用了子采样的GBDT有时也称作随机梯度提升树(Stochastic Gradient Boosting Tree, SGBT)。减少弱学习器难以并行学习的弱点。

  4. 对于弱学习器即CART回归树进行正则化剪枝。

优缺点

优点
  1. 可以灵活处理各种类型的数据,包括连续值和离散值。
  2. 在相对少的调参时间情况下,预测的准确率也可以比较高。这个是相对SVM来说的。
  3. 使用一些健壮的损失函数,对异常值的鲁棒性非常强。比如 Huber损失函数和Quantile损失函数。
缺点

由于弱学习器之间存在依赖关系,难以并行训练数据。(SGBT进行了改善)

sklearn参数

Boosting框架的重要参数:

loss {‘deviance’, ‘exponential’}, 默认‘deviance’
损失函数。有对数似然损失函数"deviance"和指数损失函数"exponential"两个选项。一般来说,推荐使用默认的对数似然损失函数"deviance",它对于二元分类和多元分类都有较好的优化效果。而指数损失函数"exponential"相当于执行了Adaboost算法。
learning_rate float,范围(0,1],默认0.1
弱学习器的权重缩减系数ν。
n_estimators int (default=100)
弱学习器的最大迭代次数,或者说最大的弱学习器个数。一般来说n_estimators太小,容易欠拟合,而n_estimators太大,又容易过拟合。调参过程中,常常将它和参数learning_rate一起来考虑。
subsample float, (default=1.0)
子采样比例,取值为(0,1]。推荐在[0.5, 0.8]之间选择。
init estimator
初始化的弱学习器。。如果不输入,则用训练集样本来做样本集的初始化分类回归预测,否则使用init参数提供的学习器来做初始化分类回归预测。一般用在我们对数据有先验知识或者之前做过拟合的时候,否则就不用考虑这个参数了。
validation_fraction float (0,1),默认0.1
验证集比例。在n_iter_no_change为integer时使用,用于提前终止训练。
n_iter_no_change int, default None
None表示不会提前终止训练。为int时表示验证集的评分在多轮迭代中没有提高,则停止训练。
tol float, optional, default 1e-4
提前停止的容忍程度。在n_iter_no_change轮迭代中,损失都没能提高tol,则停止训练。

决策树类相关参数:

决策树相关参数。在随机森林算法中已经对这些参数进行了细致的说明:

https://blog.csdn.net/m0_38019841/article/details/85100588

criterion
max_depth
max_features
min_samples_split
min_samples_leaf
min_weight_fraction_leaf
min_impurity_decrease
min_impurity_split
max_leaf_nodes
random_state
verbose
warm_start
presort bool, optional (default=False)

是否预先对数据排序以加快拟合中最佳分裂的发现。

应用场景

  1. Facebook使用其来自动发现有效的特征、特征组合,来作为LR模型中的特征,以提高 CTR预估(Click-Through Rate Prediction)的准确性
  2. GBDT在淘宝的搜索及预测业务上也发挥了重要作用
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值