Gradient Boosting的重要代表有GBDT,它是通过不断改进估算来实现的,即逐次估值进行逼近
GBDT算法
Gradient Boosting的重要代表有GBDT,它是通过不断改进估算来实现的,下面以简单情况来描述其思路。
设训练集为 D = { x i , y i } i = 1 m D=\{\boldsymbol{x}_i,y_i\}_{i=1}^m D={xi,yi}i=1m,其中, y i y_i yi为连续型,即为回归问题,对于二分类问题取 y i y_i yi为属于正例的概率即可。
第0次估值(即初始化):
- 数据集 D D D中所有样本 x i \boldsymbol{x}_i xi: y ^ i 0 = 1 m ∑ i = 1 m y i \hat{y}_i^0=\frac{1}{m}\sum_{i=1}^my_i y^i0=m1∑i=1myi(常数)。
- 推广到所有的
x
\boldsymbol{x}
x:
F
0
(
x
)
=
1
m
∑
i
=
1
m
y
i
F_0(\boldsymbol{x})=\frac{1}{m}\sum_{i=1}^my_i
F0(x)=m1∑i=1myi。
这时,所有样本的预测值都是一样的,显然不靠谱,好在它只是个初始化。 数据集 D D D中样本 x i \boldsymbol{x}_i xi的残差为: ε i 1 = y i − y ^ i 0 {\varepsilon}_i^1=y_i-\hat{y}_i^0 εi1=yi−y^i0,形成数据集 D 1 = { x i , ε i 1 } i = 1 m D_1=\{\boldsymbol{x}_i,{\varepsilon}_i^1\}_{i=1}^m D1={xi,εi1}i=1m,在 D 1 D_1 D1上使用CART树【西瓜书第4.2.3节】进行回归,学习得到 h 1 ( x ) h_1(\boldsymbol{x}) h1(x)。
第1次估值:
- 对任意的 x \boldsymbol{x} x: F 1 ( x ) = F 0 ( x ) + h 1 ( x ) F_1(\boldsymbol{x})=F_0(\boldsymbol{x})+h_1(\boldsymbol{x}) F1(x)=F0(x)+h1(x)(对上次的估值用残差校正)。
- 数据集 D D D中样本 x i \boldsymbol{x}_i xi: y ^ i 1 = F 1 ( x i ) \hat{y}_i^1=F_1(\boldsymbol{x}_i) y^i1=F1(xi)。
这时,数据集 D D D中样本 x i \boldsymbol{x}_i xi的残差为: ε i 2 = y i − y ^ i 1 {\varepsilon}_i^2=y_i-\hat{y}_i^1 εi2=yi−y^i1,形成数据集 D 2 = { x i , ε i 2 } i = 1 m D_2=\{\boldsymbol{x}_i,{\varepsilon}_i^2\}_{i=1}^m D2={xi,εi2}i=1m,在 D 2 D_2 D2上使用CART树学习得到 h 2 ( x ) h_2(\boldsymbol{x}) h2(x)。
第2次估值:
- 对任意的 x \boldsymbol{x} x: F 2 ( x ) = F 1 ( x ) + h 2 ( x ) F_2(\boldsymbol{x})=F_1(\boldsymbol{x})+h_2(\boldsymbol{x}) F2(x)=F1(x)+h2(x)(对上次的估值用残差校正)。
- 数据集 D D D中样本 x i \boldsymbol{x}_i xi: y ^ i 2 = F 2 ( x i ) \hat{y}_i^2=F_2(\boldsymbol{x}_i) y^i2=F2(xi)。
这时,数据集 D D D中样本 x i \boldsymbol{x}_i xi的残差为: ε i 3 = y i − y ^ i 2 {\varepsilon}_i^3=y_i-\hat{y}_i^2 εi3=yi−y^i2,形成数据集 D 3 = { x i , ε i 3 } i = 1 m D_3=\{\boldsymbol{x}_i,{\varepsilon}_i^3\}_{i=1}^m D3={xi,εi3}i=1m,在 D 3 D_3 D3上使用CART树学习得到 h 3 ( x ) h_3(\boldsymbol{x}) h3(x)。
如此类推,得到递推公式
F
k
+
1
(
x
)
=
F
k
(
x
)
+
h
k
+
1
(
x
)
\begin{align} F_{k+1}(\boldsymbol{x})=F_k(\boldsymbol{x})+h_{k+1}(\boldsymbol{x}) \tag{8.31} \end{align}
Fk+1(x)=Fk(x)+hk+1(x)(8.31)
由此得到集成公式
F
T
(
x
)
=
F
0
(
x
)
+
∑
i
=
1
T
h
i
(
x
)
\begin{align} F_T(\boldsymbol{x})=F_0(\boldsymbol{x})+\sum_{i=1}^Th_i(\boldsymbol{x}) \tag{8.32} \end{align}
FT(x)=F0(x)+i=1∑Thi(x)(8.32)
本文为原创,您可以:
- 点赞(支持博主)
- 收藏(待以后看)
- 转发(他考研或学习,正需要)
- 评论(或讨论)
- 引用(支持原创)
- 不侵权
上一篇:8.3 AdaBoost算法的详细推导
下一篇:8.5再谈投票法(硬投票,软投票)