前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >《机器学习技法》学习笔记11——GBDT

《机器学习技法》学习笔记11——GBDT

作者头像
小爷毛毛_卓寿杰
发布2019-02-13 11:00:31
6380
发布2019-02-13 11:00:31
举报
文章被收录于专栏:Soul Joy HubSoul Joy Hub

http://blog.csdn.net/u011239443/article/details/77435463

Adaptive Boosted Decision Tree

关于AdaBoost、提升树可先参阅:http://blog.csdn.net/u011239443/article/details/77294201 这里仅对其做一定的补充。 对提升决策树桩的模型中,我们对树的节点进行分隔时,需要该节点中的各个数据的权重来计算总错误:

代码语言:javascript
复制
weightedError = D.T * errArr

树根比较好算,数据都是全量的数据,但是如果是非根的叶节点呢?这就是困难了。于是,我们就想到了变动数据集方法:

比如说,某条数据的权重是0.1,我们就似的样本抽取到它的概率变为0.1。

AdaBoost优化背后的意义

unt+1u_n{t+1}为第n个数据,t+1轮优化的权重

我们把上述橙色部分叫做voting score

我们回过头来看模型,并套用SVM的形式:

套用SVM,我们可知我们需要对模型的优化是:

于是,我们得到了AdaBoost的损失函数:

使用梯度下降的方法,调整最后g(也就是h),来最小化误差:

使用泰勒展开:

使得损失函数等价为:

于是,我们只需最小化:

得到:

我们可以看到,我们选择的h是要使得其预测率最小则结果最优。这就把问题转移到了函数h的最优化的问题了,这就变成了我们非常熟悉的问题,比如 如果是 AdaBoost Decision Tree,那就用决策树回归最优化h就行了。

然后我们来调整 η,设gtg_t就是我们的最优化h,那么最优化问题变成了:

我们对其求导,最优化得到:

对,没有错!AdaBoost中的 α 的含义其实就是在最优化g函数梯度下的最优化的步长!

Gradient Boosting

我们上节套用SVM来得出Adaboost的损失函数:

但其实我们可以用其他误差来得出损失函数,这就是叫做Gradient Boosting,通常使用差方来得到:

对上式进行关于S在SnS_n上泰勒展开:

即上式中 x = s , x0=Snx_0 = Sn得到了:

由于我们想让η来调节步长,而h函数只是决定方向,所以需要让h(x)h(x)为负数,但是绝对值又要尽可能的小,于是优化问题变成了:

可以看出我们的h其实是最优化回归:

也就是说,h是想把输入特征,回归拟合输出为实际值和上一轮模型预测值差值。

同样的,假设我们已经找到最佳的回归函数g,接下来调整η:

可以看到,这也是一个简单的一元回归:

总结GBDT模型如下:

总结集成模型

bagging 和 boosting 加上 决策树 可以分别得到:

为什么集成方法效果好?因为它有很多不同的模型表示,所以表达能力非常好,避免的欠拟合;而又是因为有很多模型混合,所以避免的某些模型的过拟合。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2017年08月20日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Adaptive Boosted Decision Tree
  • AdaBoost优化背后的意义
  • Gradient Boosting
  • 总结集成模型
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档