机器篇——集成学习(六) 细说 GBDT 算法_gbdt 商品成效概率-程序员宅基地

技术标签: 机器学习  AI章  

返回主目录

返回集成学习目录

上一章:机器篇——集成学习(五) 细说 梯度提升(Gradient Boost)算法 

下一章:机器篇——集成学习(七) 细说 XGBoost 算法

 

本小节,细说 GBDT 算法,下一小节细说 XGBoost 算法

 

二. 具体算法

6. GBDT 算法 (Gradient Boosting Decision Tree, GBDT)

    GBDT 算法也是集成学习 Boosting 家族的成员,也是采用迭代弱学习器的方法,但是,弱学习器限定了只能使用 CART 回归树模型

    在 GBDT 的迭代中,假设前一轮迭代得到的强学习器是 \large f_{t - 1}(x),损失函数是 \large L(y_{i}, f_{t - 1}(x)),则本轮迭代的目标是找到一个 CART 回归树模型的弱学习器 \large h_{t}(x),让本轮的损失函数:

               \LARGE L(y, f_{i}(x)) = L(y, f_{t - 1}(x) + h_{t}(x))

    最小。也就是说,本轮迭代找到的决策树,要让样本的损失尽量变得更小。

    (1). GBDT 的负梯度拟合。

     ①. 第 \large t 轮的第 \large i 个样本的损失函数的负梯度表示为:

                \LARGE r_{ti} = - \frac{\partial L(y_{i}, f(x_{i}))}{\partial f(x_{i})} f(x) = f_{t - 1} (x)

     ②. 当损失函数最小,也就是拟合叶子节点最好的输出值 \large C_{tj}

                \LARGE C_{tj} = arg \min_{c} \sum_{x_{i} \in R_{tj}} L(y_{i}, f_{t - 1}(x_{i}) + C)

                \large R_{tj}:为第 \large t 棵回归树对应的叶子节点区域

     ③. 得到本轮的决策树拟合函数

                \LARGE h_{t}(x) = \sum_{j = 1}^{J} C_{tj} I \; \;\;\; (x \in R_{tj})

     ④. 本轮最终得到的强学习器表达式:

                \LARGE f_{t}(x) = f_{t - 1}(x) + \sum_{j = 1}^{J} C_{tj} I \;\;\;\; (x \in R_{tj})

            通过损失函数的负梯度来拟合,可以找到一种通用的拟合损失误差的方法,这样无论是分类问题还是回归问题,通过其损失函数的负梯度拟合,就可以用 GBDT 来解决分类回归问题。区别仅仅在于损失函数不同导致的负梯度不同而已。

 

    (2). GBDT 回归算法

     输入是训练集样本 \large T = \{(x_{1}, y_{1}), (x_{2}, y_{2}), ......, (x_{m}, y_{m})\}

     最大迭代次数 \large T,损失函数 \large L

     输出是强学习器 \large f(x)

     ①. 初始化弱学习器

               \LARGE f_{0}(x) = arg \min_{c} \sum_{i = 1}^{m} L(y_{i}, c)

     ②. 对迭代轮数,\large t = 1, 2, ......., T

      a. 对样本 \large i = 1, 2, ......, m,计算负梯度

                \LARGE r_{ti} = - \frac{\partial L(y_{i}, f(x_{i}))}{\partial f(x_{i})} f(x) = f_{t - 1} (x)

      b. 利用 \large (x_{i}, r_{ti}) \;\;\;\; (i = 1, 2, ......, m) 拟合一棵 CART 回归树,得到第 \large t 棵回归树,其对应的叶子节点区域为 \large R_{tj}\large (j = 1, 2, ......, J),其中 \large J 为回归树 \large t 的叶子节点的个数。 

      c. 对叶子区域 \large (j = 1, 2, ......, J),计算最佳拟合值:

                

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/qq_38299170/article/details/103842720

智能推荐

npm ERR! syscall spawn git-程序员宅基地

文章浏览阅读7k次,点赞2次,收藏3次。在进行npm install 时,有一个项目报下面的错误,其它项目没有报错,分析可能同git有关系,但是git又能正常使用。逐进到项目目录下面,直接使用git bash here这个窗口中,执行npm i,即可成功Lenovo@LAPTOP-DLK5GAMB MINGW64 /d/***/svnfile/dblzvue1$ npm inpm ERR! path gitnpm ERR! code ENOENTnpm ERR! errno ENOENTnpm ERR! syscall spawn _npm err! syscall spawn git

解决Tensorflow2.0出现:AttributeError: module 'tensorflow' has no attribute 'get_default_graph'的问题-程序员宅基地

