您现在的位置是:首页 > 正文

集成学习模型(二)——GBDT

2024-04-01 05:06:19阅读 5

GBDT

一、概述

  梯度提升(Gradient boosting)是一种用于回归、分类和排序任务的机器学习技术1,属于Boosting算法族的一部分。Boosting是一族可将弱学习器提升为强学习器的算法,属于集成学习(ensemble learning)的范畴。Boosting方法基于这样一种思想:对于一个复杂任务来说,将多个专家的判断进行适当的综合所得出的判断,要比其中任何一个专家单独的判断要好。通俗地说,就是“三个臭皮匠顶个诸葛亮”的道理。梯度提升同其他boosting方法一样,通过集成(ensemble)多个弱学习器,通常是决策树,来构建最终的预测模型。
  GBDT中的树是回归树(不是分类树),GBDT用来做回归预测,调整后也可以用于分类。

二、回归树

  回归树(Regression Decision Tree),总体流程类似于分类树,区别在于,回归树的每一个节点都会得一个预测值,该预测值等于属于这个节点的所有样本的平均值。分枝时穷举每一个feature的每个阈值找最好的分割点,但衡量最好的标准不再是最大熵,而是最小化平方误差。也就是被预测出错的数量越多,错的越离谱,平方误差就越大,通过最小化平方误差能够找到最可靠的分枝依据。分枝直到每个叶子节点上样本特征都唯一或者达到预设的终止条件(如叶子个数上限),若最终叶子节点上样本特征不唯一,则以该节点上所有样本的平均做为该叶子节点的预测值。

  回归树的生成方法如下:

  • 输入:训练数据集 D D D
  • 输出:回归树 f ( x ) f(x) f(x)

  在训练数据集所在的输入空间中,递归地将每个区域划分为两个子区块并决定每个子区域上的输出值,构建二叉决策树:

  1.选择最优切分变量 j j j与切分点 s s s,求解
min ⁡ j , s [ min ⁡ c 1 ∑ x i ∈ R 1 ( j , s ) ( y i − c 1 ) 2 + min ⁡ c 2 ∑ x i ∈ R 2 ( j , s ) ( y i − c 2 ) 2 ] \min _{j, s}\left[\min _{c_1} \sum_{x_i \in R_1(j,s)} (y_{i}-c_{1})^{2}+\min _{c_{2}} \sum_{x_{i} \in R_{2}(j, s)}\left(y_{i}-c_{2}\right)^{2}\right] j,sminc1minxiR1(j,s)(yic1)2+c2minxiR2(j,s)(yic2)2

  容易得出,在 j j j s s s固定时, c 1 = 1 N 1 ∑ x i ∈ R 1 y i , c 2 = 1 N 2 ∑ x i ∈ R 2 y i c_{1}=\frac{1}{N_{1}} \sum_{x_{i} \in R_{1}} y_{i}, \quad c_{2}=\frac{1}{N_{2}} \sum_{x_{i} \in R_{2}} y_{i} c1=N11xiR1yi,c2=N21xiR2yi

  遍历变量 j j j,对固定的切分变量 j j j扫描切分点 s s s,选择使其值达到最小的对 ( j , s ) (j,s) (j,s)

  2.用选定的对 ( j , s ) (j,s) (j,s)划分区域并决定相应的输出值:
R 1 ( j , s ) = { x ∣ x ( j ) ⩽ s } , R 2 ( j , s ) = { x ∣ x ( j ) > s } c ^ m = 1 N m ∑ x i ∈ R m ( j , s ) y i , x ∈ R m , m = 1 , 2 \begin{array}{c} R_{1}(j, s)=\left\{x \mid x^{(j)} \leqslant s\right\}, \quad R_{2}(j, s)=\left\{x \mid x^{(j)}>s\right\} \\ \hat{c}_{m}=\frac{1}{N_{m}} \sum_{x_{i} \in R_{m}(j, s)} y_{i}, \quad x \in R_{m}, \quad m=1,2 \end{array} R1(j,s)={xx(j)s},R2(j,s)={xx(j)>s}c^m=Nm1xiRm(j,s)yi,xRm,m=1,2

  3.继续对两个子区域调用步骤(1),(2),直至满足停止条件。

  4.将输入空间划分为 M M M个区域 R 1 , R 2 , ⋯   , R M R_{1}, R_{2}, \cdots, R_{M} R1,R2,,RM,生成决策树:
