Boost是集成学习方法中的代表思想之一,核心的思想是不断的迭代。boost通常采用改变训练数据的概率分布,针对不同的训练数据分布调用弱学习算法学习一组弱分类器。在多次迭代的过程中,当前次迭代所用的训练数据的概率分布会依据上一次迭代的结果而调整。也就是说训练数据的各样本是有权重的,这个权重本身也会随着迭代而调整。Adaboost(后面补一篇介绍这个的文章吧)在迭代的过程中通过不断调整数据分布的权重来达到提高性能的目的,GBM(Gradient Boosting Machine)则是在迭代的过程中,新的模型建立在之间建立模型损失函数的梯度下降方向上,为什么这么做是有效的,数学语言是最严谨的,让我们从数学的角度出发理解一下。

  从数值优化的角度入手。对于加性模型$F(X|\Theta) $,我们通过优化$\Theta$得到模型的最优解

$$ \theta^* = \mathop{\arg\min}_{\theta} \ \mathrm{L} (\theta).$$

其中,$\mathrm{L}(\theta) = E_(y,x)\mathrm{L}(y,F(X|\Theta))$ ,那么对于$F(X|\Theta) $其最优解为$F^*(x) =F(x|\Theta^*) $ 。由于$F(X|\Theta) $是个加性模型,通常有$P^* = \sum_{i = 0}^m p_i$。在优化P的过程中,对于迭代的第m步骤,我们以前获得了m-1个模型,在计算第m个模型的时候,我们要对前m-1个模型的集成求梯度,$g_m$为求得的梯度如下所示$$g_m=\{g_{jm}\} = \{{\big[\frac{\partial{\phi(P)}}{\partial{P_j}}\big]_{p = p_{(m-1)}}}\}$$其中$$P_{m-1} = \sum_{i=0}^{m-1} P_i$$求出梯度之后,我们更新$$p_m = -\rho_mg_m$$其中,$$\rho_m = \mathop{\arg\min}_\rho\ L(P_{m-1}-\rho{g_m})$$

简单整理一下,对于加性模型$F(X|\Theta) $,我们通过对损失函数$L(\theta)$求得$\theta$沿着最优解下降的方向$g_m$,为了确定下降的步长,也就是$\rho$,我们构造一个关于$P_{m-1}+p_m$的损失函数,其中$p_m = -\rho{g_m}$。确定了梯度$g_m$以及在该梯度下的步长$\rho$,$p_m$也就求解出来了。

  上述的推导过程中,建立在训练的数据集是连续无穷的情况下,对于有限的数据集合在计算$g_m$的过程中,求出的最优解$F^*(X)$对应的点不一定是我们训练集中的点。简单来说就是对于前m-1个模型计算出来的梯度对于有限的训练数据集,并不能直接作为新的基学习器的梯度方向。为了解决这个问题,论文预先假设一个先验分布$h(x_i;a)$,通过最小化损失函数的方式让$h(x_i;a)$逼近预先计算好的梯度$g_m$,论文中用的损失函数是MSE,过程如下所示$$a_m=\mathop{\arg\min}_{a,\beta} \sum_{i=1}^N[{-g_m(x_i)-\beta{h(x_i;a)}}]^2 $$

整体的GBM算法流程如下所示

第三步对应的便是求前m-1个模型的梯度, 第四步根据球出来的梯度通过最小化损失函数的方法让基模型(h(x;a))逼近梯度下降的方向,第五步也是通过最小化集成的函数预测结果与label的损失也确定第k个基模型的权重。

紧扣最小化似然函数这个过程就不难理解这么做的缘由了。

2019.9.7 在实际理解GBM的调参过程中发现对CART如何学习以及

如何影响CART的参数的学习并没有理解清楚.
首先要弄清楚CART学习的参数究竟是什么,这里指的是最优分裂属性以及分裂属性值的选择,外界的干预通过label影响最优划分属性的选择,具体的介绍见:https://blog.csdn.net/niuniuyuh/article/details/76922210
 
 



