文章浏览阅读7.4w次,点赞71次,收藏111次。问题描述在使用tensorflow2.0时,遇到了这个问题:AttributeError: module ‘tensorflow’ has no attribute ‘get_default_graph’这个报错的意思是:tensorflow模块没有get_default_graph属性错误原因这是由于Keras API(https://keras.io/)有多个实现,包括原始和参考实..._attributeerror: module 'tensorflow' has no attribute 'get_default_graph

go语言支付宝支付代码_alipay_qzwt#0#bdt_260950542402ed4216b90387565797c4-程序员宅基地

文章浏览阅读3.9k次。func (this*UserController)HandleUserPay() { var appId="2016091800541813" var aliPublicKey = "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAzBr/2fOq6vbfAKiIlR8zyAOV2uOMbyYouV/ScQjuNNAVj+D6RZEd_alipay_qzwt#0#bdt_260950542402ed4216b90387565797c468b35aa6a5759f7ad0d57b

世界上最好的c++ rpc实现基于c++14标准_buttonrpc github-程序员宅基地

文章浏览阅读1.3w次,点赞2次,收藏22次。代码量很少,就两个hpp文件,新手学习好材料。server:#include "buttonrpc.hpp"int foo(int age, int mm){ return age + mm;}int main(){ buttonrpc server; server.as_server(5555); server.bind("foo", foo); server.run()..._buttonrpc github

LTspice raw文件解析工具PyLTSpice-程序员宅基地

文章浏览阅读2k次,点赞5次,收藏12次。  如果我们能解析LTspice仿真生成的波形数据文件,即raw文件,就可以做很多后处理工作了。比如导入Matlab;做数据统计,画直方图(Histogram)等等。  Python就提供了这么一个工具,PyLTSpice。另外在Github上也能下载:Gihub仓库地址。  或者更直接的,装完Python后直接在线安装这个包:(拿Python3.8举例)  装完以后,打开cmd窗口,输入pip install PyLTSpice,回车即可:  另外,如果需要画图,会用到matplotlib包_pyltspice

RadStudio 10.3.3 Rio (Delphi & C++ Builder)及TMS TAdvStringGrid控件安装方法_rad studio 10.3.3 注册码-程序员宅基地

文章浏览阅读4.2k次。目录RadStudio下载及安装TMS Component Pack安装方法安装TMS VCL UI PackRadStudio下载及安装下载地址:https://altd.embarcadero.com/download/radstudio/10.3/delphicbuilder10_3_3_7899_nt.iso注意事项:若下载速度很慢,例如几十kb/s,可尝试在早上7点左右下载,速度..._rad studio 10.3.3 注册码

随便推点

Linux Samba服务匿名配置只读共享及详细讲解_samba linux 和linux 只读-程序员宅基地

文章浏览阅读3.3k次。samba匿名共享1.修改samba服务配置:修改之前先备份配置文件:cp /etc/samba/smb.conf /etc/samba/smb.conf.default删除配置文件:rm -rf /etc/samba/smb.conf创建配置文件: vi /etc/samba/smb.conf​ (1). samba配置文件结构: 以 "节"为单..._samba linux 和linux 只读

关于springcloud中eureka报错com.sun.jersey.api.client.ClientHandlerException: java.net.ConnectException:_eureka exception starting filter [servletcontainer-程序员宅基地

文章浏览阅读486次。首先检查有没有导入eureka的启动器,eureka服务端导入的是一定是spring-cloud-starter-netflix-eureka-server,注意不要写成spring-cloud-starter-netflix-eureka-clienteureka: client: register-with-eureka: <dependency> <groupId>org.springframework.cloud</groupId>_eureka exception starting filter [servletcontainer] com.sun.jersey.api.conta

adobe acrobat pro dc 更新后正常体验使用_isamtenforced-程序员宅基地

文章浏览阅读2.3k次。adobe acrobat pro dc 更新后破解失效怎么解决?文章整理来源于网络,仅供参考和个人学习。[HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Adobe\Adobe Acrobat\DC\Activation]“IsAMTEnforced”=dword:00000001注册表新增这个键值dword32类型,数值1。然后重新用AMTEmu0.9.2激活就行了AMT Emulator 0.9.2.exe 工具:链接:https://pan.baid_isamtenforced

k8s使用port-forward访问集群中的应用程序(只能在执行命令的机器上开放端口)_svc port-forward-程序员宅基地

文章浏览阅读2.4k次。k8s使用port-forward访问集群中的应用程序本文描述了如何使用 kubectl port-forward 访问 Kubernetes 集群中的 Redis Server。这种连接方式在实际进行Debug时非常有效。为Redis创建Deployment和Service转发本地端口到Pod的端口总结为Redis创建Deployment和Service创建 Redis Deployment,YAML文件如下:apiVersion: apps/v1kind: Deployment_svc port-forward

记一次关于Fragment的内存泄漏_madded in fragmentstore 内存泄露-程序员宅基地

文章浏览阅读1.2w次,点赞3次,收藏4次。之前使用单Activity多Fragment架构完成过一个项目,在后期维护时发现一个很严重的问题,很多页面在关闭之后,内存无法被回收,出现了内存泄漏问题。leakcanary显示信息如下:..._madded in fragmentstore 内存泄露

YUV420P格式图像处理分割,复制,合并_两个yuv420p进行合成一个-程序员宅基地

文章浏览阅读8.8k次,点赞2次,收藏19次。首先说明下yuv420的格式下面选自http://blog.csdn.net/jefry_xdz/article/details/7931018提示: 读下面的文字时,希望大家结合图片看,这样更易理解 在YUV420中,一个像素点对应一个Y,一个2X2的小方块对应一个U和V。对于所有YUV420图像,它们的Y值排列是完全相同的,因为只有Y的图像就是灰度图像。YUV420sp_两个yuv420p进行合成一个

推荐文章

热门文章

相关标签