模型融合方法总结

1、简介

  • 简介:模型融合就是通过多个模型共同决策去提升任务的效果,是一种基本可以稳定提升任务效果的方法。
  • 融合原则:挑选效果尽可能好,而差异尽可能大的模型进行融合。
  • 常见方法:投票、求均值、stacking、blending

2、常见方法简介

投票法 vote

少数服从多数,仅适用于分类算法。

均值 avg

多个模型的输出求均值。

stacking

stacking和blending都是希望使用一个模型去融合模型,而不是简单的投票或者相加。但是如果使用相同的数据去训练用于融合的模型,存在数据泄露的问题,导致过拟合。所以stacking采用交叉验证的方法缓解这个问题:
模型融合方法总结_第1张图片
步骤:
1、n个模型把数据分成n分(也可以随意划分,只要训练模型和融合模型的数据分开)。
2、每次取其中的(n-1)份数据用于训练模型,用剩下的1份数据训练融合模型
3、测试模型,所有的训练模型预测测试集,得到output求均值,然后传入融合模型,得到最终结果

blending

blending通过划分训练集和验证集的方式,解决数据泄露的问题。

模型融合方法总结_第2张图片
步骤:
1、将训练集划分为训练集和验证集
2、可以看到blending不同模型的训练集是一样的,前面有提到,模型的精度高和模型间的差异性大都可以提升模型效果,所以也可以采用一些采样方法和数据增强方法增加样本的多样性
3、用训练集训练多个模型,用验证集训练融合模型,这里有两种方式训练融合模型,可以直接用均值,也可以采用带权重的均值。

3、多样性增强

前面有提到,模型的精度高和模型间的差异性大都可以提升模型效果,列举一些常用的增加模型间的差异的方法:

  • 数据样本扰动:交叉验证、不同的采样方式、数据增强、对抗学习
  • 输入属性扰动:例如随机森林,每次不传入所有字段,采样一定比例的字段。
  • 输出表示的扰动:例如dropout等操作。
  • 模型属性扰动:对相同的模型取不同的参数,形成扰动

4、实验

实验简介

  • 任务:NLP单分类任务,提供一个文本,分类文本的类型,共34个种类
  • 数据规模:训练集21万条,测试集5万条,文本平均长度15
  • 使用到的模型:bert-base, roberta, macbert

实验结果

acc precision recall f1
bert-base 0.726 0.734 0.658 0.694
roberta 0.735 0.720 0.671 0.695
macbert 0.732 0.742 0.646 0.691
avg 3 0.747 0.743 0.684 0.714
vote 3 0.742 0.723 0.687 0.714
blending 3 0.747 0.731 0.690 0.710
blending weight 3 0.742 0.713 0.684 0.705
stacking 3 0.746 0.749 0.677 0.711
blending 6 0.747 0.730 0.690 0.709
blending weight 6 0.743 0.0.712 0.684 0.697
stacking 6 0.758 0.742 0.694 0.717
stacking 9 0.759 0.750 0.697 0.723

备注:

  • 3、6、9代表3个模型、6个模型、9个模型,其中6个模型和9个模型是3个基础模型分别用了2次和3次
  • weight代表带权重的blending

实验结论

1、由于我的blending没有采用样本扰动的方法,都是用相同的训练集,样本的差异性较小,导致6个模型和9个模型不能带来准确率提升。而stacking由于交叉验证,每个模型的训练样本都有一定的差异,模型效果有了较大的提升。
2、融合都会有效果的提升,融合方式对结果影响不是特别大,主要是差异性和模型精度能带来更好的效果。

你可能感兴趣的:(机器学习,深度学习,人工智能)