论文笔记:GREEDY FUNCTION APPROXIMATION: A GRADIENT BOOSTING MACHINE的更多相关文章

  1. Greedy Function Approximation:A Gradient Boosting Machine

    https://statweb.stanford.edu/~jhf/ftp/trebst.pdf page10 90% to 95% of the observations were often de ...

  2. 论文笔记:LightGBM: A Highly Efficient Gradient Boosting Decision Tree

    引言 GBDT已经有了比较成熟的应用,例如XGBoost和pGBRT,但是在特征维度很高数据量很大的时候依然不够快.一个主要的原因是,对于每个特征,他们都需要遍历每一条数据,对每一个可能的分割点去计算 ...

  3. Tree - Gradient Boosting Machine with sklearn source code

    This is the second post in Boosting algorithm. In the previous post, we go through the earliest Boos ...

  4. Python中Gradient Boosting Machine(GBM)调参方法详解

    原文地址:Complete Guide to Parameter Tuning in Gradient Boosting (GBM) in Python by Aarshay Jain 原文翻译与校对 ...

  5. 机器学习--Gradient Boosting Machine(GBM)调参方法详解

    一.GBM参数 总的来说GBM的参数可以被归为三类: 树参数:调节模型中每个决策树的性质 Boosting参数:调节模型中boosting的操作 其他模型参数:调节模型总体的各项运作 1.树参数 现在 ...

  6. 机器学习中的数学(3)-模型组合(Model Combining)之Boosting与Gradient Boosting

    版权声明: 本文由LeftNotEasy发布于http://leftnoteasy.cnblogs.com, 本文可以被全部的转载或者部分使用,但请注明出处,如果有问题,请联系wheeleast@gm ...

  7. 模型组合(Model Combining)之Boosting与Gradient Boosting

    版权声明: 本文由LeftNotEasy发布于http://leftnoteasy.cnblogs.com, 本文可以被全部的转载或者部分使用,但请注明出处,如果有问题,请联系wheeleast@gm ...

  8. 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 ...

  9. How to Configure the Gradient Boosting Algorithm

    How to Configure the Gradient Boosting Algorithm by Jason Brownlee on September 12, 2016 in XGBoost ...

随机推荐

  1. CSP内容安全策略总结及如何抵御 XSS 攻击

    跨域脚本攻击 XSS 是最常见.危害最大的网页安全漏洞.为了防止它们,要采取很多编程措施,非常麻烦.很多人提出,能不能根本上解决问题,浏览器自动禁止外部注入恶意脚本?这就是"网页安全政策&q ...

  2. javascript轮询请求服务器

    抛出问题:web浏览器如何与服务保持通信? 方法一:Ajax轮询 方法二:EventSource轮询 方法三:websocket保持长连接 下面的解决方案是,Ajax轮询与EventSource轮询的 ...

  3. Mac版微信无法安装之始末

    前言 Mac版微信安装不了...纠结了一周时间 ̄□ ̄||... 今天终于可以登录了(虽然还是没有安装到电脑上,但可以使用了) 因为之前也查了很多,有人遇到,但是没有可以解决我这个问题的方法, 浪费了很 ...

  4. Redis的常用JavaAPI(Jedis)实现

    一.  pom依赖: <!-- https://mvnrepository.com/artifact/redis.clients/jedis --><dependency> & ...

  5. Spring Cloud Eureka配置文件详解

    本篇内容用来说明Eureka 常用配置的含义. 以下配置都是以 eureka.server 开头: 参数 描述 备注 eureka.server.eviction-interval-timer-in- ...

  6. EasyDSS高性能RTMP、HLS(m3u8)、HTTP-FLV、RTSP流媒体服务器前端源码重构(六)- webpack-dev-server 自适应支持手机端访问

    关于EasyDSS EasyDSS商用流媒体服务器解决方案是一套集流媒体点播.转码与管理.直播.录像.检索.时移回看于一体的一套完整的商用流媒体服务器解决方案,EasyDSS高性能RTMP流媒体服务器 ...

  7. Excel统计发票和金税盘核对新版

    之前的博文:如何使用Excel表格状态栏动态查看统计,介绍了如何利用excel一拉就可以进行统计,和金税盘的月度统计统计.由于最近年月日显示成方框,所以作废了发票和对冲了上月的一张发票,导致这个月出现 ...

  8. [LeetCode] 505. The Maze II 迷宫 II

    There is a ball in a maze with empty spaces and walls. The ball can go through empty spaces by rolli ...

  9. 超好用的K8s诊断工具:kubectl-debug

    在K8s环境部署应用后,经常遇到需要进入pod进行排错.除了查看pod logs和describe方式之外,传统的解决方式是在业务pod基础镜像中提前安装好procps.net-tools.tcpdu ...

  10. Oracle Spatial分区应用研究之三:县市省不同分区粒度的效率比较

    在<Oracle Spatial分区应用研究之一:分区与分表查询性能对比>中已经说明:按县分区+全局空间索引效率要优于按县分区+本地空间索引,因此在该实验报告中,将不再考虑按县分区+本地空 ...