机器学习——boosting之GBDT

现在要开始重点关注名字了,名字透漏了很多信息!名字暗藏线索!

GBDT,Gradient Boosting Decision Tree: 梯度提升决策树

果然信息很丰富

梯度:意味着计算有迭代递进关系,但还不明确是怎么迭代递进的

提升:意味着前向分布式+加法模型,并且分类器之间是有相关提升的

决策树:CART决策树、C4.5、忘记名字了...

em...还是要再深挖深挖,小小的boosting,挖呀挖呀挖呀挖。。。

经过推导。。。发现,我的GBDT回归,实际就是上一篇提升树的二叉回归树...

看来可以省点儿功夫,不写代码,但可以稍微推导一下

首先,明确回归问题采用平方损失函数: L o s s ( y , f ( x ) ) = ( y − f ( x ) ) 2 Loss(y,f(x)) =(y-f(x))^2 Loss(y,f(x))=(y−f(x))2

其中,f(x) 是强分类器,且当前强分类器 f m = f m − 1 + T m ( x , θ m ) f_m = f_{m-1}+T_m(x,θ_m) fm=fm−1+Tm(x,θm)

问题来了,我们现在要求Loss最小,原本是可以直接使Loss对x求导,进而求出θ,得到强分类器的

但书上说了,有时候Loss对x求导,是无法实现的,说实话,我不知道为什么

不过,不妨碍我对GBDT进行推导

首先,梯度,是想要Loss成梯度逐步下降,那就采用让Loss在 f ( x ) = f m − 1 ( x ) f(x)=f_{m-1}(x) f(x)=fm−1(x)处进行一阶泰勒展开

则有 L o s s ( y , f ( x ) ) = L o s s ( y , f m − 1 ( x ) ) + ə L ( y , f m − 1 ( x ) ) ə f m − 1 ( x ) ∗ [ f ( x ) − f m − 1 ( x ) ] Loss(y,f(x)) = Loss(y,f_{m-1}(x))+\frac{ə_{L(y,f_{m-1}(x))}}{ə_{f_{m-1}(x)}}*[f(x)-f_{m-1}(x)] Loss(y,f(x))=Loss(y,fm−1(x))+əfm−1(x)əL(y,fm−1(x))∗[f(x)−fm−1(x)]

令 f ( x ) = f m ( x ) f(x) = f_m(x) f(x)=fm(x),则有

L ( y , f m ( x ) ) = L ( y , f m − 1 ( x ) ) + ə L ( y , f m − 1 ( x ) ) ə f m − 1 ( x ) ∗ [ f m ( x ) − f m − 1 ( x ) ] L(y,f_m(x)) = L(y,f_{m-1}(x))+\frac{ə_{L(y,f_{m-1}(x))}}{ə_{f_{m-1}(x)}}*[f_m(x)-f_{m-1}(x)] L(y,fm(x))=L(y,fm−1(x))+əfm−1(x)əL(y,fm−1(x))∗[fm(x)−fm−1(x)]

Δ L o s s = L ( y , f m ( x ) ) − L ( y , f m − 1 ( x ) ) = ə L ( y , f m − 1 ( x ) ) ə f m − 1 ( x ) ∗ [ f m ( x ) − f m − 1 ( x ) ] ΔLoss = L(y,f_m(x)) - L(y,f_{m-1}(x))=\frac{ə_{L(y,f_{m-1}(x))}}{ə_{f_{m-1}(x)}}*[f_m(x)-f_{m-1}(x)] ΔLoss=L(y,fm(x))−L(y,fm−1(x))=əfm−1(x)əL(y,fm−1(x))∗[fm(x)−fm−1(x)]

其中 [ f m ( x ) − f m − 1 ( x ) ] = T ( x , θ m ) [f_m(x)-f_{m-1}(x)] = T(x,θ_m) [fm(x)−fm−1(x)]=T(x,θm)

