探究算法细节,深入了解算法原理
回归树算法最重要的是:寻找最佳的划分点,可划分点包含了所有特征的所有取值。
CART回归树的度量目标:对于特征A的取值s,划分成的数据集D1和D2,使D1和D2各自集合的均方差最小,同时D1和D2的均方差之和最小。
表达式为:
min ⎵ A , s [ m i n ⎵ c 1 ∑ x i ∈ D 1 ( A , s ) ( y i − c 1 ) 2 + min ⎵ c 2 ∑ x i ∈ D 2 ( A , s ) ( y i − c 2 ) 2 ] \underbrace{\min }_{A,s}\left[\underbrace{m i n}_{c_1}\sum_{x_{i} \in D_{1}(A, s)}\left(y_{i}-c_{1}\right)^{2}+\underbrace{\min }_{c_2} \sum_{x_{i} \in D_{2}\left(A_{, s}\right)}\left(y_{i}-c_{2}\right)^{2}\right ] A,s min⎣⎡c1 minxi∈D1(A,s)∑(yi−c1)2+c2 minxi∈D2(A,s)∑(yi−c2)2⎦⎤
将输入空间划分成 J J J 个区域,即 J J J 个叶子节点。
每个划分区域的输出值为:
c j = 1 N j ∑ x i ∈ R j y i c_j=\frac{1}{N_j}\sum_{x_i \in R_j}y_i cj=Nj1xi∈Rj∑yi
生成的决策树模型为:
f ( x ) = ∑ j = 1 J c j I ( x ∈ R j ) f(x)=\sum_{j=1}^{J}c_jI(x \in R_j) f(x)=j=1∑JcjI(x∈Rj)
提升树以分类树或回归树为弱学习器,被认为是统计学习中性能最好的方法之一。
针对不同问题的提升树学习算法:主要区别是损失函数不同
对于二分类问题,提升树算法将AdaBoost的弱学习器限定为二类分类树即可
(1)前向分步算法,初始提升树 f 0 ( x ) = 0 f_0(x)=0 f0(x)=0
(2)第 t t t 步的模型是:
f t ( x ) = f t − 1 ( x ) + h t ( x , θ t ) f_t(x)=f_{t-1}(x)+h_t(x, \theta_t) ft(x)=ft−1(x)+ht(x,θt)
其中, f t − 1 ( x ) f_{t-1}(x) ft−1(x) 为当前模型, h t ( x , θ t ) h_t(x,\theta_t) ht(x,θt)表示第 t t t 棵决策树, θ t \theta_t θt 为决策树参数
(3)通过经验风险最小化确定下一棵决策树的参数 θ t \theta_t θt
θ ^ t = arg min θ t ∑ i = 1 m L ( y i , f t − 1 ( x i ) + h t ( x i , θ t ) ) \hat{\theta}_{t}=\arg \min_{\theta_{t}} \sum_{i=1}^{m} L\left(y_i, f_{t-1}(x_i)+h_t(x_i,\theta_t)\right) θ^t=argθtmini=1∑mL(yi,ft−1(xi)+ht(xi,θt))
(4)决策树可以表示为:
h t ( x , θ t ) = ∑ j = 1 J c t j I ( x ∈ R t j ) h_t(x,\theta_t)=\sum_{j=1}^{J}c_{tj}I(x \in R_{tj}) ht(x,θt)=j=1∑JctjI(x∈Rtj)
其中 J J J 是回归树的复杂度即叶子节点个数, R t j R_{tj} Rtj 表示第 t t t 棵树的叶子节点区域, c t j c_{tj} ctj表示每个叶子节点区域的输出值
(5)学习到的强学习器为:
f T ( x ) = ∑ t = 1 T h t ( x , θ t ) f_T(x)=\sum_{t=1}^{T}h_t(x,\theta_t) fT(x)=t=1∑Tht(x,θt)
(6)采用平方误差损失函数
L ( y , f ( x ) ) = [ y − f t − 1 ( x ) − h t ( x ) ] 2 = [ r − h t ( x ) ] 2 L(y,f(x))=[y-f_{t-1}(x)-h_t(x)]^2=[r-h_t(x)]^2 L(y,f(x))=[y−ft−1(x)−ht(x)]2=[r−ht(x)]2
r = y − f t − 1 ( x ) r=y-f_{t-1}(x) r=y−ft−1(x)
其中 r r r 表示当前模型拟合数据的残差,对于回归问题的提升树算法来说,只需要拟合当前模型的残差。
【例子出自 李航《统计学习方法》P149,例8.2】
训练数据表
x i x_i xi | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
---|---|---|---|---|---|---|---|---|---|---|
y i y_i yi | 5.56 | 5.70 | 5.91 | 6.40 | 6.80 | 7.05 | 8.90 | 8.70 | 9.00 | 9.05 |
(1)求 f 1 ( x ) f_1(x) f1(x),即回归树 h 1 ( x ) h_1(x) h1(x)
通过以下优化问题,求解训练数据的划分点 s s s
min ⎵ A , s [ m i n ⎵ c 1 ∑ x i ∈ D 1 ( A , s ) ( y i − c 1 ) 2 + min ⎵ c 2 ∑ x i ∈ D 2 ( A , s ) ( y i − c 2 ) 2 ] \underbrace{\min }_{A,s}\left[\underbrace{m i n}_{c_1}\sum_{x_{i} \in D_{1}(A, s)}\left(y_{i}-c_{1}\right)^{2}+\underbrace{\min }_{c_2} \sum_{x_{i} \in D_{2}\left(A_{, s}\right)}\left(y_{i}-c_{2}\right)^{2}\right ] A,s min⎣⎡c1 minxi∈D1(A,s)∑(yi−c1)2+c2 minxi∈D2(A,s)∑(yi−c2)2⎦⎤
当 s = 6.5 s=6.5 s=6.5 时,损失值最小,此时 R 1 = { 1 , 2 , 3 , 4 , 5 , 6 } , R 2 = { 7 , 8 , 9 , 10 } , c 1 = 6.24 , c 2 = 8.91 R_1=\{1,2,3,4,5,6\},R_2=\{7,8,9,10\},c_1=6.24,c_2=8.91 R1={1,2,3,4,5,6},R2={7,8,9,10},c1=6.24,c2=8.91
所以回归树 h 1 ( x ) h_1(x) h1(x) 为
h 1 ( x ) = { 6.24 , x < 6.5 8.91 , x ≥ 6.5 h_1(x)=\left\{\begin{matrix}6.24, \quad x<6.5 \\ 8.91, \quad x \geq 6.5 \end{matrix}\right. h1(x)={6.24,x<6.58.91,x≥6.5
f 1 ( x ) = h 1 ( x ) f_1(x)=h_1(x) f1(x)=h1(x)
(2)用 f 1 ( x ) f_1(x) f1(x) 拟合训练数据的残差
r 2 i = y i − f 1 ( x i ) r_{2i}=y_i-f_1(x_i) r2i=yi−f1(xi)
x i x_i xi | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
---|---|---|---|---|---|---|---|---|---|---|
r 2 i r_{2i} r2i | -0.68 | -0.54 | -0.33 | 0.16 | 0.56 | 0.81 | -0.01 | -0.21 | 0.09 | 0.14 |
用 f 1 ( x ) f_1(x) f1(x) 拟合训练数据的平方损失误差为:
L ( y , f 1 ( x ) ) = ∑ i = 1 10 ( y i − f 1 ( x i ) ) 2 = 1.93 L(y,f_1(x))=\sum_{i=1}^{10}(y_i-f_1(x_i))^2=1.93 L(y,f1(x))=i=1∑10(yi−f1(xi))2=1.93
(3)求 h 2 ( x ) h_2(x) h2(x),与求 h 1 ( x ) h_1(x) h1(x) 方法一致,训练的数据是 r 2 i r_{2i} r2i 残差表
当 s = 3.5 s=3.5 s=3.5 时,损失值最小,此时 R 1 = { 1 , 2 , 3 } , R 2 = { 4 , 5 , 6 , 7 , 8 , 9 , 10 } , c 1 = − 0.52 , c 2 = 0.22 R_1=\{1,2,3\},R_2=\{4,5,6,7,8,9,10\},c_1=-0.52,c_2=0.22 R1={1,2,3},R2={4,5,6,7,8,9,10},c1=−0.52,c2=0.22
所以回归树 h 2 ( x ) h_2(x) h2(x) 为
h 2 ( x ) = { − 0.52 , x < 3.5 0.22 , x ≥ 3.5 h_2(x)=\left\{\begin{matrix}-0.52, \quad x<3.5 \\ 0.22, \quad x \geq 3.5 \end{matrix}\right. h2(x)={−0.52,x<3.50.22,x≥3.5
f 2 ( x ) = f 1 ( x ) + h 2 ( x ) = { 5.72 , x < 3.5 6.46 , 3.5 ≤ x < 3.5 9.13 , x ≥ 6.5 f_2(x)=f_1(x)+h_2(x)=\left\{ \begin{array}{rcl} 5.72, & & {x<3.5}\\ 6.46, & & {3.5\leq x <3.5}\\ 9.13, & & {x \geq 6.5} \end{array} \right. f2(x)=f1(x)+h2(x)=⎩⎨⎧5.72,6.46,9.13,x<3.53.5≤x<3.5x≥6.5
用 f 2 ( x ) f_2(x) f2(x) 拟合训练数据的平方损失误差为:
L ( y , f 2 ( x ) ) = ∑ i = 1 10 ( y i − f 2 ( x i ) ) 2 = 0.79 L(y,f_2(x))=\sum_{i=1}^{10}(y_i-f_2(x_i))^2=0.79 L(y,f2(x))=i=1∑10(yi−f2(xi))2=0.79
(4)同理,求 h 3 ( x ) , h 4 ( x ) , h 5 ( x ) , h 6 ( x ) h_3(x),h_4(x),h_5(x),h_6(x) h3(x),h4(x),h5(x),h6(x)
h 3 ( x ) = { 0.15 , x < 6.5 − 0.22 , x ≥ 6.5 L ( y , f 3 ( x ) ) = 0.47 h_3(x)=\left\{\begin{matrix} 0.15, \quad x<6.5 \\ -0.22, \quad x \geq 6.5 \end{matrix}\right. \quad L(y,f_3(x))=0.47 h3(x)={0.15,x<6.5−0.22,x≥6.5L(y,f3(x))=0.47
h 4 ( x ) = { − 0.16 , x < 4.5 0.11 , x ≥ 4.5 L ( y , f 4 ( x ) ) = 0.30 h_4(x)=\left\{\begin{matrix} -0.16, \quad x<4.5 \\ 0.11, \quad x \geq 4.5 \end{matrix}\right. \quad L(y,f_4(x))=0.30 h4(x)={−0.16,x<4.50.11,x≥4.5L(y,f4(x))=0.30
h 5 ( x ) = { 0.07 , x < 6.5 − 0.11 , x ≥ 6.5 L ( y , f 5 ( x ) ) = 0.23 h_5(x)=\left\{\begin{matrix} 0.07, \quad x<6.5 \\ -0.11, \quad x \geq 6.5 \end{matrix}\right. \quad L(y,f_5(x))=0.23 h5(x)={0.07,x<6.5−0.11,x≥6.5L(y,f5(x))=0.23
h 6 ( x ) = { − 0.15 , x < 2.5 0.04 , x ≥ 2.5 h_6(x)=\left\{\begin{matrix} -0.15, \quad x<2.5 \\ 0.04, \quad x \geq 2.5 \end{matrix}\right. h6(x)={−0.15,x<2.50.04,x≥2.5
f 6 ( x ) = f 5 ( x ) + h 6 ( x ) = h 1 ( x ) + h 2 ( x ) + . . . + h 6 ( x ) f_6(x)=f_5(x)+h_6(x)=h_1(x)+h_2(x)+...+h_6(x) f6(x)=f5(x)+h6(x)=h1(x)+h2(x)+...+h6(x)
f 6 ( x ) = { 5.63 , x < 2.5 5.82 , 2.5 ≤ x < 3.5 6.56 , 3.5 ≤ x < 4.5 6.83 , 4.5 ≤ x < 6.5 8.95 , x ≥ 6.5 f_6(x)=\left\{ \begin{array}{rcl} 5.63, & & {x<2.5}\\ 5.82, & & {2.5\leq x <3.5}\\ 6.56, & & {3.5\leq x <4.5}\\ 6.83, & & {4.5\leq x <6.5}\\ 8.95, & & {x \geq 6.5} \end{array} \right. f6(x)=⎩⎪⎪⎪⎪⎨⎪⎪⎪⎪⎧5.63,5.82,6.56,6.83,8.95,x<2.52.5≤x<3.53.5≤x<4.54.5≤x<6.5x≥6.5
L ( y , f 6 ( x ) ) = 0.17 L(y,f_6(x))=0.17 L(y,f6(x))=0.17
假设此时已满足误差要求,则 f ( x ) = f 6 ( x ) f(x)=f_6(x) f(x)=f6(x)即为所求的提升树模型。
r t i = − [ ∂ L ( y i , f ( x i ) ) ∂ f ( x i ) ] f ( x ) = f t − 1 ( x ) r_{ti}=-\left[\frac{\partial L(y_i,f(x_i))}{\partial f(x_i)}\right]_{f(x)=f_{t-1}(x)} rti=−[∂f(xi)∂L(yi,f(xi))]f(x)=ft−1(x)
GBDT限定弱学习器是CART回归树
通过损失函数的负梯度来拟合,我们找到了一种通用的拟合损失误差的办法,这样无轮是分类问题还是回归问题,都可以用GBDT解决。
(1)初始化
f 0 ( x ) = arg min c ∑ i = 1 m L ( y i , c ) f_0(x)=\arg \min_{c}\sum_{i=1}^{m}L(y_i,c) f0(x)=argcmini=1∑mL(yi,c)
其中 L ( y , f ( x ) ) L(y,f(x)) L(y,f(x)) 为损失函数
估计使损失函数极小化的常数值,它是只有一个根节点的树
(2)计算损失函数的负梯度,作为残差的估计
r t i = − [ ∂ L ( y i , f ( x i ) ) ∂ f ( x i ) ] f ( x ) = f t − 1 ( x ) r_{ti}=-\left[\frac{\partial L(y_i,f(x_i))}{\partial f(x_i)}\right]_{f(x)=f_{t-1}(x)} rti=−[∂f(xi)∂L(yi,f(xi))]f(x)=ft−1(x)
L ( y i , f ( x i ) ) = 1 2 ( y i − f ( x i ) ) 2 , − [ ∂ L ( y i , f ( x i ) ) ∂ f ( x i ) ] f ( x ) = f t − 1 ( x ) = y i − f ( x i ) L(y_i,f(x_i))=\frac{1}{2}(y_i-f(x_i))^2, \quad -\left[\frac{\partial L(y_i,f(x_i))}{\partial f(x_i)}\right]_{f(x)=f_{t-1}(x)}=y_i-f(x_i) L(yi,f(xi))=21(yi−f(xi))2,−[∂f(xi)∂L(yi,f(xi))]f(x)=ft−1(x)=yi−f(xi)
(3)利用 ( x i , r t i ) (x_i,r_{ti}) (xi,rti) 拟合一个回归树,得到第 t t t 棵树的叶节点区域 R t j R_{tj} Rtj,叶节点个数为 J J J
针对每一个叶子节点里的样本,求出使损失函数最小,也就是拟合叶子节点最好的的输出值 c t j c_{tj} ctj
c t j = arg min c ∑ x i ∈ R t j L ( y i , f t − 1 ( x i ) + c ) c_{tj}=\arg \min_{c}\sum_{x_i \in R_{tj}}L(y_i,f_{t-1}(x_i)+c) ctj=argcminxi∈Rtj∑L(yi,ft−1(xi)+c)
(4)得到本轮决策树模型为:
h t ( x ) = ∑ j = 1 J c t j I ( x ∈ R t j ) h_t(x)=\sum_{j=1}^{J}c_{tj}I(x \in R_{tj}) ht(x)=j=1∑JctjI(x∈Rtj)
(5)更新强学习器
f t ( x ) = f t − 1 ( x ) + ∑ j = 1 J c t j I ( x ∈ R t j ) f_t(x)=f_{t-1}(x)+\sum_{j=1}^{J}c_{tj}I(x \in R_{tj}) ft(x)=ft−1(x)+j=1∑JctjI(x∈Rtj)
(6)得到最终的强学习器
f ( x ) = f T ( x ) = f 0 ( x ) + ∑ t = 1 T ∑ j = 1 J c t j I ( x ∈ R t j ) f(x)=f_T(x)=f_0(x)+\sum_{t=1}^{T}\sum_{j=1}^{J}c_{tj}I(x \in R_{tj}) f(x)=fT(x)=f0(x)+t=1∑Tj=1∑JctjI(x∈Rtj)
由于样本输出不是连续值,而是离散的类别,无法直接从输出类别去拟合误差。
为了解决这个问题,主要有两个方法:
(1)用指数损失函数,此时GBDT退化为Adaboost算法。
(2)用类似于逻辑回归的对数似然损失函数的方法。即用类别的预测概率值和真实概率值的差来拟合损失。
对于二元GBDT,如果用类似于逻辑回归的对数似然损失函数,则损失函数为:
L ( y , f ( x ) ) = l o g ( 1 + e x p ( − y f ( x ) ) ) L(y,f(x))=log(1+exp(-yf(x))) L(y,f(x))=log(1+exp(−yf(x)))
其中 y ∈ { − 1 , 1 } y \in \{-1,1\} y∈{−1,1},此时的负梯度误差为:
r t i = − [ ∂ L ( y i , f ( x i ) ) ∂ f ( x i ) ] f ( x ) = f t − 1 ( x ) = y i 1 + e x p ( y i f ( x i ) ) r_{ti}=-\left[\frac{\partial L(y_i,f(x_i))}{\partial f(x_i)}\right]_{f(x)=f_{t-1}(x)}=\frac{y_i}{1+exp(y_if(x_i))} rti=−[∂f(xi)∂L(yi,f(xi))]f(x)=ft−1(x)=1+exp(yif(xi))yi
对于生成的决策树,各个叶子节点的最佳负梯度拟合值为:
c t j = arg min c ∑ x i ∈ R t j l o g [ 1 + e x p ( − y i ( f t − 1 ( x i ) + c ) ) ] c_{tj}=\arg \min_{c}\sum_{x_i \in R_{tj}}log[1+exp(-y_i(f_{t-1}(x_i)+c))] ctj=argcminxi∈Rtj∑log[1+exp(−yi(ft−1(xi)+c))]
由于上式比较难以优化,一般用近似值代替:
c t j = ∑ x i ∈ R t j r t j ∑ x i ∈ R t j ∣ r t j ∣ ( 1 − ∣ r t j ∣ ) c_{tj}=\frac{\sum_{x_i \in R_{tj}}r_{tj}}{\sum_{x_i \in R_{tj}}|r_{tj}|(1-|r_{tj}|)} ctj=∑xi∈Rtj∣rtj∣(1−∣rtj∣)∑xi∈Rtjrtj
除了负梯度计算和叶子节点的最佳负梯度拟合的线性搜索,二元GBDT分类和GBDT回归算法过程相同。
多元GBDT要比二元GBDT复杂一些,对应的是多元逻辑回归和二元逻辑回归的复杂度差别。
(1)假设类别数为 K K K,如果样本输出类别为 k k k,则 y k = 1 y_k=1 yk=1。第 k k k 类的概率 p k ( x ) p_k(x) pk(x)的表达式为:
p k ( x ) = e x p ( f k ( x ) ) ∑ l = 1 K e x p ( f l ( x ) ) p_k(x)=\frac{exp(f_k(x))}{\sum_{l=1}^{K}exp(f_l(x))} pk(x)=∑l=1Kexp(fl(x))exp(fk(x))
(2)对数似然损失函数为:
L ( y , f ( x ) ) = − ∑ k = 1 K y k l o g [ p k ( x ) ] L(y,f(x))=-\sum_{k=1}^{K}y_klog[p_k(x)] L(y,f(x))=−k=1∑Kyklog[pk(x)]
(3)第 t t t 轮的第 i i i 个样本对应类别 l l l 的负梯度误差为:
r t i l = − [ ∂ L ( y i , f ( x i ) ) ∂ f ( x i ) ] f k ( x ) = f l , t − 1 ( x ) = y i l − p l , t − 1 ( x i ) r_{til}=-\left[\frac{\partial L(y_i,f(x_i))}{\partial f(x_i)}\right]_{f_k(x)=f_{l,t-1}(x)}=y_{il}-p_{l,t-1}(x_i) rtil=−[∂f(xi)∂L(yi,f(xi))]fk(x)=fl,t−1(x)=yil−pl,t−1(xi)
这里的误差就是样本 i i i 对应类别 l l l 的真实概率和 t − 1 t−1 t−1 轮预测概率的差值。
(4)对于生成的决策树,各个叶子节点的最佳负梯度拟合值为:
c t j l = arg min c j l ∑ i = 1 m ∑ l = 1 K L ( y i l , f l , t − 1 ( x i ) + ∑ j = 1 J c j l I ( x i ∈ R t j l ) ) c_{tjl}=\arg \min_{c_{jl}}\sum_{i=1}^{m}\sum_{l=1}^{K}L(y_{il},f_{l,t-1}(x_i)+\sum_{j=1}^{J}c_{jl}I(x_i \in R_{tjl})) ctjl=argcjlmini=1∑ml=1∑KL(yil,fl,t−1(xi)+j=1∑JcjlI(xi∈Rtjl))
由于上式比较难以优化,采用近似值代替:
c t j l = K − 1 K ∑ x i ∈ R t j l r t j l ∑ x i ∈ R t j l ∣ r t j l ∣ ( 1 − ∣ r t j l ∣ ) c_{tjl}=\frac{K-1}{K}\frac{\sum_{x_i \in R_{tjl}}r_{tjl}}{\sum_{x_i \in R_{tjl}}|r_{tjl}|(1-|r_{tjl}|)} ctjl=KK−1∑xi∈Rtjl∣rtjl∣(1−∣rtjl∣)∑xi∈Rtjlrtjl
L ( y , f ( x ) ) = { 1 2 ( y − f ( x ) ) 2 , ∣ y − f ( x ) ∣ ≤ δ δ s i g n ( ∣ y − f ( x ) ∣ − δ / 2 ) , ∣ y − f ( x ) ∣ > δ L(y,f(x))=\left\{ \begin{array}{rcl} \frac{1}{2}(y-f(x))^2, & & {|y-f(x)| \leq \delta}\\ \delta sign(|y-f(x)|-\delta/2), & & {|y-f(x)|>\delta} \end{array} \right. L(y,f(x))={21(y−f(x))2,δsign(∣y−f(x)∣−δ/2),∣y−f(x)∣≤δ∣y−f(x)∣>δ
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)∣
Huber损失,分位数损失,主要用于健壮回归,即减少异常点对损失函数的影响。
3种正则化方法
(1)和 AdaBoost类似的正则项,步长 v v v (learning rate)
f t ( x ) = f t − 1 ( x ) + v h t ( x ) f_t(x)=f_{t-1}(x)+vh_t(x) ft(x)=ft−1(x)+vht(x)
(2)对弱学习器,即CART回归树进行正则化剪枝
(3)通过子采样比例 (sub_sample),取值 ( 0 , 1 ] (0,1] (0,1]
使用子采样的GBDT有时也被称为随机梯度提升树,SGBT。
由于使用了子采样,程序可以通过采样,分发到不同的任务去做boosting的迭代过程。最后形成新树,从而减少弱学习器难以并行学习的弱点。实现部分并行。
class sklearn.ensemble.GradientBoostingClassifier(loss=’deviance’,
learning_rate=0.1, n_estimators=100, subsample=1.0,
criterion=’friedman_mse’, min_samples_split=2, min_samples_leaf=1,
min_weight_fraction_leaf=0.0, max_depth=3, min_impurity_decrease=0.0,
min_impurity_split=None, init=None, random_state=None, max_features=None,
verbose=0, max_leaf_nodes=None, warm_start=False, presort=’auto’,
validation_fraction=0.1, n_iter_no_change=None, tol=0.0001)
class sklearn.ensemble.GradientBoostingRegressor(loss=’ls’,
learning_rate=0.1, n_estimators=100, subsample=1.0,
criterion=’friedman_mse’, min_samples_split=2, min_samples_leaf=1,
min_weight_fraction_leaf=0.0, max_depth=3, min_impurity_decrease=0.0,
min_impurity_split=None, init=None, random_state=None, max_features=None,
alpha=0.9, verbose=0, max_leaf_nodes=None, warm_start=False,
presort=’auto’, validation_fraction=0.1, n_iter_no_change=None, tol=0.0001)
参考博客
1. 梯度提升树(GBDT)原理小结
2. GBDT算法原理以及实例理解
3. 李航, 统计学习方法
4. sklearn GBDT文档
5. sklearn GBDT源码