文章目录
三、GBDT算法
提升方法内容较多,方便阅读,分成2个部分
上接:08_提升方法Boosting1_统计学习方法
GBDT是提升树里面的一种算法,提升树的不同形式主要是因为其损失函数不同,而GBDT使用的是一般损失函数。也就是说模型更具有普适性,后面也主要讲解GBDT提升树。
提升树是以决策树(包含分类树和回归树)为基函数的提升方法。提升树实际采用加法模型(即基函数的线性组合)和前向分步算法的优化方法,根据策略也就是损失函数的不同会有不同的提升树。提升方法是一种基学习器同质,串行生成个体学习器的集成学习方法。提升方法基学习器串行生成的方式不同又主要分成了AdaBoost和GBDT,AdaBoost是根据上一轮的损失来改变训练数据权重,学习后得到下一轮基学习器;而GBDT下一轮的基学习器是来拟合上一轮的损失。
1、提升树算法
(1)算法三要素
- 模型:加法模型,基学习器为决策树。
- 策略:也就是损失函数不定,根据不同的损失函数而得到不同的提升树
- 算法:前向分步算法
1)提升树最终模型
f
M
(
x
)
=
f
0
(
x
)
+
∑
m
=
1
M
T
(
x
;
Θ
m
)
(25)
f_M(x) = f_0(x)+ \sum_{m=1}^M T(x;\Theta_m) \tag{25}
fM(x)=f0(x)+m=1∑MT(x;Θm)(25)
- T ( x ; Θ m ) T(x;\Theta_m) T(x;Θm)表示决策树; Θ m \Theta_m Θm为决策树的参数; M M M为树的个数。
- 树的线性组合可以很好地拟合训练数据,即使数据中的输入与输出之间的关系很复杂也是如此,所以提升树是一个高功能的学习方法。
- 决策树桩:一个根节点直接连接两个叶结点的简单决策树。
2)初始提升树 f 0 ( x ) = 0 f_0(x) = 0 f0(x)=0
3)第
m
m
m步的模型是
f
m
(
x
)
=
f
m
−
1
(
x
)
+
T
(
x
;
Θ
m
)
(26)
f_m(x) = f_{m-1}(x) + T(x;\Theta_m) \tag{26}
fm(x)=fm−1(x)+T(x;Θm)(26)
4)通过经验风险极小化确定下一棵决策树的参数
Θ
m
\Theta_m
Θm
Θ
^
m
=
a
r
g
min
Θ
m
∑
i
=
1
N
L
(
y
i
,
f
m
−
1
(
x
i
)
+
T
(
x
i
;
Θ
m
)
)
(27)
\hat \Theta_m = arg\space \min_{\Theta_m}\sum_{i=1}^N L(y_i,f_{m-1}(x_i) + T(x_i;\Theta_m)) \tag{27}
Θ^m=arg Θmmini=1∑NL(yi,fm−1(xi)+T(xi;Θm))(27)
基学习器类别、损失函数类别和这一步就是GBDT与AdaBoost区别之处。
(2)GBDT与AdaBoost区别
1)Adaboost强调Adaptive(自适应),通过不断修改样本权重(增大分错样本权重,降低分对样本权重),不断加入弱分类器进行boosting。
2)GBDT则是旨在不断减少残差(回归),通过不断加入新的树在残差减少(负梯度)的方向上建立一个新的模型。即损失函数是旨在最快速度降低残差。
3)通过算法三要素得知,AdaBoost不指定基学习器,而GBDT制定基学习器为决策树;AdaBoost制定指数损失函数,而GBDT不指定损失函数,根据不同的损失函数有不同的提升树;个人觉得当初AdaBoost主要是为了解决分类问题,GBDT是为了解决回归问题,当然现在的各种工具包里面,两种算法都能解决分类和回归问题。后续可以比较下两者的优劣。
2、平方损失的提升树
输入:训练数据集 T = { ( x 1 , y 1 ) , ( x 2 , y 2 ) , ⋯ , ( x N , y N ) } , x i ∈ X ⊆ R n , y i ∈ Y ⊆ R T=\{(x_1,y_1),(x_2,y_2),\cdots ,(x_N,y_N) \},x_i \in {\bf X}\subseteq{\bf R}^n,y_i \in {\bf Y}\subseteq{\bf R} T={(x1,y1),(x2,y2),⋯,(xN,yN)},xi∈X⊆Rn,yi∈Y⊆R(回归);
输出:提升树 f M ( x ) f_{M}(x) fM(x)。
1)初始化 f 0 ( x ) = 0 f_0(x) = 0 f0(x)=0
2)对 m = 1 , 2 , ⋯ , M m=1,2,\cdots ,M m=1,2,⋯,M
- (a) 加法模型
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)
当采用平方误差损失函数时, L ( y , f ( x ) ) = ( y − f ( x ) ) 2 L(y,f(x)) = (y-f(x))^2 L(y,f(x))=(y−f(x))2。其损失变为:
L ( y , f m − 1 ( x ) + T ( x ; Θ m ) ) = [ y − f m − 1 ( x ) − T ( x ; Θ m ) ] 2 = [ r − T ( x ; Θ m ) ] 2 L(y,f_{m-1}(x) + T(x;\Theta_m)) = [y - f_{m-1}(x) - T(x;\Theta_m)]^2 = [r - T(x;\Theta_m)]^2 L(y,fm−1(x)+T(x;Θm))=[y−fm−1(x)−T(x;Θm)]2=[r−T(x;Θm)]2
这里, r = y − f m − 1 ( x ) r = y-f_{m-1}(x) r=y−fm−1(x)。则有:
r m , i = y i − f m − 1 ( x i ) , i = 1 , 2 , ⋯ , N r_{m,i} = y_i - f_{m-1}(x_i),i=1,2,\cdots ,N rm,i=yi−fm−1(xi),i=1,2,⋯,N- (b) 拟合残差 r m , i r_{m,i} rm,i学习一个回归树,得到 T ( x ; Θ m ) T(x;\Theta_m) T(x;Θm)。
若果将输入空间 X {\bf X} X划分为 J J J个互不相交的区域 R 1 , R 2 , ⋯ , R J R_1,R_2,\cdots ,R_J R1,R2,⋯,RJ,并且在每个区域上确定输出的常量 c j c_j cj,那么树可以表示为
Θ m = a r g min Θ ∑ i = 1 N L ( y i , f m − 1 ( x i ) + T ( x i ; Θ ) ) \Theta_m = arg\space \min_{\Theta}\sum_{i=1}^N L(y_i,f_{m-1}(x_i) + T(x_i;\Theta)) Θm=arg Θmini=1∑NL(yi,fm−1(xi)+T(xi;Θ))
T ( x ; Θ m ) = ∑ j = 1 J c j I ( x ∈ R j ) T(x;\Theta_m) = \sum_{j=1}^J c_j I(x\in R_j) T(x;Θm)=j=1∑JcjI(x∈Rj)
其中,参数 Θ m = { ( R 1 , c 1 ) , ( R 2 , c 2 ) , ⋯ , ( R J , c J ) } \Theta_m = \{(R_1,c_1),(R_2,c_2),\cdots ,(R_J,c_J)\} Θm={(R1,c1),(R2,c2),⋯,(RJ,cJ)}表示树的区域划分和各区域上的常数。 J J J是回归树的复杂度即叶节点个数。- ( c ) (c) (c) 更新 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)
3)得到回归问题提升树
f
M
(
x
)
=
f
0
(
x
)
+
∑
m
=
1
M
T
(
x
;
Θ
m
)
f_M(x) = f_0(x) + \sum_{m=1}^M T(x;\Theta_m)
fM(x)=f0(x)+m=1∑MT(x;Θm)
3、梯度提升树(Gradient Boosting Decison Tree,简称GBDT)
提升树利用加法模型与前向分步算法实现学习的优化过程。当损失函数是平方损失和指数损失时,每一步优化是简单的。
但对一般损失函数而言,往往每一步优化并不容易。针对这一问题,Freidman提出了梯度提升(gradient boosting)算法。这是利用最速下降法的近似方法,其关键是利用损失函数的负梯度在当前模型的值
−
[
∂
L
(
y
,
f
(
x
i
)
)
∂
f
(
x
i
)
]
f
(
x
)
=
f
m
−
1
(
x
)
-\left[ \dfrac{\partial L(y,f(x_i))}{\partial f(x_i)} \right]_{f(x) = f_{m-1}\space\space(x)}
−[∂f(xi)∂L(y,f(xi))]f(x)=fm−1 (x)
作为回归问题提升树算法中的残差的近似值,拟合一个回归树。
对于上面的公式,刚开始写博客的时候直接照搬书本上的公式,当回过头来复习的时候,在想为什么是这么一个公式。然后就引出了另外一个问题,负梯度为什么是下降最快的方向?可以参见博客,推导过程很好。看完推导过程再回过头来看GBDT的损失函数,其泰勒展开可以写作:
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
−
1
(
x
)
)
+
∂
L
(
y
,
f
m
−
1
(
x
)
)
∂
f
m
−
1
(
x
)
T
(
x
;
Θ
m
)
\begin{aligned}L(y,f_m(x) ) &\approx L(y,f_{m-1}(x) ) + \dfrac{\partial L(y,f_{m-1}(x) )}{\partial f_{m-1}(x) }(f_m(x) - f_{m-1}(x)) \\ &= L(y,f_{m-1}(x) ) + \dfrac{\partial L(y,f_{m-1}(x) )}{\partial f_{m-1}(x) } T(x;\Theta_m) \end{aligned}
L(y,fm(x))≈L(y,fm−1(x))+∂fm−1(x)∂L(y,fm−1(x))(fm(x)−fm−1(x))=L(y,fm−1(x))+∂fm−1(x)∂L(y,fm−1(x))T(x;Θm)
故有:
L
(
y
,
f
m
(
x
)
)
−
L
(
y
,
f
m
−
1
(
x
)
)
≈
∂
L
(
y
,
f
m
−
1
(
x
)
)
∂
f
m
−
1
(
x
)
T
(
x
;
Θ
m
)
L(y,f_m(x) ) - L(y,f_{m-1}(x) )\approx \dfrac{\partial L(y,f_{m-1}(x) )}{\partial f_{m-1}(x) } T(x;\Theta_m)
L(y,fm(x))−L(y,fm−1(x))≈∂fm−1(x)∂L(y,fm−1(x))T(x;Θm)
利用最速下降法的近似方法可得:
T
(
x
;
Θ
m
)
=
−
∂
L
(
y
,
f
m
−
1
(
x
)
)
∂
f
m
−
1
(
x
)
T(x;\Theta_m) = -\dfrac{\partial L(y,f_{m-1}(x) )}{\partial f_{m-1}(x) }
T(x;Θm)=−∂fm−1(x)∂L(y,fm−1(x))
时,损失函数减小的最快。
利用
(
x
i
,
r
m
,
i
)
,
i
=
1
,
2
,
⋯
,
m
(x_i,r_{m,i}),i=1,2,\cdots ,m
(xi,rm,i),i=1,2,⋯,m,我们可以拟合一颗CART回归树,得到了第
m
m
m颗回归树,其对应的叶结点区域
R
m
,
j
,
j
=
1
,
2
,
⋯
,
J
R_{m,j},j=1,2,\cdots,J
Rm,j,j=1,2,⋯,J。其中
J
J
J为叶子结点的个数。
(1)GBDT回归算法
输入:训练数据集 T = { ( x 1 , y 1 ) , ( x 2 , y 2 ) , ⋯ , ( x N , y N ) } , x i ∈ X ⊆ R n , y i ∈ Y ⊆ R T=\{(x_1,y_1),(x_2,y_2),\cdots ,(x_N,y_N) \},x_i \in {\bf X}\subseteq{\bf R}^n,y_i \in {\bf Y}\subseteq{\bf R} T={(x1,y1),(x2,y2),⋯,(xN,yN)},xi∈X⊆Rn,yi∈Y⊆R;
输出:提升树 f ^ ( x ) \hat f(x) f^(x)。
1)初始化 f 0 ( x ) = a r g min c ∑ i = 1 N L ( y i , c ) f_0(x) = arg\space \min_{c} \sum_{i=1}^N L(y_i,c) f0(x)=arg minc∑i=1NL(yi,c)。估计使损失函数极小化的常数值,它是只有一个根结点的树,一般平方损失函数为结点的均值,而绝对损失函数为结点样本的中位数。
2)对 m = 1 , 2 , ⋯ , M m=1,2,\cdots ,M m=1,2,⋯,M
- (a) 对 i = 1 , 2 , ⋯ , N i=1,2,\cdots ,N i=1,2,⋯,N,计算
r m , i = − [ ∂ L ( y , f ( x i ) ) ∂ f ( x i ) ] f ( x ) = f m − 1 ( x ) r_{m,i} = -\left[ \dfrac{\partial L(y,f(x_i))}{\partial f(x_i)} \right]_{f(x) = f_{m-1}\space\space(x)} rm,i=−[∂f(xi)∂L(y,f(xi))]f(x)=fm−1 (x)
计算损失函数的负梯度在当前模型的值,将它作为残差的估计。对于平方损失函数,它就是通常所说的残差, L ( y , f ( x ) ) = 1 2 ( y − f ( x ) ) 2 L(y,f(x)) = \dfrac{1}{2}(y-f(x))^2 L(y,f(x))=21(y−f(x))2,则 − ∂ L ∂ f ( x ) = y − f ( x ) -\dfrac{\partial L}{\partial{f(x)}} = y - f(x) −∂f(x)∂L=y−f(x);对于一般损失函数,它就是残差的近似值。- (b) 对 r m , i r_{m,i} rm,i拟合一个回归树,得到第 m m m棵树的叶节点区域 R m , j , j = 1 , 2 , ⋯ , J R_{m,j},j=1,2,\cdots , J Rm,j,j=1,2,⋯,J估计回归树叶结点区域,以拟合残差的近似值。
- ( c ) (c) (c) 对 j = 1 , 2 , ⋯ , J j=1,2,\cdots ,J j=1,2,⋯,J,计算
c m , j = a r g min c ∑ x i ∈ R m , j L ( y i , f m − 1 ( x i ) + c ) c_{m,j} = arg\space \min_{c} \sum_{x_i \in R_{m,j}} L(y_i,f_{m-1}(x_i) + c) cm,j=arg cminxi∈Rm,j∑L(yi,fm−1(xi)+c)
利用线性搜索估计叶结点区域的值,使损失函数极小化。- (d) 更新回归树 f m ( x ) = f m − 1 ( x ) + ∑ j = 1 J c m , j I ( x ∈ R m , j ) f_m(x) = f_{m-1}(x) + \sum_{j=1}^J c_{m,j} I(x \in {\bf R}_{m,j}) fm(x)=fm−1(x)+∑j=1Jcm,jI(x∈Rm,j)
3)得到回归树
f
^
(
x
)
=
f
M
(
x
)
=
f
0
(
x
)
+
∑
m
=
1
M
∑
j
=
1
J
c
m
,
j
I
(
x
∈
R
m
,
j
)
\hat f(x) = f_M(x) = f_0(x) + \sum_{m=1}^M \sum_{j=1}^J c_{m,j} I(x\in {\bf R}_{m,j})
f^(x)=fM(x)=f0(x)+m=1∑Mj=1∑Jcm,jI(x∈Rm,j)
(2)GBDT常用损失函数
1)指数函数损失
损失函数表达式为: L ( y , f ( x ) ) = e x p ( − y f ( x ) ) L(y,f(x)) = exp(-yf(x)) L(y,f(x))=exp(−yf(x))
负梯度误差为: r m , i = e x p ( − y i f m − 1 ( x i ) ) r_{m,i} =exp(-y_i f_{m-1}(x_i)) rm,i=exp(−yifm−1(xi))
2)对数函数损失
二分类和多分类两种
3)平方损失
损失函数表达式为: L ( y , f ( x ) ) = 1 2 [ y − f ( x ) ] 2 L(y,f(x)) = \dfrac{1}{2} [y - f(x)]^2 L(y,f(x))=21[y−f(x)]2
负梯度误差,残差为: r m , i = y i − f m − 1 ( x i ) r_{m,i} = y_i - f_{m-1}(x_i) rm,i=yi−fm−1(xi)
4)绝对损失
损失函数表达式为: L ( y , f ( x ) ) = ∣ y − f ( x ) ∣ L(y,f(x)) = |y - f(x)| L(y,f(x))=∣y−f(x)∣
负梯度误差,伪残差为: r m , i = s i g n ( y i − f m − 1 ( x i ) ) r_{m,i} = sign(y_i - f_{m-1}(x_i)) rm,i=sign(yi−fm−1(xi))
5)Huber损失
Huber损失,它是均方差和绝对损失的折衷产物,对于远离中心的异常点,采用绝对损失,而中心附近的点采用均方差。这个界限一般用分位数点度量。
损失函数如下:
L
(
y
,
f
(
x
)
)
=
{
1
2
(
y
−
f
(
x
)
)
2
,
∣
y
−
f
(
x
)
∣
≤
δ
δ
(
∣
y
−
f
(
x
)
∣
−
δ
2
,
∣
y
−
f
(
x
)
∣
>
δ
L(y,f(x)) = \begin{cases} \dfrac{1}{2}(y-f(x))^2, & |y-f(x)| \leq \delta \\[2ex] \delta (|y-f(x)|-\dfrac{\delta}{2}, & |y-f(x)| > \delta \end{cases}
L(y,f(x))=⎩⎪⎪⎨⎪⎪⎧21(y−f(x))2,δ(∣y−f(x)∣−2δ,∣y−f(x)∣≤δ∣y−f(x)∣>δ
负梯度误差,伪残差为:
δ
m
=
q
u
a
n
t
i
l
e
α
(
y
i
−
f
m
−
1
(
x
)
)
\delta_m = quantile_{\alpha}(y_i - f_{m-1}(x))
δm=quantileα(yi−fm−1(x))
δ
m
\delta {_{m}}
δm表示分位数;
α
\alpha
α表示将伪残差的百分之多少设为分位数,在sklearn中是需要自己设置的,默认为0.9。
r
m
,
i
=
{
y
i
−
f
m
−
1
(
x
i
)
,
∣
y
−
f
(
x
)
∣
≤
δ
δ
m
s
i
g
n
(
y
i
−
f
m
−
1
(
x
i
)
)
,
∣
y
−
f
(
x
)
∣
>
δ
r_{m,i} = \begin{cases} y_i - f_{m-1}(x_i), & |y-f(x)| \leq \delta \\[2ex] \delta_m sign(y_i - f_{m-1}(x_i)), & |y-f(x)| > \delta \end{cases}
rm,i=⎩⎨⎧yi−fm−1(xi),δmsign(yi−fm−1(xi)),∣y−f(x)∣≤δ∣y−f(x)∣>δ
6)分位数损失
损失函数为:
L
(
y
,
f
(
x
)
)
=
∑
y
≥
f
(
x
)
θ
∣
y
−
f
(
x
)
∣
+
∑
y
<
f
(
x
)
(
1
−
θ
)
∣
y
−
f
(
x
)
∣
L(y,f(x)) = \sum_{y\geq f(x)}\theta|y-f(x)| + \sum_{y < f(x)}(1- \theta)|y-f(x)|
L(y,f(x))=y≥f(x)∑θ∣y−f(x)∣+y<f(x)∑(1−θ)∣y−f(x)∣
其中
θ
\theta
θ为分位数
负梯度误差,伪残差为:
r
m
,
i
=
{
θ
,
y
i
≥
f
(
x
i
)
θ
−
1
,
y
i
<
f
(
x
i
)
r_{m,i} = \begin{cases} \theta, & y_i \geq f(x_i) \\[2ex] \theta -1, & y_i < f(x_i) \end{cases}
rm,i=⎩⎨⎧θ,θ−1,yi≥f(xi)yi<f(xi)
- 对于Huber损失和分位数损失,主要用于健壮回归,也就是减少异常点对损失函数的影响。
- 对于分类算法,其损失函数一般有对数损失函数和指数损失函数两种。
- 除了负梯度计算和叶子节点的最佳负梯度拟合的线性搜索,多元GBDT分类和二元GBDT分类以及GBDT回归算法过程相同。
(3)GBDT的正则化
和Adaboost一样,我们也需要对GBDT进行正则化,防止过拟合。GBDT的正则化主要有三种方式。
(1)和Adaboost类似的正则化项,即步长(learning rate)。定义为
ν
\nu
ν,对于前面的弱学习器的迭代
f
m
(
x
)
=
f
m
−
1
(
x
)
+
G
m
(
x
)
f_{m}(x)=f_{m-1}(x)+G_m(x)
fm(x)=fm−1(x)+Gm(x)
如果我们加上了正则化项,则有
f
m
(
x
)
=
f
m
−
1
(
x
)
+
ν
G
m
(
x
)
f_{m}(x)=f_{m-1}(x)+\nu G_m(x)
fm(x)=fm−1(x)+νGm(x)
ν
\nu
ν的取值范围为
0
<
ν
≤
1
0<\nu \leq 1
0<ν≤1。对于同样的训练集学习效果,较小的
ν
\nu
ν意味着我们需要更多的弱学习器的迭代次数。通常我们用步长和迭代最大次数一起来决定算法的拟合效果。
(2)正则化的方式是通过子采样比例(subsample)。取值为(0,1]。注意这里的子采样和随机森林不一样,随机森林使用的是放回抽样,而这里是不放回抽样。如果取值为1,则全部样本都使用,等于没有使用子采样。如果取值小于1,则只有一部分样本会去做GBDT的决策树拟合。选择小于1的比例可以减少方差,即防止过拟合,但是会增加样本拟合的偏差,因此取值不能太低。推荐在[0.5, 0.8]之间。
使用了子采样的GBDT有时也称作随机梯度提升树(Stochastic Gradient Boosting Tree, SGBT)。由于使用了子采样,程序可以通过采样分发到不同的任务去做boosting的迭代过程,最后形成新树,从而减少弱学习器难以并行学习的弱点。
(3)对于弱学习器即CART回归树进行正则化剪枝。在决策树原理里我们已经讲过,这里就不重复了。
(4)GBDT的优缺点
GBDT主要优点:
- 1)可以灵活处理各种类型的数据,包括连续值和离散值。
- 2)在相对少的调参时间情况下,预测的准确率也可以比较高。这个是相对SVM来说的。
- 3)使用一些健壮的损失函数,对异常值的鲁棒性非常强。比如 Huber损失函数和Quantile损失函数。
GBDT主要缺点:
- 1)由于弱学习器之间存在依赖关系,难以并行训练数据。不过可以通过自采样的SGBT来达到部分并行
4、平方损失和绝对损失的最佳预测
这部分内容来自GBDT基本原理及算法描述
(1)平方损失最佳预测为叶节点残差均值
节点 R R R中有 N N N个样本点,假设s为切分点, R 1 , R 2 R{_{1}},R{_{2}} R1,R2分别为切分后的左节点和右节点,分别有节点个数为 N 1 , N 2 N{_{1}},N{_{2}} N1,N2。
我们的目标是找到切分点s,在
R
1
,
R
2
R{_{1}},R{_{2}}
R1,R2内部使平方损失误差达到最小值的
c
1
,
c
2
c{_{1}},c{_{2}}
c1,c2,如下:
m
i
n
s
[
m
i
n
c
1
∑
x
i
∈
R
1
(
y
i
−
c
1
)
2
+
m
i
n
c
2
∑
x
i
∈
R
2
(
y
i
−
c
2
)
2
]
\underset{s}{min}[\underset{c{_{1}}}{min}\sum_{x{_{i}}\in R{_{1}}}(y{_{i}}-c{_{1}})^2+\underset{c{_{2}}}{min}\sum_{x{_{i}}\in R{_{2}}}(y{_{i}}-c{_{2}})^2]
smin[c1minxi∈R1∑(yi−c1)2+c2minxi∈R2∑(yi−c2)2]
(
y
i
−
c
1
)
2
(y{_{i}}-c{_{1}})^2
(yi−c1)2和
(
y
i
−
c
2
)
2
(y{_{i}}-c{_{2}})^2
(yi−c2)2分别对
c
1
,
c
2
c{_{1}},c{_{2}}
c1,c2求偏导等于0,得到在
R
1
,
R
2
R{_{1}},R{_{2}}
R1,R2内部使平方损失误差达到最小值的
c
1
,
c
2
c{_{1}},c{_{2}}
c1,c2:
c
1
=
1
N
1
∑
x
i
∈
R
1
y
i
,
c
2
=
1
N
2
∑
x
i
∈
R
2
y
i
c1 = \dfrac{1}{N_1}\sum_{x{_{i}}\in R{_{1}}}y_i,\space\space c2 = \dfrac{1}{N_2}\sum_{x{_{i}}\in R{_{2}}}y_i
c1=N11xi∈R1∑yi, c2=N21xi∈R2∑yi
而
c
1
,
c
2
c{_{1}},c{_{2}}
c1,c2即为各自叶结点中的残差的均值。
(2)绝对损失最佳预测为叶节点残差中位数
损失函数 L ( y i , f ( x i ) ) = ∑ i = 1 N ∣ y i − f ( x i ) ∣ L(y{_{i}},f(x{_{i}}))=\sum_{i=1}^{N}|y{_{i}}-f(x{_{i}})| L(yi,f(xi))=∑i=1N∣yi−f(xi)∣
假设在节点中有
N
1
N{_{1}}
N1个节点使
y
i
−
f
(
x
i
)
>
0
y{_{i}}-f(x{_{i}})>0
yi−f(xi)>0,则有
N
−
N
1
N-N{_{1}}
N−N1个节点使
y
i
−
f
(
x
i
)
<
0
y{_{i}}-f(x{_{i}})<0
yi−f(xi)<0,那么:
L
(
y
i
,
f
(
x
i
)
)
=
∑
x
i
∈
N
1
[
y
i
−
f
(
x
i
)
]
+
∑
x
i
∈
N
−
N
1
[
f
(
x
i
)
−
y
i
]
L(y{_{i}},f(x{_{i}}))=\sum_{x{_{i}}\in N{_{1}}}[y{_{i}}-f(x{_{i}})]+\sum_{x{_{i}}\in N-N{_{1}}}[f(x{_{i}})-y{_{i}}]
L(yi,f(xi))=xi∈N1∑[yi−f(xi)]+xi∈N−N1∑[f(xi)−yi]
我们的目标是是损失函数最小化,所以,上式对
f
(
x
i
)
f(x{_{i}})
f(xi)求偏导,并令偏导等于0,得:
∂
L
∂
f
(
x
i
)
=
∑
x
i
∈
N
1
(
−
1
)
+
∑
x
i
∈
N
−
N
1
(
1
)
=
−
N
1
+
(
N
−
N
1
)
=
0
\frac{\partial L}{\partial f(x{_{i}})}=\sum_{x{_{i}}\in N{_{1}}}(-1)+\sum_{x{_{i}}\in N-N{_{1}}}(1)=-N{_{1}}+(N-N{_{1}})=0
∂f(xi)∂L=xi∈N1∑(−1)+xi∈N−N1∑(1)=−N1+(N−N1)=0
得:
N
1
=
N
2
N{_{1}}=\frac{N}{2}
N1=2N
而N为节点中样本的总数,所以使节点的最佳预测为节点中残差的中位数。
参考资料:
- 统计学习方法——李航
- 刘建平Pinard集成学习原理小结
- 刘建平Pinard梯度提升树(GBDT)原理小结
- 统计学习方法–提升方法adaBoost算法(集成学习)
- 第八章Boosting提升方法
∗
∗
∗
∗
∗
∗
∗
∗
∗
∗
∗
∗
∗
∗
∗
∗
∗
∗
∗
∗
∗
∗
∗
∗
∗
∗
∗
∗
∗
*****************************
∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗
未完待续