Coursera - 机器学习技法 - 课程笔记 - Week 11

Gradient Boosting Decision Tree

AdaBoost Decision Tree

  • 将AdaBoost应用到DT:对数据加权,对加权数据学习 DTree ⁡ ( D , u t ) \operatorname{DTree}(\mathcal D, \bold u^t) DTree(D,ut)
  • 不像AdaBoost那样将算法进行加权修改?
    • 调整数据在数据集中出现的比例——按权重比例采样得到 D ~ t \tilde{\mathcal D}_t D~t
  • 对于完全生成决策树,往往对于既有数据,所有数据不同, E i n = 0 E_{in} = 0 Ein=0
    • 投票系数如果按照 α t = 1 − ϵ t ϵ t \alpha_t = \sqrt{\frac {1 - \epsilon_t}{\epsilon_t}} αt=ϵt1ϵt ,会得到无穷大系数
    • 需要对DT进行剪枝——限制树的高度
    • 基于部分数据而非全部数据——采样过程已经实现
    • 一个特例:树限制为1层(纯度由分类损失)——AdaBoost-Stump

Optimization of AdaBoost

  • 权重变更: u n ( t + 1 ) = u n ( t ) ⋅ m t − y n g t ( x n ) = u n ( t ) ⋅ exp ⁡ ( − y n α t g t ( x n ) ) u_n^{(t + 1)} = u_n^{(t)} \cdot m_t^{-y_n g_t(\bold x_n)} = u_n^{(t)} \cdot \exp (-y_n \alpha_t g_t(\bold x_n)) un(t+1)=un(t)mtyngt(xn)=un(t)exp(ynαtgt(xn))
  • T T T次训练整合:

u n ( t + 1 ) = u n ( t ) ⋅ ∏ t = 1 T exp ⁡ ( − y n α t g t ( x n ) ) = 1 N exp ⁡ ( − y n ∑ t = 1 T α t g t ( x n ) ) ​ u_n^{(t + 1)} = u_n^{(t)} \cdot \prod _{t = 1}^T \exp (-y_n \alpha_t g_t(\bold x_n)) = \frac 1N \exp (-y_n \sum_{t = 1}^T \alpha_t g_t(\bold x_n))​ un(t+1)=un(t)t=1Texp(ynαtgt(xn))=N1exp(ynt=1Tαtgt(xn))

  • 最终的 G ( x n ) = sign ⁡ ( ∑ t α t g t ( x n ) ) G(\bold x_n) = \operatorname{sign}(\sum_t \alpha_t g_t(\bold x_n)) G(xn)=sign(tαtgt(xn))
    • 括号内称之为投票分数
  • 类比SVM,投票分数乘上 y n y_n yn,表示符号和非归一化的间隔
    • 我们希望间隔越来越大
    • 那么权重更新的指数项就会更小
    • 因此整体权重就会更小—— ∑ n u N ( t ) \sum_n u_N^{(t)} nuN(t)越来越小
  • AdaBoost的最小化目标函数:

∑ n = 1 N u n ( t + 1 ) = 1 N ∑ n = 1 N exp ⁡ ( − y n ∑ t = 1 T α t g t ( x n ) ) \sum_{n = 1}^N u_n^{(t + 1)} = \frac 1N \sum_{n = 1}^N \exp (-y_n \sum_{t = 1}^T \alpha_t g_t(\bold x_n)) n=1Nun(t+1)=N1n=1Nexp(ynt=1Tαtgt(xn))

  • s = ∑ t α t g t ( x n ) s = \sum_t \alpha_t g_t(\bold x_n) s=tαtgt(xn),那么上式的 e r r A D A = exp ⁡ ( − y s ) err_{ADA} = \exp(-ys) errADA=exp(ys)称为指数loss,为0/1 loss的上界——做好AdaBoost可以想办法把0/1 loss做的好
  • 梯度下降优化:找到一个“方向” g t g_t gt(下述中的 h h h),以优化:

min ⁡ h E ^ A D A = 1 N ∑ n = 1 N exp ⁡ ( − y n ( ∑ τ = 1 t − 1 α τ g τ ( x n ) + η h ( x n ) ) ) \min_h \quad \hat E_{ADA} = \frac 1N \sum_{n = 1}^N \exp \left(-y_n \left(\sum_{\tau = 1}^{t - 1} \alpha_{\tau} g_{\tau}(\bold x_n) + \eta h(\bold x_n) \right) \right) hminE^ADA=N1n=1Nexp(yn(τ=1t1ατgτ(xn)+ηh(xn)))

  • 带入上述的权重更新公式以及泰勒展开得到近似结果:

min ⁡ h E ^ A D A ≈ ∑ n = 1 N u n ( t ) − η ∑ n = 1 N u n ( t ) y n h ( x n ) \min_h \quad \hat E_{ADA} \approx \sum_{n = 1}^N u_n^{(t)} - \eta \sum_{n = 1}^N u_n^{(t)} y_n h(\bold x_n) hminE^ADAn=1Nun(t)ηn=1Nun(t)ynh(xn)

  • 最小化目标(后一项):

min ⁡ h ∑ n = 1 N u n ( t ) y n h ( x n ) \min_h \quad \sum_{n = 1}^N u_n^{(t)} y_n h(\bold x_n) hminn=1Nun(t)ynh(xn)

  • 对二分类任务, h ( x ) h(\bold x) h(x)取值为 { − 1 , + 1 } \{-1, +1\} {1,+1},因此有(后一项省去了样本数 N N N):

∑ n = 1 N u n ( t ) y n h ( x n ) = − ∑ n u n ( t ) + 2 E i n u ( t ) ( h ) \sum_{n = 1}^N u_n^{(t)} y_n h(\bold x_n) = -\sum_n u_n^{(t)} + 2 E_{in}^{u^{(t)}}(h) n=1Nun(t)ynh(xn)=nun(t)+2Einu(t)(h)

  • 从AdaBoost的算法中找出的好的 g t g_t gt,也就对应着GD优化中的 h h h
  • AdaBoost找到最理想的 g t g_t gt之后,是否可以最大化 η \eta η?(系数)
    • 最优化的 η t \eta_t ηt相比于固定的 η \eta η是贪婪地更快的
    • 正例 u n ( t ) exp ⁡ ( − η ) u_n^{(t)} \exp(- \eta) un(t)exp(η)
    • 反例 u n ( t ) exp ⁡ ( + η ) u_n^{(t)} \exp(+ \eta) un(t)exp(+η)
  • 改进目标:

E ^ A D A = ( ∑ n = 1 N u n ( t ) ) ⋅ ( ( 1 − ϵ t ) exp ⁡ ( − η ) + ϵ t exp ⁡ ( + η ) ) \hat E_{ADA} = \left( \sum_{n = 1}^N u_n^{(t)} \right) \cdot \left( (1 - \epsilon_t) \exp(-\eta) + \epsilon_t \exp(+\eta) \right) E^ADA=(n=1Nun(t))((1ϵt)exp(η)+ϵtexp(+η))

  • 上式对 η \eta η求导,得到最优 η y = ln ⁡ 1 − ϵ t ϵ t = α t \eta_y = \ln \sqrt{\frac {1 - \epsilon_t} {\epsilon_t}} = \alpha_t ηy=lnϵt1ϵt =αt

  • AdaBoost:函数近似梯度的最大下降

Gradient Boosting

  • 梯度下降角度的AdaBoost的形式化(二元输出假设函数):

min ⁡ η min ⁡ h 1 N ∑ n = 1 N exp ⁡ ( − y n ( ∑ τ = 1 t − 1 α τ g τ ( x n ) + η h ( x n ) ) ) \min_{\eta} \min_{h} \quad \frac 1N \sum_{n = 1}^N \exp \left(-y_n \left(\sum_{\tau = 1}^{t - 1} \alpha_{\tau} g_{\tau}(\bold x_n) + \eta h(\bold x_n) \right) \right) ηminhminN1n=1Nexp(yn(τ=1t1ατgτ(xn)+ηh(xn)))

  • 通用化梯度Boost:

