机器学习技法-GBDT算法
课程地址:https://class.coursera.org/ntumltwo-002/lecture
之前看过别人的竞赛视频,知道GBDT这个算法应用十分广泛。林在第八讲,简单的介绍了AdaBoost,这一讲会更深入的从优化的角度看AdaBoost,然后引出GBDT算法,最后林对最近几讲的集成学习模型(Aggregation Models)做了个很棒的总结。

一、RandomForest Vs AdaBoost-DTree
- RF随机森林算法:通过bootstrapping有放回的抽样获取不同的训练数据Dt,不同的Dt可同时并行化生成多棵决策树最后将多棵决策树‘一人一票’的方式结合生成G。
- AdaBoost-DTree:通多重赋权reweight(样本权重Ut)的方式获取不同的训练数据Dt,Ut依赖于上一次的迭代的分类结果,决策树之间存在依赖关系,必须串行生成每一棵决策树。最后每一棵决策树通过权值alphat结合生成G。

- 在AdaBoost-DTree中,为了不修改原来的模型,数据按照样本权重u的比例大小对样本进行sampling,采样后的数据D中也能体现出样本的权重。
- 直接使用fully grown tree 训练Dt,会产生autocracy,需要剪枝或使用弱决策树算法

二、从优化的角度看AdaBoost
1.AdaBoost的指数损失函数(loss function)
- 林通过指数损失函数,从优化的角度推导了AdaBoost-DTree
- 样本权重与所有gt在该样本的投票的分数有关,分数越高,权值越小。AdaBoost迭代过程中会降低样本的权重。

2.下一步是如何根据损失函数找到下一个gt,最后的结论是损失函数的梯度的最大值(steepest descent)。
下面是推导过程,建议去看视频理解,有点绕。



三、GBDT(Gradient Boosting Decision Tree)
1.AdaBoost vs GradientBoost
这部分是将第二部分的AdaBoost进行推广,误差函数(error function)扩展为任意的。
2.使用平方误差函数(squared-error)的GDBT,和上面的思路一样求解ht和移动的幅度


四、模型融合(Aggregation models)的对比、总结
1.获得不同的gt之后的融合方式的对比

2.获取gt的方式和融合的方式对比


机器学习技法-GBDT算法的更多相关文章
- 【机器学习】--GBDT算法从初始到应用
一.前述 提升是一种机器学习技术,可以用于回归和分类的问题,它每一步产生弱预测模型(如决策树),并加权累加到总模型中:如果每一步的弱预测模型的生成都是依据损失函数的梯度方式的,那么就称为梯度提升(Gr ...
- 机器学习系列------1. GBDT算法的原理
GBDT算法是一种监督学习算法.监督学习算法需要解决如下两个问题: 1.损失函数尽可能的小,这样使得目标函数能够尽可能的符合样本 2.正则化函数对训练结果进行惩罚,避免过拟合,这样在预测的时候才能够准 ...
- 机器学习中的算法-决策树模型组合之随机森林与GBDT
机器学习中的算法(1)-决策树模型组合之随机森林与GBDT 版权声明: 本文由LeftNotEasy发布于http://leftnoteasy.cnblogs.com, 本文可以被全部的转载或者部分使 ...
- 《机器学习技法》---GBDT
1 对决策树使用adaboost 对决策树使用adaboost时,有以下几个问题: (1)adaboost每次更新的样本权重如何应用到决策树中? 由于我们不知道决策树的err目标是什么,因此通常的方法 ...
- 机器学习之——集成算法,随机森林,Bootsing,Adaboost,Staking,GBDT,XGboost
集成学习 集成算法 随机森林(前身是bagging或者随机抽样)(并行算法) 提升算法(Boosting算法) GBDT(迭代决策树) (串行算法) Adaboost (串行算法) Stacking ...
- GB和GBDT 算法流程及分析
1.优化模型的两种策略: 1)基于残差的方法 残差其实就是真实值和预测值之间的差值,在学习的过程中,首先学习一颗回归树,然后将“真实值-预测值”得到残差,再把残差作为一个学习目标,学习下一棵回归树,依 ...
- GBDT算法原理深入解析
GBDT算法原理深入解析 标签: 机器学习 集成学习 GBM GBDT XGBoost 梯度提升(Gradient boosting)是一种用于回归.分类和排序任务的机器学习技术,属于Boosting ...
- 机器学习技法课之Aggregation模型
Courses上台湾大学林轩田老师的机器学习技法课之Aggregation 模型学习笔记. 混合(blending) 本笔记是Course上台湾大学林轩田老师的<机器学习技法课>的学习笔记 ...
- 工业级GBDT算法︱微软开源 的LightGBM(R包正在开发....)
看完一篇介绍文章后,第一个直觉就是这算法已经配得上工业级属性.日前看到微软已经公开了这一算法,而且已经发开python版本,本人觉得等hadoop+Spark这些平台配齐之后,就可以大规模宣传啦~如果 ...
随机推荐
- MyEclipse10.X 的破解过程详细图解
http://wenku.baidu.com/view/423e95056c85ec3a87c2c512.html
- FloatingActionButton增强版,一个按钮跳出多个按钮--第三方开源--FloatingActionButton
FloatingActionButton项目在github上的主页:https://github.com/futuresimple/android-floating-action-button F ...
- Js笔试题之正则表达式
一.复习字符串的传统操作 如何获取一个字符串中的数字字符,并按数组形式输出,如 dgfhfgh254bhku289fgdhdy675gfh 输出[254,289,675] 分析:循环用charAt() ...
- bzoj 2127: happiness
#include<cstdio> #include<iostream> #include<cstring> #define M 100009 #define inf ...
- android程序打包成APK
1.下载ant(从官网上下载没有bin目录,可以直接在百度上搜APACHE-ANT-1.9.4-BIN.ZIP) 2.解压到C盘根目录(也可以是其他盘) 3.修改环境变量 ANT_HOME C: ...
- 快餐问题(dp好题)
Peter最近在R市开了一家快餐店,为了招揽顾客,该快餐店准备推出一种套餐,该套餐由A个 汉堡,B个薯条和C个饮料组成.价格便宜.为了提高产量,Peter从著名的麦当劳公司引进了N条 生产线.所有的生 ...
- 存储过程Oracle(一)
一.简介 存储过程:就是在数据库中创建的一段程序,供别人调用 .其实我感觉跟定义一个方法相似 二.无参存储过程 如下,经典的输出"Hello World"来入门存储过程 创建一个存 ...
- C#编程
C#最完整的webservice实例 http://fyinthesky.blog.163.com/blog/static/3555251720110115227337/ C# WinForm 实践开 ...
- JavaScript中字符串转Json方法小记
例如: JSON字符串:var str1 = '{ "name": "cxh", "sex": "man" }'; JS ...
- Android 读写SD卡的文件
今天介绍一下Android 读写SD卡的文件,要读写SD卡上的文件,首先需要判断是否存在SD卡,方法: Environment.getExternalStorageState().equals(Env ...