f ( x ) = ∑ m = 1 M c ^ m I ( x ∈ R m ) f(x)=\sum_{m=1}^{M} \hat{c}_{m} I\left(x \in R_{m}\right) f(x)=m=1Mc^mI(xRm)

三、提升树

  提升树(Boosting Decision Tree),是迭代多棵回归树来共同决策。当采用平方误差损失函数时,每一棵回归树学习的是之前所有树的结论和残差,拟合得到一个当前的残差回归树,残差的计算方法: 残 差 = 真 实 值 − 预 测 值 残差 = 真实值 - 预测值 =。提升树模型可以表示为决策树的加法模型。

f M ( x ) = ∑ m = 1 M T ( x ; Θ m ) f_{M}(x)=\sum_{m=1}^{M} T\left(x ; \Theta_{m}\right) fM(x)=m=1MT(x;Θm)

  其中, T ( x ; Θ m ) T(x;\Theta_m) T(x;Θm)表示决策树; Θ m \Theta_m Θm为决策树的参数; M M M为树的个数。

  提升树的构造过程如下:

  输入:训练数据集 T = { ( x 1 , y 1 ) , ( x 2 , y 2 ) , … , ( x N , y N ) } , x i ∈ R n , y i ∈ R T=\left\{\left(x_{1}, y_{1}\right),\left(x_{2}, y_{2}\right), \ldots,\left(x_{N}, y_{N}\right)\right\}, x_{i} \in R^{n}, y_{i} \in R T={(x1,y1),(x2,y2),,(xN,yN)},xiRn,yiR
  输出:提升树 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, \ldots, M m=1,2,,M

  • 计算残差 r m i = y i − f m − 1 ( x i ) , i = 1 , 2 , … , N r_{m i}=y_{i}-f_{m-1}\left(x_{i}\right), \quad i=1,2, \ldots, N rmi=yifm1(xi),i=1,2,,N
  • 拟合残差 r m i r_{mi} rmi学习一个回归树,得到 T ( x ; Θ m ) T(x;\Theta_m) T(x;Θm)
  • 更新 f m ( x ) = f m − 1 ( x ) + T ( x ; Θ m ) f_{m}(x)=f_{m-1}(x)+T\left(x ; \Theta_{m}\right) fm(x)=fm1(x)+T(x;Θm)

  3.得到回归问题提升树
f M ( x ) = ∑ m = 1 M T ( x ; Θ m ) f_{M}(x)=\sum_{m=1}^{M} T\left(x ; \Theta_{m}\right) fM(x)=m=1MT(x;Θm)

  提升树与回归树的区别:

  • 回归树:树的根节点分成2支后,再分别在这2支上做分支,以此递推,最终生成一颗完整的决策树;后续再剪枝。
  • 提升树:获得一颗二叉树后,利用残差,再在完整的数据集上生成一颗二叉树,最终将多颗二叉树累加组成一个最终的函数。

四、GBDT的原理

  提升树利用加法模型和前向分步算法实现学习的优化过程。当损失函数时平方损失和指数损失函数时,每一步的优化很简单,如平方损失函数学习残差回归树;但对于一般的损失函数,往往每一步优化没那么容易。因此,Freidman提出了梯度提升算法(gradient boosting)。该算法利用最速下降的近似方法,其关键是利用损失函数的负梯度在当前模型的值
