梯度提升方法的特点在于损失函数比较复杂,难以优化。
一般的提升方法的损失函数比较简单。
比如Adaboost中,提升模型是多个弱基学习器的加权和,当基于指数损失函数和前向分步算法优化模型时,最终推导结果相当于:每一步仅需要学习当前基学习器使得所有样本的加权损失最小。
或者在一般提升回归树中,提升模型是多个弱基学习器的和,当基于平方误差损失函数和前向分步算法优化模型时,最终推导结果相当于于:每一步仅需学习当前基学习器使其输出为上一步模型的残差。
而在损失函数比较复杂时,难以优化时,可以利用泰勒展示将损失函数近似展开。
C
(
θ
M
)
=
L
(
y
,
f
M
(
x
)
)
C(\theta_M)=L(y,f_M(x))
C(θM)=L(y,fM(x))
其
中
f
M
(
x
)
=
f
M
−
1
(
x
)
+
T
(
x
;
θ
M
)
其中 f_M(x)=f_{M-1}(x)+T(x;\theta_M)
其中fM(x)=fM−1(x)+T(x;θM)。
C
(
θ
M
)
=
L
(
y
,
f
M
−
1
(
x
)
+
T
(
x
;
θ
M
)
)
C(\theta_M)=L(y,f_{M-1}(x)+T(x;\theta_M))
C(θM)=L(y,fM−1(x)+T(x;θM))
当把代价函数
C
C
C看做
f
M
(
x
)
f_{M}(x)
fM(x)的函数时,记
T
M
=
T
(
x
;
θ
M
)
T_M=T(x;\theta_M)
TM=T(x;θM),则:
C
(
f
M
(
x
)
)
=
C
(
f
M
−
1
(
x
)
+
T
M
)
C(f_{M}(x))=C(f_{M-1}(x)+T_M)
C(fM(x))=C(fM−1(x)+TM)
泰勒近似展开得:
C
(
f
M
−
1
(
x
)
+
T
M
)
=
C
(
f
M
−
1
(
x
)
)
+
∂
C
∂
f
f
=
f
M
−
1
(
x
)
T
M
C(f_{M-1}(x)+T_M) = C(f_{M-1}(x))+\frac{\partial C}{\partial f}_{f=f_{M-1}(x)}T_M
C(fM−1(x)+TM)=C(fM−1(x))+∂f∂Cf=fM−1(x)TM
此时
C
(
f
M
−
1
(
x
)
)
C(f_{M-1}(x))
C(fM−1(x))和
∂
C
∂
f
f
=
f
M
−
1
(
x
)
\frac{\partial C}{\partial f}_{f=f_{M-1}(x)}
∂f∂Cf=fM−1(x)都已知,如果要
C
C
C下降最快,则令:
T
M
=
−
α
∂
C
∂
f
f
=
f
M
−
1
(
x
)
T_M=-\alpha\frac{\partial C}{\partial f}_{f=f_{M-1}(x)}
TM=−α∂f∂Cf=fM−1(x)
即
T
M
T_M
TM与损失函数梯度反向即可。
α
\alpha
α为学习率。
https://blog.csdn.net/youhuakongzhi/article/details/94488888
https://www.cnblogs.com/zhubinwang/p/5170087.html
https://scikit-learn.org/stable/modules/generated/sklearn.ensemble.GradientBoostingRegressor.html