1.GBDT算法流程
设有训练集:Data={(x1,y1),(x2,y2),...,(xN,yN)},yi∈{+1,−1}
- 初始化弱学习器
一般用所有训练样本的标签值的均值
f0(x)=argmincN∑i=1L(yi,h0(x))
- for t=1 to T do
- 计算负梯度:~yi=−[∂L(yi,F(xi))∂F(xi)]F(x)=Ft−1(x),i=1,2,...,N
- 拟合残差得到基学习器
ωt=argminωtN∑i=1(~yi−ht(x;Wt))
αt=argminαt∑i=1NL(yi,ft−1(xi)+αtht(x;Wt))
Ft(x)=Ft−1(xi)+αtht(x;Wt)
2.GBDT回归的流程

- 初始化弱学习器
初始化取所有训练样本标签值的均值,c=1.1+1.3+1.7+1.84=1.475
得到初始学习器:f0(x)=1.475
- 计算负梯度=yi−c,也就是计算残差,因为求导=∂1/2(yi−c)2∂c=c−yi

3.令数据集中的标签值替换为残差

4.遍历回归树中的最佳划分点,两个循环遍历,一层是特征,一层是特征下面的每个切分点
分别计算分裂后的两组数据的平方损失,找到SEl+SEr最小的那个划分节点,(SEl,SEr代表左右两组残差的方差)
所以就是
for 所有特征值
for 所有样本的划分点
计算划分后左右两边的均值mu_l,mu_r
计算左右两边的方差SE_l,SE_r
找到SE_l+SE_r 最小的特征和对应的划分点

上面的案例有两个最小值,随机取一个,选上面的年龄;21
5.依次对上面的左右两个数据集循环上面的1-4步

6.得到分类树

从上面的案例可以知道,GBDT的本质还是CART树,只不过在划分的过程中,将平方和误差损失中的yi替换为了残差

注意事项

3.GBDT分类的流程
同回归树一样,但在第二步中的梯度要改变下,要增加一层sigmoid函数
2. 计算负梯度=yi−sigmoid(c)
因为有
L=−(yilogp+(1−yi)log(1−p))),yi∈{0,1},p=11+e−F(xi)
∂L∂F(x)=yi−11+e−F(xi)
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· .NET10 - 预览版1新功能体验(一)