机器学习经典算法 - Bagging & Boosting

Ensemble Learning

集成学习通过整合多个不同模型来实现对复杂问题的更准确建模,其实现方式多样,但共同的特征是:从总体数据集的多个子集中发掘出针对该子集具有分类能力,但不一定在其他子集当中同样有效的特征,通过该特征分别实现数据集的分类,再将结果进行集成。

Bagging & Boosting 是集成学习的典型代表。最简单的 Ensemble Learning 就是通过将数据随机划分多个子集,在每个子集上进行拟合,再将最终结果进行平均化,这种方法也被称为 Bagging,或者称为 Bootstrap aggregation,其实现优化的原理在于其可以通过平均化差异使得最终的模型可以有效的防止异常数据的影响。

Boosting

在此重点介绍以 AdaBoost (Adaptive Boosting) 为代表的 Boosting 算法,Boosting 算法想解决的核心问题就在于是否可以通过一系列的 Weak Learner 的组合来实现一个更高性能的 Learner 模型,这个过程中的性能增强也就是 Boosting 这个名称的由来。AdaBoost 算法中涉及到的两个重要的概念是 Weak learner 和样本权重:

  • Weak Learner:被定义为对于服从任意分布 D 的样本,其分类准确率仅需高于随机猜测的结果,在实际算法中 Weak Learner 可以是任意已知的监督学习方法,如 SVM,线性回归,逻辑回归,甚至是深度神经网络,但最常用的是决策树

What weak learner you should choose is then a trade off between 3 factors:

  • The bias of the model. A lower bias is almost always better, but you don't want to pick something that will overfit (yes, boosting can and does overfit)
  • The training time for the weak learner. Generally we want to be able to learn a weak learner quickly, as we are going to be building a few hundred (or thousand) of them.
  • The prediction time for our weak learner. If we use a model that has a slow prediction rate, our ensemble of them is going to be a few hundred times slower!
  • 样本权重:在实际问题中,很可能存在的情况是某些样本相对另一些样本来说出现的可能性更大,此时仅仅采用平均化的方式过于简化,在实际的 Boosting 算法中一般采用加权平均的方式

The observation weight might come in as domain knowledge for example, we may know, based on past experience, that we are more likely to encounter a training example j compared to example k. Therefore we should assign a larger weight to example j, since it is the one that will have a greater influence on our function approximation process.

对于样本给予权重的一个好处是我们可以在计算分类器的误差的同时也将样本权重考虑在内。具体地,对于一个包含 N 个样本的样本集 (xi, yi),xi 为包含多个特征的向量,yi 的取值为 -1 或 1,假设对于任意一个分类器 G 来说,其针对任意输入 xi 对应的预测值为 G(xi) ∈ {-1, 1},此时在不考虑样本权重时可以通过统计被错误分类的样本数量来计算误差值:

  • error = ΣI(yi ≠ G(xi)), i = 1, 2, ... , N

在考虑权重后,这一误差值则可以改进为:

  • error = ΣwiI(yi ≠ G(xi)) / Σwi, i = 1, 2, ... , N

AdaBoost 算法实现

AdaBoost 算法的实现过程为:

  • 首先初始化各个样本的权重值,令 wi = 1 / N

  • 对于 m = 1 到 M,循环执行:

    • 在考虑样本权重 wi 的前提下训练一个分类器 Gm(x)
    • 计算考虑权重的误差值 errm = ΣwiI(yi ≠ G(xi)) / Σwi, i = 1, 2, ... , N
    • 计算 αm = log((1 - errm) / errm)
    • 对于 i = 1, 2, ... , N,更新权重 wi = wi ⋅ eαmI(yi ≠ G(xi))
  • G(x) = sign[αmGm(x)], m = 1, 2, ... , M

上述计算过程中 αm 和 errm 的关系如下图所示,其中:

  • 当 errm < 0.5,也即若分类器的误差表现高于随机猜测时,αm > 0,且误差 errm 越小,αm 越大,也即当前这个分类器 Gm(x) 的准确率越高

  • 样本权重更新过程中,当 Gm(x) 无法准确分类样本 xi 时,wi 会变大,后续的分类器 Gm+1(x) 就会对这个样本更加重视,反之亦然

The AdaBoost algorithm trains multiple weak classifiers on training data, and then combines those weak classifiers into a single boosted classifier. The combination is done through a weighted sum of the weak classifiers with weights dependent on the weak classifier accuracy.

The relationship between α and error

注意事项

尽管 Boosting 在对抗过拟合方面有先天的优势,当采用深度神经网络作为 Weak learner 时,这一优势将不再明显。另外,当数据中存在 pink noise 也即 uniform noise 时,Boosting 仍然无法避免过拟合。

参考阅读

  1. What is a weak learner?

  2. The Boosting Approach to Machine Learning

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 以西瓜书为主线,以其他书籍作为参考进行补充,例如《统计学习方法》,《PRML》等 第一章 绪论 1.2 基本术语 ...
    danielAck阅读 4,721评论 0 5
  • 这里总结了常见的几个机器学习算法:朴素贝叶斯、决策树、逻辑回归、线性回归、KNN、SVM、Boosting、聚类、...
    xzhren阅读 956评论 0 6
  • 以前一直画素描,慢慢地觉得颜色太过于单一,就尝试着画水彩。我喜欢颜色鲜艳的花,所以就在网上找了花儿的图片照着画。 ...
    Roby枫落阅读 355评论 0 0
  • 上午查房宣教,询问是否满意,都表示非常满意,关系紧张吗?20多年的工作经历有时候确实也会碰到不讲理的,可哪行哪业都...
    镶金边的云阅读 168评论 0 1
  • 初冬的下午的阳光隔着玻璃照在身上,暖暖的,让人觉得很舒服。屋子遮挡了已经有些寒意的风,我特意挑了一张靠窗的位子,...
    惊恐的小馄饨阅读 271评论 0 1