Boosting ---- 加法模型、前向分步、Gradient Boosting、AdaBoost、GBDT

加法模型加法模型 (additive model) 形式如下:f(x)=∑m=1Mβmb(x;γm)f(x) = \sum_{m=1}^{M}\beta_mb(x;\gamma_m)f(x)=m=1∑M​βm​b(x;γm​)其中,b(x;γm)b(x;\gamma_m)b(x;γm​)是第mmm个基函数,γm\gamma_mγm​是第mmm个基函数的模型参数,βm\beta_mβm​是第m...
摘要由CSDN通过智能技术生成

加法模型

加法模型 (additive model) 形式如下:
f ( x ) = ∑ m = 1 M β m b ( x ; γ m ) f(x) = \sum_{m=1}^{M}\beta_mb(x;\gamma_m) f(x)=m=1Mβmb(x;γm)
其中, b ( x ; γ m ) b(x;\gamma_m) b(x;γm)是第 m m m个基函数, γ m \gamma_m γm是第 m m m个基函数的模型参数, β m \beta_m βm是第 m m m个基函数的权重。由此可见,加法模型实际上由一系列基函数的加权相加得到。
在给定训练数据 { ( x 0 , y 0 ) , ( x 1 , y 1 ) , . . . , ( x N , y N ) } \{(x_0, y_0), (x_1, y_1), ..., (x_N, y_N)\} { (x0,y0),(x1,y1),...,(xN,yN)}及损失函数 L ( y , f ( x ) ) L(y, f(x)) L(y,f(x))的情况下,学习加法模型 f ( x ) f(x) f(x)即损失函数极小化问题:
min ⁡ β m , γ m ∑ i = 1 N L ( y i , ∑ m = 1 M β m b ( x i ; γ m ) ) \min_{\beta_m, \gamma_m}\sum_{i=1}^{N}L(y_i, \sum_{m=1}^{M}\beta_mb(x_i;\gamma_m)) βm,γmmini=1NL(yi,m=1Mβmb(xi;γm))

因此可以看出加法模型的学习过程实际上是一个非常复杂的优化问题。

前向分步算法

前向分步算法 (forward stagewise algorithm) 是求解上述优化问题的一种算法,其思想是:从前往后,每一步只学习一个基函数及其系数,逐步逼近优化损失函数,从而简化优化的复杂度。其算法过程如下:

输入:训练数据集 { ( x 0 , y 0 ) , ( x 1 , y 1 ) , . . . , ( x N , y N ) } \{(x_0, y_0), (x_1, y_1), ..., (x_N, y_N)\} { (x0,y0),(x1,y1),...,(xN,yN)}; 损失函数 L ( y , f ( x ) ) L(y, f(x)) L(y,f(x));基函数集 { b ( x ; γ ) } \{b(x;\gamma)\} { b(x;γ)} (参数未优化)
输出:加法模型 f ( x ) f(x) f(x)

  1. 初始化 f 0 ( x ) = 0 f_0(x) = 0 f0(x)=0

  2. m = 1 , 2 , . . . , M m=1, 2, ..., M m=1,2,...,M
    (1) 极小化损失函数,得到参数 β m , γ m \beta_m, \gamma_m βm,γm

    ( β m , γ m ) = arg ⁡ min ⁡ β , γ ∑ i = 1 N L ( y i , f m − 1 ( x i ) + β b ( x i ; γ ) ) (\beta_m, \gamma_m) = \arg\min_{\beta, \gamma} \sum_{i=1}^{N}L(y_i, f_{m-1}(x_i)+\beta b(x_i;\gamma)) (βm,γm)=argβ,γmini=1NL(yi,fm1(xi)+βb(xi;γ))
    (2) 更新
    f m ( x ) = f m − 1 ( x ) + β m b ( x ; γ m ) f_m(x) = f_{m-1}(x)+\beta_m b(x;\gamma_m) fm(x)=fm1(x)+βmb(x;γm)

  3. 得到最终的加法模型
    f ( x ) = f m ( x ) = ∑ m = 1 M β m b ( x ; γ m ) f(x) = f_m(x) = \sum_{m=1}^{M}\beta_mb(x;\gamma_m) f(x)=fm(x)=m=1Mβmb(x;γm)

前向分步算法将同时求解 M M M个基函数的参数及系数的优化问题,简化成了逐步求解每个基函数的参数及系数的优化问题。前向分步算法的第 m m m个基函数参数及系数 β m , γ m \beta_m, \gamma_m βm,γm的确定,仅考虑当前状态下使损失函数极小化即局部最优解,是一种贪婪算法,不一定能够得到全局最优解。
集成模型的提升 (Boosting) 方法即采用了加法模型与前向分布算法。 以决策树为基函数的提升方法成为提升树。

AdaBoost

Adaboost是一种迭代算法,其核心思想是针对同一个训练集训练不同的分类器 (弱分类器),然后把这些弱分类器集合起来,构成一个更强的最终分类器 (强分类器)。AdaBoost是一种集成学习中的Boosting算法。

AdaBoost的主要思想:

  • 先训练出一个基学习器
  • 根据该学习器的表现对训练样本分布进行调整,使得现有基学习器做错的样本在后续学习器的训练中受到更多关注 (即增加权重)
  • 基于调整后的样本分布来训练下一个基学习器
  • 如此重复进行直至基学习器数目达到事先指定的值 M M M
  • 最终将这 M M M个基学习器进行加权结合

AdaBoost的函数形式如下:
H ( x ) = ∑ m = 1 M α m h m ( x ) H(x) = \sum_{m=1}^{M}\alpha_m h_m(x) H(x)=m=1Mαmhm(x)
由此可见,AdaBoost是一种加法模型。AdaBoost的损失函数采用指数损失:
L o s s = ∑ i = 1 N e − y i H ( x i ) Loss = \sum_{i=1}^{N}e^{-y_iH(x_i)} Loss=i=1NeyiH(xi)
在这里, y i ∈ { − 1 , + 1 } y_i \in \{-1, +1\} yi{ 1,+1}
y i = H ( x i ) y_i = H(x_i) yi=H(xi)时, − y i H ( x i ) = − 1 -y_iH(x_i) = -1 yiH(xi)=1
y i ≠ H ( x i ) y_i \not= H(x_i) yi=H(xi)时, − y i H ( x i ) = 1 -y_iH(x_i) = 1 yiH(xi)=1

AdaBoost算法过程如下:

输入:训练数据集 { ( x 0 , y 0 ) , ( x 1 , y 1 ) , . . . , ( x N , y N ) } \{(x_0, y_0), (x_1, y_1), ..., (x_N, y_N)\} { (x0,y0),(x1,y1),...,(xN,yN)},其中 y i ∈ { − 1 , + 1 } y_i \in \{-1, +1\} yi{ 1,+1};基分类器 { h ( x ) } \{h(x)\} { h(x)} (参数未优化)
输出:强分类器 H ( x ) H(x) H(x)

  1. 初始化训练数据的权值分布 D 1 = ( w 1 , 1 , w 1 , 2 , … , w 1 , N ) , w 1 , i = 1 N , i = 1 , 2 , … , N D_1=(w_{1,1},w_{1,2},…,w_{1,N}),w_{1,i}=\frac{1}{N},i=1,2,…,N D1=(w1,1,w1,2,,w1,N),w1,i

  • 2
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值