经典机器学习算法回顾之Boost框架

在整个西海岸的小伙伴都跑到Vegas去听周董地表最强的演唱会的时候,淡定的包子君将带大家来快速回顾一下经典 Boost 机器学习算法。

Boost 框架是一种通过累加弱模型来产生一个强模型的方法。它和一般的 Bagging 投票方法相比较,它们的相同点都是累加弱模型,但区别是在投票模型中, 每一个弱模型都是预测最终结果的(通过不同Groups的features),而 Boost 框架中的第k个弱模型是预测前面 1...k-1个累加模型与正确答案之间的残差 (residual), 也就是说 Boost 框架通过不断消除残差来提高模型精度。

Boost 框架的一般形式为:

M是总共弱模型个数, βm是每个弱模型的权重, gm是每个弱模型。 我们也可把它写成递归的形式:

Boost 框架训练的目标为:

N是总共训练样例的数目, L是 Loss 函数。在优化时,我们采取迭代增加弱模型的方法, 用第m个模型去拟合每次前面m-1模型和的残差。

对于 Boost 框架,我们有两种常见的应用,分别是 Ada-Boost 自适应增强分类器 和 GDBT 增强回归树。

Ada-Boost 自适应增强分类器

对于输入

以及弱分类器集合

Ada-Boost 会通过Boost 框架从K个弱分类器中找到M个最佳弱分类器并分配其权重来优化一个指数型损失函数。

为了选择第m个弱分类器及其权重,我们先假设已经得到了前面m-1个,于是损失函数成为:

我们通过尝试M个不同的弱分类器,假设

可以找到,损失函数最小的那个,并且通过对βm 求导等于零来得到其系数的值:

其中:

迭代以上步骤M次即可得到由M个弱分类器组成的强分类器。

GDBT 增强回归树

增强回归树是通过之前提到的 Boost 方法,不断累加弱回归树来得到一个强的回归模型。 唯一的区别是,我们用导函数去近似残差,把m棵回归树拟合成前面m-1棵树和的负导数,于是我们有:

对于回归问题,我们可以用 Least Square 来作为作为损失函数:

同样我们用最小二乘回归树来拟合gm函数,在这里我们不详细展开讨论回归树是如何构建的。简单地说,最小二乘回归树通过不断地 branch, 把输入空间中的N个点

映射到T个空间

并给每个空间 assign 一个值Rt,使得下面的回归树损失函数最小化:

其中

是一个指标函数,当xn被划分为第t个 Region 的时候

为 1,其余情况全为 0 。

每一轮迭代我们就用产生一棵新的回归树gm与之前所训练的m-1棵树相加,一直到迭代结束。

Boost 框架的问题及改进

在使用中,我们发现 Boost 方法能够很灵活地拟合各种复杂的训练样本,但在泛化方面却有一定的问题。 Boost 框架和 以随机森林 (Random Forest) 为代表的 Bagging 方法同为 模型 Ensemble 的思路,却着重优化了两个不同的方面:偏差 (Bias) 和 方差 (Variance)。

对于 Boost 方法来说, 由于每一个弱分类器都为了是减少上一个弱分类器在训练样本里的偏差,所以最终 Ensemble 的 偏差 会较小,也就是模型比较灵活 (flexible); 而对于 Bagging 的方法来说恰恰相反,每一弱分类器都独立预测了最终的结果,通过平均结果的方法,我们把预测结果的方差也减少到了原来每个弱分类器的

为了提高 Boost 方法的泛化性能, 我们常常会在训练时,对其加入多个 Regularization 约束,并通过 Early Stopping 的方式来防止 Over-Fitting 。

好了,这次的 Boost 框架包子君就先带大家回顾到这里,如有还有什么不明白的,欢迎在留言中提问哦。

原文发布于微信公众号 - 包子铺里聊IT(baozitraining)

原文发表时间:2019-02-10

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

扫码关注云+社区

领取腾讯云代金券