【DW·智慧海洋(捕鱼作业分析)打卡】task05_模型融合 (简单辨析了一下stacking和blending)

开源地址见Github:https://github.com/datawhalechina/team-learning

模型融合

详细参考 https://cloud.tencent.com/developer/article/1614539

1. 简单加权融合:

  • 回归(分类概率):算术平均融合(Arithmetic mean),几何平均融合(Geometric mean);
  • 分类:投票(Voting)

2. boosting/bagging(在xgboost,Adaboost,GBDT中已经用到):

  • 多树的提升方法

3. stacking/blending:

  • 构建多层模型,并利用预测结果再拟合预测。
    • stacking

      • 训练
      • 预测
    • blending

      1. 首先将训练集划分为两部分(d1,d2),例如d1为4000条数据用于blending的第一层,d2是6000条数据用于blending的第二层。
      2. 第一层:用d1训练多个模型,将其对d2和test的预测结果作为第二层的New Features。例如同样适用上述三个模型,对d2生成60003的新特征数据;对test生成30003的新特征矩阵。
      3. 第二层:用d2的New Features和标签训练新的分类器,然后把test的New Features输入作为最终的测试集,对test预测出的结果就是最终的模型融合的值。

stacking/blending的优缺点对比

Blending的优点在于:

  1. 比stacking简单(因为不用进行k次的交叉验证来获得stacker feature)

  2. 避开了一个信息泄露问题:generlizers和stacker使用了不一样的数据集

  3. 在团队建模过程中,不需要给队友分享自己的随机种子

而缺点在于:

  1. 使用了很少的数据来进行第一节段的数据的基模型的训练(是划分hold-out作为测试集,并非cv)

  2. blender可能会过拟合(其实大概率是第一点导致的)

  3. stacking使用多次的CV会比较稳健,说白了,训练次数少

5.5 思考题

1. 如何基于stacking改进出blending?

答:

  • stacking使用了foldCV,blending使用了holdout.
  • 在第一层中,stacking留出一部分数据扔到第二层参与新特征的提取和训练。

2. stacking还可以进行哪些优化提升F1-score - 从第一层模型数量?模型差异性?角度出发

答:

  • F1 Score兼顾了精确率和召回率,在样本缺少平衡性时可以发挥有效的评价作用
    1. 从第一层模型数量来看,不同的模型数量越多,模型差异性越大,多个模型的综合输出结果的泛化能力越强 (接下点)
    2. 模型差异性越大,多个模型可以在数据的凸函数上从不同的方向进行梯度下降,进而逼近全局的最优解,stacking的效果越好,有利于保持精确率的程度下提高召回率
posted @ 2021-04-24 17:24  山枫叶纷飞  阅读(107)  评论(0编辑  收藏  举报