r m i = − [ ∂ L ( y i , f ( x i ) ) ∂ f ( x i ) ] f ( x ) = f m − 1 ( x ) r_{m i}=-\left[\frac{\partial L\left(y_{i}, f\left(x_{i}\right)\right)}{\partial f\left(x_{i}\right)}\right]_{f(x)=f_{m-1}(x)} rmi=[f(xi)L(yi,f(xi))]f(x)=fm1(x)
  作为回归问题中提升树算法的残差的近似值,拟合一个回归树。

  梯度提升算法的过程如下:

  • 输入:训练数据集 T = { ( x 1 , y 1 ) , ( x 2 , y 2 ) , … ( x N , y N ) } , x i ∈ R n , y i ∈ R T=\left\{\left(x_1, y_{1}\right),\left(x_{2}, y_{2}\right), \ldots\left(x_{N}, y_{N}\right)\right\}, x_{i} \in R^{n}, y_{i} \in R T={(x1,y1),(x2,y2),(xN,yN)},xiRn,yiR;损失函数 L ( y , f ( x ) ) L(y,f(x)) L(y,f(x))

  • 输出:回归树 f ^ ( x ) \hat{f}(x) f^(x)

  • 1.初始化

f 0 ( x ) = arg ⁡ min ⁡ ⏟ c ∑ i = 1 N L ( y i , c ) f_{0}(x)=\underbrace{\arg \min }_{c} \sum_{i=1}^{N} L\left(y_{i}, c\right) f0(x)=c argmini=1NL(yi,c)

  • 2.对 m = 1 , 2 , … , M m=1,2, \ldots, M m=1,2,,M

    • i = 1 , 2 , … , N i=1,2, \ldots, N i=1,2,,N,计算 r m i = − [ ∂ L ( y i , f ( x i ) ) ∂ f ( x i ) ] f ( x ) = f m − 1 ( x ) r_{m i}=-\left[\frac{\partial L\left(y_{i}, f\left(x_{i}\right)\right)}{\partial f\left(x_{i}\right)}\right]_{f(x)=f_{m-1}(x)} rmi=[f(xi)L(yi,f(xi))]f(x)=fm1(x),即损失函数的负梯度在当前模型的值,将其作为残差的估计;
    • r m i r_{mi} rmi拟合一个回归树,得到第 m m m棵树的叶节点区域 R m i , j = 1 , 2 , … , J R_{mi}, j=1,2, \ldots, J Rmi,j=1,2,,J
    • j = 1 , 2 , … , J j=1,2, \ldots, J j=1,2,,J,计算 c m j = argmin ⁡ c ∑ x i ∈ R m j L ( y i , f m − 1 ( x i ) + c ) c_{m j}=\operatorname{argmin}_{c} \sum_{x_{i} \in R_{m j}} L\left(y_{i}, f_{m-1}\left(x_{i}\right)+c\right) cmj=argmincxiRmjL(yi,fm1(xi)+c)
    • 其中 I I I为指示函数,定义为 I ( λ ) = { 1 , i f    λ    i s    T r u e 0 , i f    λ    i s    F a l s e I(\lambda) = \begin{cases} 1, \quad if \ \ \lambda \ \ is \ \ True \\ 0, \quad if \ \ \lambda \ \ is \ \ False \end{cases} I(λ)={1,if  λ  is  True0,if  λ  is  False
    • 更新回归树 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\left(x \in R_{m j}\right) fm(x)=fm1(x)+j=1JcmjI(xRmj)
  • 3.得到最终的回归树: f ^ ( x ) = f M ( x ) = ∑ m = 1 M ∑ j = 1 J c m j I ( x ∈ R m j ) \hat{f}(x)=f_{M}(x)=\sum_{m=1}^{M} \sum_{j=1}^{J} c_{m j} I\left(x \in R_{m j}\right) f^(x)=fM(x)=m=1Mj=1JcmjI(xRmj)

  分类算法

  GBDT的分类算法从思想上和GBDT的回归算法没有区别,但是由于样本输出不是连续的值,而是离散的类别,从而无法直接从输出类别去拟合类别输出的误差。因此采用指数损失函数,或者用类似于逻辑回归的对数似然损失函数,即用类别的预测概率值和真实概率值的差来拟合损失。

  对于二元GBDT,采用对数似然损失函数,则损失函数为:
L ( y , f ( x ) ) = log ⁡ ( 1 + exp ⁡ ( − y f ( x ) ) ) L(y, f(x))=\log (1+\exp (-y f(x))) L(y,f(x))=log(1+exp(yf(x)))

  其中 y ∈ { − 1 , + 1 } y \in \{−1,+1\} y{1,+1},负梯度误差为
r m i = − [ ∂ L ( y , f ( x i ) ) ) ∂ f ( x i ) ] f ( x ) = f m − 1 ( x ) = y i / ( 1 + exp ⁡ ( y i f ( x i ) ) ) r_{m i}=-\left[\frac{\left.\partial L\left(y, f\left(x_{i}\right)\right)\right)}{\partial f\left(x_{i}\right)}\right]_{f(x)=f_{m-1}(x)}=y_{i} /\left(1+\exp \left(y_{i} f\left(x_{i}\right)\right)\right) rmi=[f(xi)L(y,f(xi)))]f(x)=fm1(x)=yi/(1+exp(yif(xi)))

  各叶子节点的最佳负梯度拟合值为:
