Boosting Ensemble and GBDT Algorithm
Boosting Ensemble: 机器学习中,Ensemble model除了Bagging以外,更常用的是Boosting。与Bagging不同,Boosting中各个模型是串行的。其思想是,后面的model,要从前面models的预测中结果中,试图将错误纠正。下面两张图可以看出二者的异同:


在第一个模型训练之前,各个Training Examples出现在本次训练中的概率相同;训练后的模型,如果在某些数据的预测上出现错误,则这些数据点出现在下个模型中的概率将会被提升,反之预测正确的数据点的概率将会被下调。最终,再将各个模型的输出做合并,给出最终Ensemble模型的预测。该算法的关键点是去设定‘何时停止迭代’,因为无休止的纠错最终将导致Overfitting.
Gradient Boosting Decision Tree(GBDT): 该算法改版自Boosting Ensemble,每个model采用的都是Decision Tree,同时融入了Gradient Descent的思想。首先,我们想象在最基础的Boosting Ensemble中,当第一个模型训练后,得到一个预测值h1(X),而期望的输出output为Y,则二者的差值(残差:Residual)为:
R1(X)=Y-h1(X)
那如果,我们能够构建一个模型model2,去输出R1(X),那么Model1与Model2的输出之和为Y:
Y=h1(X)+R1(X)
当然,拟合出R1(X)是最理想的情况,但实际中却只能输出近似值r1(X),将其累加到第一个model的输出上,我们就得到了model2的输出:
h2(X)=h1(X)+r1(X)
这是我们又得到了R2(X)为Y与h2(X)的差值。循环往复,最终的输出将会不断逼近Y。但,这和Gradient有什么关系呢?

该模型在第n个模型上输出的hypothesis是:
hn(X)=hn-1(X)+rn-1(X)
如果把残差Residual展开:
hn(X)=hn-1(X)+(y-hn-1(X))
在Gradient Descent里面,我们知道,Cost Function被定义为:

当m为1时,我们很容易看出,hn(X)的值是在hn-1(X)的基础上,减去了一倍的梯度(learning rate α=1),所以该算法被冠上了Gradient的名字,不无道理哦。
Boosting Ensemble and GBDT Algorithm的更多相关文章
- Boosting决策树:GBDT
GBDT (Gradient Boosting Decision Tree)属于集成学习中的Boosting流派,迭代地训练基学习器 (base learner),当前基学习器依赖于上一轮基学习器的学 ...
- 机器学习--boosting家族之GBDT
本文就对Boosting家族中另一个重要的算法梯度提升树(Gradient Boosting Decison Tree, 以下简称GBDT)做一个总结.GBDT有很多简称,有GBT(Gradient ...
- A Gentle Introduction to the Gradient Boosting Algorithm for Machine Learning
A Gentle Introduction to the Gradient Boosting Algorithm for Machine Learning by Jason Brownlee on S ...
- GBDT(Gradient Boosting Decision Tree) 没有实现仅仅有原理
阿弥陀佛.好久没写文章,实在是受不了了.特来填坑,近期实习了(ting)解(shuo)到(le)非常多工业界经常使用的算法.诸如GBDT,CRF,topic model的一些算 ...
- 集成学习算法汇总----Boosting和Bagging(推荐AAA)
sklearn实战-乳腺癌细胞数据挖掘(博主亲自录制视频) https://study.163.com/course/introduction.htm?courseId=1005269003& ...
- Parallel Gradient Boosting Decision Trees
本文转载自:链接 Highlights Three different methods for parallel gradient boosting decision trees. My algori ...
- CatBoost使用GPU实现决策树的快速梯度提升CatBoost Enables Fast Gradient Boosting on Decision Trees Using GPUs
python机器学习-乳腺癌细胞挖掘(博主亲自录制视频)https://study.163.com/course/introduction.htm?courseId=1005269003&ut ...
- 壁虎书7 Ensemble Learning and Random Forests
if you aggregate the predictions of a group of predictors,you will often get better predictions than ...
- (转) Ensemble Methods for Deep Learning Neural Networks to Reduce Variance and Improve Performance
Ensemble Methods for Deep Learning Neural Networks to Reduce Variance and Improve Performance 2018-1 ...
随机推荐
- js实现千位符分隔
前几天面试做保险项目的公司,被问到了一道实现千位符分割方法的题,乍一看挺简单,但做起来最后却没给出来一个合适的解决方法.回来自己琢磨了一个还行的答案. var num = 3899000001, ar ...
- java_第一年_JavaWeb(6)
会话 会话:浏览器从打开一个进程访问服务器到该浏览器关闭,我们称之为一个会话: 在浏览器和服务器交互期间,会不可避免地产生一些数据,而为了为每个用户保存其对应的数据,可使用两种技术:Cookie和Se ...
- luoguP1003 铺地毯 题解(NOIP2011)
luoguP1003 铺地毯 题目 #include<cstdio> #include<cstdlib> #include<cstring> #include&l ...
- python eval( ) 使用详解
1.解析表达式 (表达式是str类型)----最常用 a = 12 b = "联播" result1 = eval(a+3) # resu ...
- 67.Task Scheduler(任务规划)
Level: Medium 题目描述: Given a char array representing tasks CPU need to do. It contains capital letter ...
- Python之读写文本数据
知识点不多 一:普通操作 # rt 模式的 open() 函数读取文本文件 # wt 模式的 open() 函数清除覆盖掉原文件,write新文件 # at 模式的 open() 函数添加write ...
- react native 之 Android studio
https\://services.gradle.org/distributions/gradle-4.4-all.zip 下载失败 https://blog.csdn.net/u013132758/ ...
- IDEA中添加自定义的方法快捷方式
IDEA中快速添加自己自定义的方法方法,想要什么快捷方法都行 作为一个从MyEclipse转IDEA的程序员,原来写main就能补全main方法,写syso就能补全System.out.println ...
- java ArrayList的几种方法使用
package java06; import java.util.ArrayList; /* ArrayList的常用的几个方法: public boolean add(E e) : 向集合汇总添加元 ...
- 开源Futter项目
前段时间Flutter很火,所以在闲暇之余做了一个助学通的Flutter移动端应用,现在开源出来,希望对想要学习Flutter的朋友有所帮助. 我大致做个项目介绍: 学生签到系统:分java服务端提供 ...