当前位置: 代码迷 >> 综合 >> 什么是残差——一文让你读懂GBDT(梯度提升树) 和 Resnet (残差网络)的原理
  详细解决方案

什么是残差——一文让你读懂GBDT(梯度提升树) 和 Resnet (残差网络)的原理

热度:53   发布时间:2024-01-31 04:08:01.0

残差

残差在数理统计中是指实际观察值与估计值(拟合值)之间的差。在集成学习中可以通过基模型拟合残差,使得集成的模型变得更精确;在深度学习中也有人利用layer去拟合残差将深度神经网络的性能提高变强。这里笔者选了Gradient BoostingResnet两个算法试图让大家更感性的认识到拟合残差的作用机理。

Gradient Boosting

下面的式子时Gradient Boosting的损失函数,其中 。

这里的 意味着最后通过 Gradient Boosting学习出来的模型,而这个最终的模型怎么来呢,参照下方代码大致可以总结为三部:

  • 训练一个基学习器Tree_1(这里采用的是决策树)去拟合data和label。
  • 接着训练一个基学习器Tree_2,输入时data,输出是label和上一个基学习器Tree_1的预测值的差值(残差),这一步总结下来就是使用一个基学习器学习残差
  • 最后把所有的基学习器的结果相加,做最终决策。
    下方代码仅仅做了3步的残差拟合,最后一步就是体现出集成学习的特征,将多个基学习器组合成一个组合模型。

 

from sklearn.tree import DecisionTreeRegressor
tree_reg1 = DecisionTreeRegressor(max_depth=2)
tree_reg1.fit(X, y)y2 = y - tree_reg1.predict(X)
tree_reg2 = DecisionTreeRegressor(max_depth=2)
tree_reg2.fit(X, y2)y3 = y2 - tree_reg2.predict(X)
tree_reg3 = DecisionTreeRegressor(max_depth=2)
tree_reg3.fit(X, y3)
  相关解决方案