模型融合
模型融合,也叫做集成学习,将不同模型的优点进行结合。下面介绍了怎么产生有差异性的模型,然后介绍两种模型融合的方式:
1. 构建多样性
多样性是指子模型之间存在差异,可以通过降低子模型的同质性来构建多样性。
1.1 特征多样性
构建多个有差异的特征集并分别进行建模,可以使特征存在不同的超空间,从而使多个模型有不同的泛化能力。实践中,不同队友之间的特征集往往是不一样的,直接进行模型融合一般会有一定提升。
随机森林、XGBoost和LightGBM这三个里面都有参数可以设置,其实就是构建特征的多样性。
1.2 样本多样性
样本多样性是将数据集切分为多份,然后进行分别建模。有时候切分数据集不是随意的,而是根据具体的赛题,最大限度并且合理的去切分数据集,从而既能保证多样性,还能更好的让模型捕获不同方面的数据特征。
1.3 模型多样性
不同模型对数据的表达能力是不同的:
- FM能够学习到特征之间的交叉信息,并且记忆力较强;
- 树模型可以很好的处理连续特征和离散特征(LightGBM和CatBoost),并且对异常值也具有较好的健壮性。
- 传统的树模型和神经网络也需要尝试,并进行融合。
处理上述方法,还可以训练目标多样性、参数多样性和损失函数多样性。
2. 训练过程融合
训练过程融合的模型包括随机森林和XGBoost,这两个模型都是在训练中构造多个决策树进行融合。
其中,随机森林通过Bagging的方式,XGBoost通过Boosting的方式进行融合。
3. 训练结果融合
主要包括加权法,Stacking和Blending。结果融合的方式选择和具体的赛题和评价规则有很大的关系。
3.1 加权法
针对一系列任务(比如分类和回归)和评价指标(如AUC,MSE和Logloss)都是有效的。
具体做法是有 N N N 个算法模型并都预测了结果,直接对着 N N N 个结果取平均值或者给予每个算法不同的权重然后加权求和,记得到了融合结果。
这个方法,通常可以减少过拟合,因为每个模型有一定的噪音;同时,可以平滑噪声,提高模型泛化能力。
-
分类问题
输出是one-hot类型,可以使用加权加或者投票法。
-
回归问题
针对结果可以考虑使用加权法、算数平均和几何平均,这个和不同的赛题设置的评分规则有关系。
2019年腾讯广告大赛中,评分规则是对称平均绝对百分比误差(SMAPE),这个规则越小的值对评分影响越大,而算是平均会导致结果偏大,所以选择几何平均。
-
排序问题
3.2 Stacking融合
为了解决加权法需要人工确定权重的问题,使用一个新的模型来学习每个分类器的权重。这就是Stacking的融合思想。
注意:
- 构建的新的模型一般是简单模型,比如逻辑回归线性模型;
- 使用多个模型斤进行Stacking融合会有比较好的结果。
详细介绍在参考文献。
3.3 Blending融合
见参考文献
参考文献