min ⁡ η min ⁡ h 1 N ∑ n = 1 N err ⁡ ( ∑ τ = 1 t − 1 α τ g τ ( x n ) + η h ( x n ) , y n ) \min_{\eta} \min_{h} \quad \frac 1N \sum_{n = 1}^N \operatorname{err} \left(\sum_{\tau = 1}^{t - 1} \alpha_{\tau} g_{\tau}(\bold x_n) + \eta h(\bold x_n) , y_n \right) ηminhminN1n=1Nerr(τ=1t1ατgτ(xn)+ηh(xn),yn)

  • 上式中, h h h可以改进为任意的假设函数,通常为实值输出函数

  • 回归任务: e r r ( s , y ) = ( s − y ) 2 err(s, y) = (s - y)^2 err(s,y)=(sy)2

    • 泰勒展开后近似: min ⁡ h   c o n s t a n t + η N ∑ n 2 h ( x n ) ( s n − y n ) \min_h \ constant + \frac \eta N \sum_n 2 h(\bold x_n) (s_n - y_n) minh constant+Nηn2h(xn)(snyn)
    • h h h的幅度由 η \eta η控制
    • 避免够大的幅度,引入惩罚项: min ⁡ h   c o n s t a n t + η N ∑ n ( 2 h ( x n ) ( s n − y n ) + h ( x n ) ) 2 \min_h \ constant + \frac \eta N \sum_n (2 h(\bold x_n) (s_n - y_n) + h(\bold x_n))^2 minh constant+Nηn(2h(xn)(snyn)+h(xn))2
    • 化简: min ⁡ h   c o n s t a n t + η N ∑ n ( c o n s t a n t + ( h ( x n ) − ( y n − s n ) ) ) 2 ) \min_h \ constant + \frac \eta N \sum_n (constant + (h(\bold x_n) - (y_n - s_n)))^2) minh constant+Nηn(constant+(h(xn)(ynsn)))2)
    • 目标,新的 h h h要尽可能拟合现有的残差,即在 { x n , y n − s n } \{ \bold x_n, y_n - s_n\} {xn,ynsn}上的回归
  • 探索 η \eta η min ⁡   1 N ∑ n ( s n + η g t ( x n ) − y n ) 2 \min \ \frac 1N \sum_n (s_n + \eta g_t(\bold x_n) - y_n)^2 min N1n(sn+ηgt(xn)yn)2

    • 进一步化简: min ⁡   1 N ∑ n ( ( y n − s n ) − η g t ( x n ) ) 2 \min \ \frac 1N \sum_n ((y_n - s_n) - \eta g_t(\bold x_n))^2 min N1n((ynsn)ηgt(xn))2
    • 另外一个单变量线性回归回归,在 { g t   i n p u t , r e s i d u a l } \{g_t \ input, residual\} {gt input,residual}上的回归
  • 总结:GBDT,每一次迭代

    • 由回归算法完成对 { x n , y n − s n } \{ \bold x_n, y_n - s_n\} {xn,ynsn}的最小平方误差回归(初始化分数为0)
      • 这里需要考虑对数据的采样和CART的剪枝
    • 计算系数 α t \alpha_t αt,通过对 { g t ( x n ) , y n − s n } \{ g_t(\bold x_n), y_n - s_n \} {gt(xn),ynsn}的先行回归获得
    • 更新分数的计算规则 s n ← s n + α t g t ( x n ) s_n \gets s_n + \alpha_t g_t(\bold x_n) snsn+αtgt(xn)
    • 迭代结束,返回最终的 G G G

Summary of Aggregation

  • 强大的 G G G可解解决单个分类器欠拟合的问题
  • 适当的 G G G也可以缓解过拟合的问题
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值