机器学习——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

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

相关推荐
唐某人丶1 小时前
教你如何用 JS 实现 Agent 系统(2)—— 开发 ReAct 版本的“深度搜索”
前端·人工智能·aigc
FIT2CLOUD飞致云2 小时前
九月月报丨MaxKB在不同规模医疗机构的应用进展汇报
人工智能·开源
阿里云大数据AI技术2 小时前
【新模型速递】PAI-Model Gallery云上一键部署Qwen3-Next系列模型
人工智能
袁庭新2 小时前
全球首位AI机器人部长,背负反腐重任
人工智能·aigc
机器之心2 小时前
谁说Scaling Law到头了?新研究:每一步的微小提升会带来指数级增长
人工智能·openai
算家计算3 小时前
AI配音革命!B站最新开源IndexTTS2本地部署教程:精准对口型,情感随心换
人工智能·开源·aigc
量子位3 小时前
马斯克周末血裁xAI 500人
人工智能·ai编程
算家计算3 小时前
OpenAI最强编程模型GPT-5-Codex发布!可独立编程7小时,编程效率提升10倍
人工智能·ai编程·资讯
聚客AI4 小时前
🌟大模型为什么产生幻觉?预训练到推理的漏洞全揭秘
人工智能·llm·掘金·日新计划
Juchecar5 小时前
一文讲清 nn.Sequential 等容器类
人工智能