要使下一次迭代时,Loss降低,则需要ΔLoss<0,那么对应的 ə L ( y , f m − 1 ( x ) ) ə f m − 1 ( x ) ∗ T ( x , θ m ) \frac{ə_{L(y,f_{m-1}(x))}}{ə_{f_{m-1}(x)}}*T(x,θ_m) əfm−1(x)əL(y,fm−1(x))∗T(x,θm)<0

那么,当 T ( x , θ m ) = − ə L ( y , f m − 1 ( x ) ) ə f m − 1 ( x ) T(x,θ_m)=-\frac{ə_{L(y,f_{m-1}(x))}}{ə_{f_{m-1}(x)}} T(x,θm)=−əfm−1(x)əL(y,fm−1(x))时,就可以保证 ə L ( y , f m − 1 ( x ) ) ə f m − 1 ( x ) ∗ T ( x , θ m ) \frac{ə_{L(y,f_{m-1}(x))}}{ə_{f_{m-1}(x)}}*T(x,θ_m) əfm−1(x)əL(y,fm−1(x))∗T(x,θm)<0

因此, T ( x , θ m ) = − ə L ( y , f m − 1 ( x ) ) ə f m − 1 ( x ) = ə ( y − f m − 1 ( x ) ) 2 ə f m − 1 ( x ) T(x,θ_m)=-\frac{ə_{L(y,f_{m-1}(x))}}{ə_{f_{m-1}(x)}}=\frac{ə_{(y-f_{m-1}(x))^2}}{ə_{f_{m-1}(x)}} T(x,θm)=−əfm−1(x)əL(y,fm−1(x))=əfm−1(x)ə(y−fm−1(x))2

为了求解简洁美观,可以 令 L o s s 为 1 2 ( y − f ( x ) ) 2 令Loss为\frac{1}{2}(y-f(x))^2 令Loss为21(y−f(x))2

这样 T ( x , θ m ) = − ə L ( y , f m − 1 ( x ) ) ə f m − 1 ( x ) = 1 2 ə ( y − f m − 1 ( x ) ) 2 ə f m − 1 ( x ) = y − f m − 1 ( x ) T(x,θ_m)=-\frac{ə_{L(y,f_{m-1}(x))}}{ə_{f_{m-1}(x)}}=\frac{\frac{1}{2}ə_{(y-f_{m-1}(x))^2}}{ə_{f_{m-1}(x)}}=y-f_{m-1}(x) T(x,θm)=−əfm−1(x)əL(y,fm−1(x))=əfm−1(x)21ə(y−fm−1(x))2=y−fm−1(x)

哦!这不就是残差嘛 r = y − f m − 1 ( x ) r = y-f_{m-1}(x) r=y−fm−1(x) ,相当于每个新的弱分类器(准确来说,应该是基函数)都应该尽可能地去拟合残差

所以啊!!!!实际上一轮的提升树,本质上就是GBDT

不管,就先这么确定,以后打脸再说...好困

相关推荐
失散1318 分钟前
深度学习——03 神经网络(2)-损失函数
人工智能·深度学习·神经网络·损失函数
商业讯1 小时前
大模型驱动的服务革命:2025智能客服机器人选型与落地路径
人工智能·机器人
mortimer2 小时前
Hugging Face 下载模型踩坑记:从符号链接到网络错误
人工智能·python·ai编程
一株月见草哇5 小时前
Matlab(4)
人工智能·算法·matlab
IMER SIMPLE5 小时前
人工智能-python-机器学习-线性回归与梯度下降:理论与实践
人工智能·python·机器学习
lxmyzzs5 小时前
【图像算法 - 12】OpenCV-Python 入门指南:图像视频处理与可视化(代码实战 + 视频教程 + 人脸识别项目讲解)
人工智能·opencv·计算机视觉
hans汉斯6 小时前
基于深度学习的苹果品质智能检测算法研究
人工智能·深度学习·算法
2401_831896036 小时前
深度学习(5):激活函数
人工智能·深度学习
mit6.8246 小时前
[Robotics_py] 机器人运动模型 | `update`函数 | 微积分&矩阵
人工智能·python·算法
有才不一定有德6 小时前
GPT-5 提示词指南核心技巧总结
人工智能·chatgpt·开源