08_提升方法Boosting2_统计学习方法

三、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=1MT(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)=fm1(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=1NL(yi,fm1(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)},xiXRn,yiYR(回归);

输出:提升树 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)=fm1(x)+T(x;Θm)
    当采用平方误差损失函数时, L ( y , f ( x ) ) = ( y − f ( x ) ) 2 L(y,f(x)) = (y-f(x))^2 L(y,f(x))=(yf(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,fm1(x)+T(x;Θm))=[yfm1(x)T(x;Θm)]2=[rT(x;Θm)]2
    这里, r = y − f m − 1 ( x ) r = y-f_{m-1}(x) r=yfm1(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=yifm1(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=1NL(yi,fm1(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=1JcjI(xRj)
    其中,参数 Θ 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)=fm1(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=1MT(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)=fm1  (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,fm1(x))+fm1(x)L(y,fm1(x))(fm(x)fm1(x))=L(y,fm1(x))+fm1(x)L(y,fm1(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,fm1(x))fm1(x)L(y,fm1(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)=fm1(x)L(y,fm1(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)},xiXRn,yiYR

输出:提升树 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 minci=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)=fm1  (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(yf(x))2,则 − ∂ L ∂ f ( x ) = y − f ( x ) -\dfrac{\partial L}{\partial{f(x)}} = y - f(x) f(x)L=yf(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 cminxiRm,jL(yi,fm1(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)=fm1(x)+j=1Jcm,jI(xRm,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=1Mj=1Jcm,jI(xRm,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(yifm1(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[yf(x)]2

负梯度误差,残差为: r m , i = y i − f m − 1 ( x i ) r_{m,i} = y_i - f_{m-1}(x_i) rm,i=yifm1(xi)

4)绝对损失

损失函数表达式为: L ( y , f ( x ) ) = ∣ y − f ( x ) ∣ L(y,f(x)) = |y - f(x)| L(y,f(x))=yf(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(yifm1(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(yf(x))2,δ(yf(x)2δ,yf(x)δyf(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α(yifm1(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=yifm1(xi),δmsign(yifm1(xi)),yf(x)δyf(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))=yf(x)θyf(x)+y<f(x)(1θ)yf(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,yif(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)=fm1(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)=fm1(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}} R1R2分别为切分后的左节点和右节点,分别有节点个数为 N 1 , N 2 N{_{1}},N{_{2}} N1,N2

我们的目标是找到切分点s,在 R 1 , R 2 R{_{1}},R{_{2}} R1R2内部使平方损失误差达到最小值的 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[c1minxiR1(yic1)2+c2minxiR2(yic2)2]
( y i − c 1 ) 2 (y{_{i}}-c{_{1}})^2 (yic1)2 ( y i − c 2 ) 2 (y{_{i}}-c{_{2}})^2 (yic2)2分别对 c 1 , c 2 c{_{1}},c{_{2}} c1,c2求偏导等于0,得到在 R 1 , R 2 R{_{1}},R{_{2}} R1R2内部使平方损失误差达到最小值的 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=N11xiR1yi,  c2=N21xiR2yi
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=1Nyif(xi)

假设在节点中有 N 1 N{_{1}} N1个节点使 y i − f ( x i ) > 0 y{_{i}}-f(x{_{i}})>0 yif(xi)>0,则有 N − N 1 N-N{_{1}} NN1个节点使 y i − f ( x i ) < 0 y{_{i}}-f(x{_{i}})<0 yif(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))=xiN1[yif(xi)]+xiNN1[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=xiN1(1)+xiNN1(1)=N1+(NN1)=0
得:
N 1 = N 2 N{_{1}}=\frac{N}{2} N1=2N
而N为节点中样本的总数,所以使节点的最佳预测为节点中残差的中位数。

参考资料:

∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ *****************************
未完待续

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值