c m j = arg ⁡ min ⁡ ⁡ c ∑ x i ∈ R m j log ⁡ ( 1 + exp ⁡ ( − y i ( f t − 1 ( x i ) + c ) ) ) c_{m j}=\operatorname{\arg \min}_{c} \sum_{x_{i} \in R_{m j}} \log \left(1+\exp \left(-y_{i}\left(f_{t-1}\left(x_{i}\right)+c\right)\right)\right) cmj=argmincxiRmjlog(1+exp(yi(ft1(xi)+c)))

由于该式较为冗长,难以优化,采用其近似值:
c m j = ∑ x i ∈ R m j r m i / ∑ x i ∈ R m j ∣ r m i ∣ ( 1 − ∣ r m i ∣ ) c_{m j}=\sum_{x_{i} \in R_{m j}} r_{m i} / \sum_{x_{i} \in R_{m j}}\left|r_{m i}\right|\left(1-\left|r_{m i}\right|\right) cmj=xiRmjrmi/xiRmjrmi(1rmi)

  多元分类

  多元分类采用的是多元逻辑回归的损失函数,因此相对于二元分类,其算法要相对复杂一些。
  假设类别数为 K K K,则对数似然损失函数为:
L ( y , f ( x ) ) = − ∑ k = 1 K y k log ⁡ p k ( x ) L(y, f(x))=-\sum_{k=1}^{K} y_{k} \log p_{k}(x) L(y,f(x))=k=1Kyklogpk(x)
  其中样本输出类别为 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 ) = exp ⁡ ( f k ( x ) ) / ∑ l = 1 K exp ⁡ ( f l ( x ) ) p_{k}(x)=\exp \left(f_{k}(x)\right) / \sum_{l=1}^{K} \exp \left(f_{l}(x)\right) pk(x)=exp(fk(x))/l=1Kexp(fl(x))

  因此,第 m m m轮的第 i i i个样本对应类别 l l l的负梯度误差为:
r m i l = − [ ∂ L ( y i , f ( x i ) ) ) ∂ f ( x i ) ] f k ( x ) = f l , m − 1 ( x ) = y i l − p l , m − 1 ( x i ) r_{m i l}=-\left[\frac{\left.\partial L\left(y_{i}, f\left(x_{i}\right)\right)\right)}{\partial f\left(x_{i}\right)}\right]_{f_{k}(x)=f_{l, m-1}(x)}=y_{i l}-p_{l, m-1}\left(x_{i}\right) rmil=[f(xi)L(yi,f(xi)))]fk(x)=fl,m1(x)=yilpl,m1(xi)

  各个叶子节点的最佳负梯度拟合值为:
c m j l = arg ⁡ min ⁡ ⁡ c j l ∑ i = 0 m ∑ k = 1 K L ( y k , f m − 1 , l ( x ) + ∑ j = 0 J c j l I ( x i ∈ R m j l ) ) c_{m j l}=\operatorname{\arg \min }_{c_{j l}} \sum_{i=0}^{m} \sum_{k=1}^{K} L\left(y_{k}, f_{m-1, l}(x)+\sum_{j=0}^{J} c_{j l} I\left(x_{i} \in R_{m j l}\right)\right) cmjl=argmincjli=0mk=1KL(yk,fm1,l(x)+j=0JcjlI(xiRmjl))

  同样地,使用近似值代替:
c m j l = K − 1 K ∑ x i ∈ R m j l r m i l ∑ x i ∈ R m i l ∣ r m i l ∣ ( 1 − ∣ r m i l ∣ ) c_{m j l}=\frac{K-1}{K} \frac{\sum_{x_{i} \in R_{m j l}} r_{m i l}}{\sum_{x_{i} \in R_{m i l}}\left|r_{m i l}\right|\left(1-\left|r_{m i l}\right|\right)} cmjl=KK1xiRmilrmil(1rmil)xiRmjlrmil

  GBDT与提升树之间的关系:

  提升树模型每一次的提升都是靠上次的预测结果与训练数据的label值差值(即残差)作为新的训练数据进行重新训练,由于原始的回归树指定了平方损失函数所以可以直接计算残差;而梯度提升树针对一般损失函数,所以采用负梯度来近似求解残差,将残差计算替换成了损失函数的梯度方向,将上一次的预测结果带入梯度中求出本轮的训练数据。两种模型就是在生成新的训练数据时采用了不同的方法。

