集成机器学习6—GBM

1 Boosting的一般框架

1.初始化 f 0 ( x ) f_0(x) f0(x)
2.for m = 1 : M do
   ∙ \bullet 找一个弱学习器 ϕ m ( x ) \phi_m(\mathbf x) ϕm(x),使得 ϕ m ( x ) \phi_m(\mathbf x) ϕm(x)能改进 f m − 1 ( x ) f_{m-1}(\mathbf x) fm1(x)
   ∙ \bullet 更新 f m ( x ) = f m − 1 ( x ) + α m ϕ m ( x ) f_m(\mathbf x) = f_{m-1}(\mathbf x) + \alpha_m\phi_m(\mathbf x) fm(x)=fm1(x)+αmϕm(x)
3. return f ( x ) = f M ( x ) f(x) = f_M(\mathbf x) f(x)=fM(x)

2 Gradient Boosting

∙ \bullet 目标:损失函数 J ( f ) = ∑ i = 1 N L ( f ( x i ) , y i ) J(f) = \sum_{i=1}^{N} L(f(\mathbf x_i), y_i) J(f)=i=1NL(f(xi),yi)最小
∙ \bullet 若已有 f m − 1 ( x ) f_{m-1}(\mathbf x) fm1(x),如何在 f m − 1 ( x ) f_{m-1}(\mathbf x) fm1(x)的基础上改进 f ( x ) f(\mathbf x) f(x)
∙ \bullet 梯度下降: f m ( x ) = f m − 1 ( x ) − η ∂ J ( f ) ∂ f ( x ) ∣ f ( x ) = f m − 1 ( x ) f_m(\mathbf x) = f_{m-1}(\mathbf x) - \eta\frac{\partial J(f)}{\partial f(x)}|_{f(\mathbf x) = f_{m-1}(\mathbf x)} fm(x)=fm1(x)ηf(x)J(f)f(x)=fm1(x)
∙ \bullet 对比: f m ( x ) = f m − 1 + α m ϕ m ( x ) f_m(\mathbf x) = f_{m-1} + \alpha_m\phi_m(\mathbf x) fm(x)=fm1+αmϕm(x)
f f f代表的是要求的模型, f m f_m fm代表第m轮要求的模型。
以上代表的思想:用弱学习器来预测目标函数的负梯度。前边这句话很明确,但是应如何来预测目标函数的负梯度呢?此处,及后边章节,老师也没有很细的讲。注意:梯度下降优化的是参数,所以迭代过程的公式是 w n e w = w o l d − η ∇ w_{new} = w_{old} - \eta \nabla wnew=woldη

3 Gradient Boosting Algorithm在这里插入图片描述

r m , i r_{m,i} rm,i是梯度,也可以理解为残差。倒数第二个点号含义:用 ϕ \phi ϕ拟合 r m , i r_{m,i} rm,i

4 AdaBoost as Gradient Boosting

∙ \bullet 将指数损失 L ( f ( x ) , y ) = e x p ( − y f ( x ) ) L(f(\mathbf x),y) = exp(-yf(x)) L(f(x),y)=exp(yf(x))代入,
∙ \bullet J ( f ) = ∑ i = 1 N L ( f ( x i ) , y i ) J(f) = \sum_{i=1}^{N}L(f(\mathbf x_i), y_i) J(f)=i=1NL(f(xi),yi)
∙ \bullet ∂ J ( f ) ∂ f = ∂ [ ∑ i = 1 N e x p ( − y i f ( x i ) ) ] ∂ f = ∑ i = 1 N y i e x p ( − y i f ( x i ) ) \frac{\partial J(f)}{\partial f} = \frac{\partial [\sum_{i=1}^{N}exp(-y_if(\mathbf x_i))]}{\partial f} = \sum_{i=1}^{N}y_iexp(-y_if(\mathbf x_i)) fJ(f)=f[i=1Nexp(yif(xi))]=i=1Nyiexp(yif(xi))
∙ \bullet 第m步,负梯度为: − ∂ J ( f ) ∂ f ∣ f = f m − 1 = ∑ i = 1 N y i e x p ( − y i f m − 1 ( x i ) ) -\frac{\partial J(f)}{\partial f}|_{f=f_{m-1}} = \sum_{i=1}^{N}y_iexp(-y_if_{m-1}(\mathbf x_i)) fJ(f)f=fm1=i=1Nyiexp(yifm1(xi))
上一个步骤中,PPT在 e x p ( − y i f m − 1 ( x i ) ) exp(-y_if_{m-1}(\mathbf x_i)) exp(yifm1(xi))的底部画了一个向下的大括号,大括号地下写的是 w m , i w_{m,i} wm,i,表达式右边用红色字体写的AdaBoost中的样本权重(下面有截图),代表的含义可能这部分可以看作是样本权重 w m , i w_{m,i} wm,i,但无法理解为什么?
∙ \bullet 弱学习器 ϕ m ( x ) \phi_m(\mathbf x) ϕm(x)要尽可能拟合负梯度,则 ϕ m ( x i ) \phi_m(\mathbf x_i) ϕm(xi)尽可能与 y i y_i yi同号(预测正确),即最佳的 ϕ m \phi_m ϕm为错误率最小的弱分类器(每个样本的权重为 w m , i w_{m,i} wm,i)
在这里插入图片描述
∙ \bullet 以下通过另 ∂ J ( f ) ∂ α m = 0 \frac{\partial J(f)}{\partial \alpha_m} = 0 αmJ(f)=0,得到 α m = 1 2 l o g 1 − ε m ϵ m \alpha_m = \frac{1}{2} log \frac{1-\varepsilon_m}{\epsilon_m} αm=21logϵm1εm这部分能看懂,但将 e x p ( − y i f m − 1 ( x i ) ) exp(-y_if_{m-1}(\mathbf x_i)) exp(yifm1(xi)) w m , i w_{m,i} wm,i代替的那一步不是很明白,上边也遇到过这样的替代,那里就已经不明白了。
在这里插入图片描述在这里插入图片描述通过改变样本权重得方式来推导AdaBoost表达式
VS
通过梯度提升这样一般性得方法推导AdaBoost

这两种方法得到得结果是一样的。

5 Gradient Boosting—其他损失函数

∙ \bullet 指数损失对离群点(outliers)比较敏感,而且也不是任何二值变量的概率密度取log后的表示。
∙ \bullet 因此另一种选择是损失函数取负log似然损失,得到logitBoost。
∙ \bullet 对回归问题,损失函数可取L2损失,得到L2boosting。

老师:AdaBoost为什么不常用,因为对离群点比较敏感,不支持概率输出(理论上就不支持)。所以,AdaBoost在推导的意义上很重要,但用的时候可能就用logitBoost。
只要损失函数确定,就能用Gradient Boosting的方式推导,就能得到对应的Boost。

6 L2Boosting (通过L2损失推到Boosting)在这里插入图片描述

7 Shrinkage

在这里插入图片描述如果没有 η \eta η,那么就是太贪心了。梯度下降本身也是一种贪心算法。如果 η \eta η特别小,那就意味着需要更多的弱学习器。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值