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之 ...
随机推荐
- linux磁盘空间满了 但是没有大文件
很常见的一个问题 linux磁盘空间满了 但是没有大文件 解决思路: 1.用df 检查发现/根目录可用空间为0 [root@/]#df -h 2.用du检查发现各目录占用的空间都很少,有约3G的空间莫 ...
- httprunner运行报错问题:base url missed
在httprunner运行报错问题 代码书写: 当此段yml文件运行时会出现一下错误 在出现此错误时,为base_url的格式出现错误,只需修改base_url的位置 修改位置后运行yml文件 运行成 ...
- 《linux就该这么学》课堂笔记04 常用命令cat、mor...tar、find
本节命令汇总 命令 说明 格式 常用参数 实例 备注 cat 查看纯文本文件(内容较少) cat [选项] 文件名称 -n 显示行号 cat -n install-setup-ks.cfg 查看ins ...
- 项目Beta冲刺--5/7
项目Beta冲刺--5/7 作业要求 这个作业属于哪个课程 软件工程1916-W(福州大学) 这个作业要求在哪里 项目Beta冲刺 团队名称 基于云的胜利冲锋队 项目名称 云评:高校学生成绩综合评估及 ...
- SparkStreaming 性能、稳定、容错与语义
怎样提高Spark Streaming的性能 1.创建多个接收器 待定:: 2.调节每一个batch interval的数据块的数量,其实就是调整上面第二个问题中提到的配置spark.stream ...
- 非阻塞IO的实现方式
1.状态轮询: 2.状态订阅: 3.完成回掉:
- MongoDB Shell db.runCommand
db.runCommand()示例 我们使用MongoDB Shell登录到mongos,添加Shard节点 [root@100 shard]# /usr/local/mongoDB/bin/mong ...
- public private protected 修饰符整理
1.public定义的类或方法:任何类的实例都可以访问 2.private定义的属性和方法:只能该类内部使用:如果子类要访问父类的private属性:必须实现__set()和__get()方法: 3. ...
- from表格
目录 from 功能: 表单元素 表单工作原理: input 属性说明: select标签 属性说明: label标签 属性说明: from 功能: 表单用于向服务器传输数据,从而实现用户与Web服务 ...
- 一起学Makefile(三)
makefile工具箱 complicated项目的构建 文件结构如下: 文件内容如下: 项目依赖关系: gcc编译出可执行文件的过程包含了两个过程,编译和链接. makefile如下: 运行结果: