Python3机器学习实践:集成学习

Ensemble.png

这个时代,如果你觉得自己不够强,那就找几个人联合起来。集成学习亦如此。 

image
集成学习是一种将几种机器学习模型组合成一个模型的元算法(meta-algorithm),以减小方差(例如:Bagging),偏差(例如:Boosting),或者改进预测(例如:Stacking、Blending)。

  • 集成方法分类
  1. 串行集成方法:多个模型顺序生成。此方法是利用模型之间的依赖关系。算法可以通过提高被分错样本的权重来提高性能。具体参见Boosting。

  2. 并行集成方法:多个模型并行生成。此方法是利用模型之间的独立性,因为可以通过平均来降低误差。具体参见Bagging。

  3. 树行集成方法:这种方法可分多层,每一层可包括多种模型,下层的训练数据集为上一层的训练结果,类似于树。具体参见Stacking、Blending。

image

一、Bagging

Bagging:也就是自举汇聚法(Bootstrap Aggregating),步骤如下:

  1. 在包含N个样本的数据集中采用有放回的抽样方式随机抽取一定数量(可以为N)的样本,构成一个数据集;

  2. 按照步骤1中的方式得到M个数据集;

  3. 利用机器学习的方法(例如:SVM,决策树,神经网络……)对得到的M个数据集,训练出M个弱模型(比随机模型效果好);

  4. 集成M个弱模型的结果作为最终结果;

Bagging就是通过M个弱模型的结果,通过并行集成的方式来获得最终结果。因为M个数据集是相互独立的,因此这M个弱模型之间也是相互独立的,在最终的集成结果时,每个模型的权重是一样的。这是和下文的Boosting所不同的。

  • Bagging集成方式

  • 回归问题
    M个模型结果的均值;

  • 分类问题
    对M个模型的结果进行投票决定,票数多的作为结果;票数一样,随机决定;

  • 代表方法
    随机森林(Random Forest)

image

二、Boosting
Boosting步骤如下:

  1. 每一次都根据上一次训练得到的模型结果,调整数据集样本分布,然后再生成下一个模型;
  2. 直到生成M个模型;
  3. 根据M个模型的结果集成得到最终的结果;
  • Boosting集成方式
    每个模型的重要度作为每个模型结果的权重,然后加权计算得出结果。可以看出Boosting中生成多个模型的方式并不是和Bagging一样并行生成,而是串行生成,因此也决定了多个模型结果的集成是串行集成,也就是每个模型的结果权重并不是一样的。如何来调整样本分布以及计算模型的重要度,不同方法有不同的定义,详情参见具体方法。

  • 代表方法
    AdaBoost
    GBDT
    XGBoost
    LightGBM
    CatBoost

image

三、Stacking
Stacking步骤如下:
将训练好的所有基模型对整个训练集进行预测,第j个基模型对第i个训练样本的预测值将作为新的训练集中第i个样本的第j个特征值,最后基于新的训练集进行训练。同理,预测的过程也要先经过所有基模型的预测形成新的测试集,最后再对测试集进行预测。

image

四、Blending
Blending步骤如下:
原始训练数据集划分为训练数据集和验证数据集,针对训练数据集训练多个模型,每个模型针对验证数据集的结果构成新的训练数据集,每个模型针对预测数据集的结果构成新的预测数据集。然后针对新的训练数据集训练模型,训练完成后,得到的模型对新的预测数据集的结果作为最终的结果。

image

方法介绍、实例、代码随机森林、AdaBoost、GBDT、XGBoost、LightGBM,CatBoost,Stacking,Blending。扫描下方二维码或者微信公众号直接搜索”Python范儿“,关注微信公众号pythonfan, 获取更多实例和代码。
pythonfan.jpg

猜你喜欢

转载自blog.csdn.net/qq_32882309/article/details/85334399