4.2 GBDT损失函数

  对于分类算法,其损失函数一般有对数损失函数和指数损失函数两种:

  指数损失函数: L ( y , f ( x ) ) = exp ⁡ ( − y f ( x ) ) L(y, f(x))=\exp (-y f(x)) L(y,f(x))=exp(yf(x))

  对数损失函数:

  • 二元分类: L ( y , f ( x ) ) = log ⁡ ( 1 + exp ⁡ ( − y f ( x ) ) ) L(y, f(x))=\log (1+\exp (-y f(x))) L(y,f(x))=log(1+exp(yf(x)))
  • 多元分类: L ( y , f ( x ) ) = − ∑ k = 1 K y k log ⁡ p k ( x ) L(y, f(x))=-\sum_{k=1}^{K} y_{k} \log p_{k}(x) L(y,f(x))=k=1Kyklogpk(x)

  对于回归算法,常用损失函数有4种:

  • 均方差: 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 ( x ) ) = ∣ y − f ( x ) ∣ L(y,f(x)) = |y-f(x)| L(y,f(x))=yf(x)
  • 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))=\left\{\begin{array}{ll} \frac{1}{2}(y-f(x))^{2} & |y-f(x)| \leq \delta \\ \delta\left(|y-f(x)|-\frac{\delta}{2}\right) & |y-f(x)|>\delta \end{array}\right. L(y,f(x))={21(yf(x))2δ(yf(x)2δ)yf(x)δyf(x)>δ

  对应的负梯度误差为:
r ( y i , f ( x i ) ) = { y i − f ( x i ) ∣ y i − f ( x i ) ∣ ≤ δ δ sign ⁡ ( y i − f ( x i ) ) ∣ y i − f ( x i ) ∣ > δ r\left(y_{i}, f\left(x_{i}\right)\right)=\left\{\begin{array}{ll} y_{i}-f\left(x_{i}\right) & \left|y_{i}-f\left(x_{i}\right)\right| \leq \delta \\ \delta \operatorname{sign}\left(y_{i}-f\left(x_{i}\right)\right) & \left|y_{i}-f\left(x_{i}\right)\right|>\delta \end{array}\right. r(yi,f(xi))={yif(xi)δsign(yif(xi))yif(xi)δyif(xi)>δ

  • 分位数损失:它对应的是分位数回归的损失函数。

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 ( y i , f ( x i ) ) = { θ y i ≥ f ( x i ) θ − 1 y i < f ( x i ) r\left(y_{i}, f\left(x_{i}\right)\right)=\left\{\begin{array}{ll} \theta & y_{i} \geq f\left(x_{i}\right) \\ \theta-1 & y_{i}<f\left(x_{i}\right) \end{array}\right. r(yi,f(xi))={θθ1yif(xi)yi<f(xi)

  对于Huber损失和分位数损失,主要用于健壮回归,也就是减少异常点对损失函数的影响。

4.3 GBDT正则化

  对GBDT进行正则化,防止过拟合。GBDT的正则化主要有三种方式。

  第一种是采用步长(learning rate)。定义为 ν \nu ν,对于前面的弱学习器的迭代:

f k ( x ) = f k − 1 ( x ) + h k ( x ) f_{k}(x)=f_{k-1}(x)+h_{k}(x) fk(x)=fk1(x)+hk(x)

  添加正则化项后:
f k ( x ) = f k − 1 ( x ) + ν h k ( x ) f_{k}(x)=f_{k-1}(x)+\nu h_{k}(x) fk(x)=fk1(x)+νhk(x)

  第二种是通过子采样比例(subsample)。取值为 ( 0 , 1 ] (0,1] (0,1]。子采样是不放回抽样。选择小于1的比例可以减少方差,防止过拟合,但是会增加样本拟合的偏差,因此取值不能太低,通常在 [ 0.5 , 0.8 ] [0.5, 0.8] [0.5,0.8]之间。使用了子采样的GBDT也称作随机梯度提升树(Stochastic Gradient Boosting Tree, SGBT)。由于使用了子采样,可以通过采样分发到不同的任务去做boosting的迭代过程,最后形成新树,从而减少弱学习器难以并行学习的弱点。

  第三种是对于弱学习器CART回归树进行正则化剪枝。

五、GBDT构建与测试

  利用GBDT,可以根据数据集的特征,对其进行分类等处理。Sklearn库中提供了GBDT相关的应用接口。

  对数据的预处理,以及相关的训练集、测试集分配,无关字段的删除等操作,与之前随机森林的构造方式相似,因此这里只列出模型相关的部分。

  首先采用默认参数构建GBDT:

gbr = GradientBoostingClassifier()
gbr.fit(x_train, y_train)
print("原始的相关数据指标:")

  模型构建完成后,查看训练后训练集、测试集各自的AUC Score,以及预测的效果。最终模型的预测准确率在77.13%。

在这里插入图片描述
在这里插入图片描述

  接下来通过网格搜索进行调参,优化模型的准确率。

  首先调整决策树的数量n_estimators。

param = {
    "n_estimators": range(50, 500, 20)
}

search = GridSearchCV(
    GradientBoostingClassifier(learning_rate=0.1,
                               loss='deviance'),
    param_grid=param)
search.fit(x_train, y_train)

在这里插入图片描述

  可见最优化时的n_estimators值为70。

  接下来在n_estimators=70的基础上,对最大深度max_depth和内部节点再划分所需最小样本数min_samples_split进行网格搜索。

param = {
    "max_depth": range(3, 14, 1),
    "min_samples_split" : range(2, 15, 1)
}

search = GridSearchCV(
    GradientBoostingClassifier(learning_rate=0.1,
                               loss='deviance',
                               n_estimators=70),
    param_grid=param)

在这里插入图片描述
在这里插入图片描述

  得出最大深度max_depth为6。

  然后对决策树调参,内部节点再划分所需最小样本数min_samples_split和叶子节点最少样本数min_samples_leaf进行调参。

param = {
    "min_samples_split": range(2, 15, 1),
    "min_samples_leaf": range(1, 15, 1)
}
search = GridSearchCV(
    GradientBoostingClassifier(learning_rate=0.1,
                               loss='deviance',
                               n_estimators=70,
                               max_depth=6),
    param_grid=param)

在这里插入图片描述
在这里插入图片描述

  得出min_samples_split=4,min_samples_leaf=3。
  最后利用得到的参数构建GBDT模型,查看其与默认模型的性能差异。

在这里插入图片描述
在这里插入图片描述

六、总结

  GBDT主要的特点:

  • 可以灵活处理各种类型的数据,包括连续值和离散值;
  • 在相对少的调参时间情况下,预测的准确率也可以比较高;
  • 使用一些健壮的损失函数,对异常值的鲁棒性较强;
  • 由于弱学习器之间存在依赖关系,难以并行训练数据。

网站文章

  • User Access Control 、Program Files 目录 与 Application Data 目录

    今天在debug一个奇怪的问题,一个程序在开发机器上没有任何错误,但是安装在客户机器上之后,只要客户运行它,就立刻停止响应。更加奇怪的是,程序本身没有输出任何日志。开始以为是安装包做的不好,但是几次实...

    2024-04-01 05:06:12
  • rate-based 借贷式拥塞控制算法

    rate-based 借贷式拥塞控制算法

    由 bpd = pacing_rate * rtt,可得一个恒等式 rtt = bdp * (1 / pacing_rate),而不占 buffer 时的 bdp 就是 cwnd 指示,于是可将 bu...

    2024-04-01 05:05:33
  • 北湖深坑题

    北湖深坑题

    北湖深坑题目信息输入输出测试样例解答题目信息十年前,北湖还只是一个深坑,未完成蓄水工作。为了确保蓄水工作的顺利进行,我们需要对北湖的蓄水量进行粗略估计。为了简化运算,我们假设北湖的地面是一维的,每一块...

    2024-04-01 05:05:26
  • linux上安装MySQL

    linux上安装MySQL

    linux上原有mysql卸载,安装mysql过程及遇到的问题和解决方法 一、前期准备 二、安装MySQL 三、遇到的问题

    2024-04-01 05:05:17
  • 安装moviepy库报错

    安装moviepy库报错

    由于已经存在这个库,因此在尝试使用pip进行安装时,会显示&quot;Found existing installation&quot;的信息,而不会重新安装。根据您提供的错误信息,&quot;Inv...

    2024-04-01 05:04:38
  • thymeleaf 添加页面隐藏值

    切记切记这样写是不对的: ...

    2024-04-01 05:04:30
  • 计算机辅助教学时必不可少的,浅谈计算机辅助教学在中学语文教学中的应用

    计算机辅助教学时必不可少的,浅谈计算机辅助教学在中学语文教学中的应用

    论文导读:在有了计算机网络及多媒体设施,情势便发生了很大改变。比如在讲授《再别康桥》这一课时,可以在课件中插入由濮存昕朗诵的《再别康桥》的录音。学生在听录音的时候,远比老师朗诵时要认真、专注许多。而且...

    2024-04-01 05:04:23
  • 【数学基础】线性方程组解情况整理

    【数学基础】线性方程组解情况整理

    一、非齐次线性方程组,无解,多解,唯一解 非齐次线性方程组,就是方程组的等式右边不为0的方程组,系数加上方程等式右边的矩阵,叫做增广矩阵。 【例1】求解下列线性方程组 化简后的有效方程组个数小于未知数个数,有多个解。 第一步,先列出增广矩阵: 第二步,用高斯消元法化简,化简成阶梯矩阵 先把第2行换到第1行 第2行减第1行的2倍,第3行减第1行的3倍,得到 第3行减...

    2024-04-01 05:03:44
  • 切换域名后,ssh配置问题

    OS:CentOS release 6.10 (Final)问题:今天在在gp迁移测试时,把GP备份的域名从A机迁移到了B机。配置后,发现使用ssh 命令登录到需要同步文件到GP备机时,发现失败,提示信息如下:@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@The RSA host key for gp69.d...

    2024-04-01 05:03:36
  • 全球WIFI功率(信号)最强的国家清单,无线WIFI调优

    全球WIFI功率(信号)最强的国家清单,无线WIFI调优

    全球无线wifi信号最强的国家,无线调优

    2024-04-01 05:03:28