GBDT学习笔记
GBDT(Gradient Boosting Decision Tree,Friedman,1999)算法自提出以来,在各个领域广泛使用。从名字里可以看到,该算法主要涉及了三类知识,Gradient梯度、Boosting集成算法和 Decision Tree决策树。
该算法是GREEDY FUNCTION APPROXIMATION A GRADIENT BOOSTING MACHINE一文提出来的,它是一种基于 Gradient 的 Boosting Ensemble 模型。该算法底层基于 CART(GBDT 主要基于回归树) 和函数空间的梯度降算法,除了具有树模型的可解释性强、有效处理混合类型的特征、伸缩不变性(不需要对数据标准化)、对缺失值鲁棒等优点,还具有预测能力强、稳定性好等优势。相比于它的后继算法 XGboost/LightGBM , GBDT 只要求模型损失函数一阶可导,凸或非凸都适用;而 XGboost/LightGBM 对损失函数的要求更为苛刻,必须一阶二阶都可导,而且要求损失函数为严格的凸函数。
GBDT 顾名思义,其基本原理包括两个核心算法思想,一个是加性增强;另一个是梯度增强。
加法模型:
最终的分类器函数形式如下:

其中,第t颗回归树,其对应的叶节点区域
。其中J为叶子节点的个数。
针对每一个叶子节点里的样本,我们求出使损失函数最小,也就是拟合叶子节点最好的的输出值
如下:

梯度增强:
大牛Freidman提出了用损失函数的负梯度来拟合本轮损失的近似值,进而拟合一个CART回归树。第t轮的第i个样本的损失函数的负梯度表示为

利用
可以拟合一颗CART回归树,得到了第t颗回归树,其对应的叶节点区域
。其中J为叶子节点的个数。
GBDT算法:
1、回归算法
A. GBDT 回归算法在了解其基本原理之后,我们看看 GBDT 用于回归和分类的具体算法。在回归算法中,典型的损失函数为 MSE 损失

那么可得,在实际训练迭代过程中,在训练第 t 棵树的时候,我们需要将拟合的目标变量变为
,可以看到新的目标变量即是样本的原始目标变量和截止到上一时刻模型预测输出的差值,也就是残差。
2、分类算法
GBDT 用于分类场景的时候,其核心是如何将分类问题转化为回归问题。我们以多分类的基础,阐述 GBDT 在分类中的算法过程。
假设类别数量为 K ,经过 T 轮迭代,得到 T*K 棵回归树。即在每一轮迭代的过程中,是针对样本 X 每个可能的类都训练一个分类回归树,需要建立 K 棵 1 vs. All 的回归树。
多分类中,使用的损失函数为交叉熵

也就是说,在每一轮迭代的过程中,需要建立 K 棵 1 vs. All 的回归树,且需要将叶子节点的输出(截止到 t 时刻的第 k 棵树的累积值)转化为概率,使用 Softmax 来计算

上式等价于

相比于 GBDT 回归,在分类的时候,树的输出再经过一次变换后,才进行损失函数的计算

即每个样本在第 t 轮中的第 k 树的新的目标变量, 和特征向量一起构成样本。这样每一轮的迭代中,就可以拟合 k 棵回归树。新形成的k棵树,求解损失函数最小的式子如下,其中
,则:

上式子难以求解,叶子节点对应的预测值(或者叫权重)可以通过一次 Newton-Raphson 操作来计算:

算法如下:


https://www.sohu.com/a/227107019_505779
https://www.cnblogs.com/pinard/p/6140514.html
这篇有个例子,https://www.cnblogs.com/ModifyRong/p/7744987.html
这篇是原文翻译,https://www.cnblogs.com/bentuwuying/p/6667267.html
GBDT学习笔记的更多相关文章
- 学习笔记之机器学习(Machine Learning)
机器学习 - 维基百科,自由的百科全书 https://zh.wikipedia.org/wiki/%E6%9C%BA%E5%99%A8%E5%AD%A6%E4%B9%A0 机器学习是人工智能的一个分 ...
- 概率图模型学习笔记:HMM、MEMM、CRF
作者:Scofield链接:https://www.zhihu.com/question/35866596/answer/236886066来源:知乎著作权归作者所有.商业转载请联系作者获得授权,非商 ...
- CTR学习笔记&代码实现1-深度学习的前奏LR->FFM
CTR学习笔记系列的第一篇,总结在深度模型称王之前经典LR,FM, FFM模型,这些经典模型后续也作为组件用于各个深度模型.模型分别用自定义Keras Layer和estimator来实现,哈哈一个是 ...
- CTR预估模型演变及学习笔记
[说在前面]本人博客新手一枚,象牙塔的老白,职业场的小白.以下内容仅为个人见解,欢迎批评指正,不喜勿喷![握手][握手] [再啰嗦一下]如果你对智能推荐感兴趣,欢迎先浏览我的另一篇随笔:智能推荐算法演 ...
- js学习笔记:webpack基础入门(一)
之前听说过webpack,今天想正式的接触一下,先跟着webpack的官方用户指南走: 在这里有: 如何安装webpack 如何使用webpack 如何使用loader 如何使用webpack的开发者 ...
- PHP-自定义模板-学习笔记
1. 开始 这几天,看了李炎恢老师的<PHP第二季度视频>中的“章节7:创建TPL自定义模板”,做一个学习笔记,通过绘制架构图.UML类图和思维导图,来对加深理解. 2. 整体架构图 ...
- PHP-会员登录与注册例子解析-学习笔记
1.开始 最近开始学习李炎恢老师的<PHP第二季度视频>中的“章节5:使用OOP注册会员”,做一个学习笔记,通过绘制基本页面流程和UML类图,来对加深理解. 2.基本页面流程 3.通过UM ...
- 2014年暑假c#学习笔记目录
2014年暑假c#学习笔记 一.C#编程基础 1. c#编程基础之枚举 2. c#编程基础之函数可变参数 3. c#编程基础之字符串基础 4. c#编程基础之字符串函数 5.c#编程基础之ref.ou ...
- JAVA GUI编程学习笔记目录
2014年暑假JAVA GUI编程学习笔记目录 1.JAVA之GUI编程概述 2.JAVA之GUI编程布局 3.JAVA之GUI编程Frame窗口 4.JAVA之GUI编程事件监听机制 5.JAVA之 ...
随机推荐
- Httpd服务入门知识-https(http over ssl)安全配置
Httpd服务入门知识-https(http over ssl)安全配置 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.SSL会话的简化过程 ()客户端发送可供选择的加密方式, ...
- VS创建C工程
打开VS编辑器: 填写项目名称,控制项目位置,创建: 在源文件中添加新项: 填写文件名称,修改后缀: 编写一个简单的hello word编译看看windows环境支持如何:
- 分享stl sort函数坑点导致coredump问题
在<Effective STL> 的条款21中就有讨论:永远让比较函数对相同元素返回false! 也就是说在实现stl sort函数自定义比较器时,一定要满足这种严格弱序化的问题.
- vsftp部署
安装 yum install -y vsftpd systemctl enable vsftpd.service systemctl start vsftpd.service systemctl st ...
- Java Excel 导入导出(一)
本文主要描述通过java实现Excel导入导出 一.读写Excel三种常用方式 1.JXL——Java Excel开放源码项目:读取,创建,更新 2.POI——Apache POI ,提供API给Ja ...
- Hive架构与工作原理
组成及作用: 用户接口:ClientCLI(hive shell).JDBC/ODBC(java访问hive).WEBUI(浏览器访问hive) 元数据:Metastore 元数据包括:表名.表所属的 ...
- hbase与Hive的集成
1 HBase与Hive的对比 1.Hive (1) 数据仓库 Hive的本质其实就相当于将HDFS中已经存储的文件在Mysql中做了一个双射关系,以方便使用HQL去管理查询. (2) 用于数据分析. ...
- node.js – 服务器端的客户端证书验证,DEPTH_ZERO_SELF_SIGNED_CERT错误
我正在使用节点0.10.26并尝试建立与客户端验证的https连接. 服务器代码: var https = require('https'); var fs = require('fs'); proc ...
- (10)树莓派 vim编辑器使用
进去后 1点击 insert 插入数据 2 ctrl+alt+c 粘贴内容 或者 手动敲入代码 3 ctrl+v 保存 4 :wq 保存退出 5 回车
- 11.07图论水题Test
11.07图论水题Test 题目 描述 做法 \(BSOJ6378\) 在\(i\)位置可以到\(i+a_i\)或\(i+b_i\)求\(1\rightarrow n\)字典序最小路径 判可达性后贪心 ...