集成学习(Ensemble Learning)

LR、SVM、DT 等都是单个学习器的机器学习方法,而集成学习方法则不同,它并不是单个学习器,而是一个集成了多个 learner 的学习框架。

  1. 集成学习概念
  2. Bagging
  3. Boosting
  4. Stacking

1. 集成学习概念

我们经常所说的 ”三个臭皮匠赛过诸葛亮“ 则简要说明了集成学习方法的思想。即:将多个基础学习器通过某种方法整合到一起,则其学习效果可能大大优于单个强学习器。

那么,这个集成学习方法能够带来什么样的好处呢?

  1. 可以提升单个分类器的预测准确性。例如:单个学习器的性能上不来了,我们可以通过整合多个学习器来提升单个学习器的性能上限。
  2. 可以避免模型选择问题。例如:我们训练出的多个模型,要选择哪个呢?干脆我们就不选,将多个模型整合到一起使用。

关于构建一个集成学习系统,我们需要思考几个问题:

  1. 基习器使用不同的学习方法还是相同的?
  2. 这些基学习器应该注意哪些?
  3. 多个基学习器的集成策略有哪些?

1. 基础学习器使用不同的学习方法还是相同的?

基础学习器可以使用不同的学习模型,比如:将支持向量机、神经网络、决策树整合到一起作为一个集成学习系统。也可以使用相同的学习模型,比如,多个基学习器都使用决策树。

一般情况下,我们倾向于使用相同的学习模型。

2. 这些基础的学习器应该注意哪些?

  1. 基础学习器之间要存在差异性。比如:所有的基础学习器如果都相同的话,只需要一个就可以了,没必要搞这么多。那么,如何设置学习器之间的差异呢?
    1. 不同的学习器使用不同的训练集
    2. 不同的学习器使用不同的特征集
    3. 不同的学习器使用不同的模型参数
    4. 等等
  2. 基础学习器的能力不需要很强,只需要比随机猜测高一点就行,即:错误率是小于 50%。例如:
    1. 如果有 1 个基础学习器,则其错误率为 40%
    2. 如果有 2 个基础学习器,则其错误率为 40% * 40% = 16%
    3. 如果有 3 个基础学习器,则其错误率为 40% * 40% * 40% = 6.4%
    4. 所以,只要基础学习器的错误率在 50% 以下,其错误率会一直下降。

3. 多个基学习器的集成策略有哪些?

整合方式主要有两种:bagging、stacking、boosting。

2. bagging(Bootstrap aggregating

bagging 的思想就是:

  1. 有放回的随机从样本集中进行 N 次采样,并训练 N 个有差异的学习器。
  2. 预测时,使用平权投票、多数表决,比如:1 多则结果为 1,0 多则结果为 0。

基于 bagging 思想的代表算法是:随机森林(Random Forest, RF)

2. Stacking

Stacking 先从初始训练集中训练出 N 个基础学习器,这 N 个基础学习器的预测输出作为元学习器的输入。

3. boosting

boosting 是一类用于将弱学习器提升为强学习器的算法,这一类算法的工作机制较为接近。其过程如下:

  1. 先从训练集中训练出一个基础学习器
  2. 基于前一个基学习器的不足训练下一个基础学习器
  3. 重复进行,直至基础学习器数目达到事先指定的数量
  4. 最终将这个 T 个学习器进行加权投票得出预测结果

从这个过程,我们可以看到:boosting 基础学习器的创建是串行的,即:Ck 学习器训练完了,Ck+1 才能进行训练,而并不是 bagging 支持并行训练基础学习器。

boosting 家族的经典算法有:Adaboost、XGBoost、LightGBM、Catboost

至此,本篇文章结束!

未经允许不得转载:一亩三分地 » 集成学习(Ensemble Learning)
评论 (0)

1 + 8 =