模型融合
1.目标
- 对于多种调参完成的模型进行模型融合。
- 完成对于多种模型的融合,提交融合结果并打卡。
2. 摘要
模型融合是比赛后期一个重要的环节,大体来说有如下的类型方式。
- 简单加权融合:
- 回归(分类概率):算术平均融合(Arithmetic mean),几何平均融合(Geometric mean);
- 分类:投票(Voting)
- 综合:排序融合(Rank averaging),log融合
- stacking/blending:
- 构建多层模型,并利用预测结果再拟合预测。
- boosting/bagging(在xgboost,Adaboost,GBDT中已经用到):
- 多树的提升方法
3. 内容
3.1 简单加权融合
1)平均融合
对于回归问题,一个简单直接的思路是取平均。也可以采用加权平均,而权值可以用排序的方法确定,举个例子,比如A、B、C三种基本模型,模型效果进行排名,假设排名分别是1,2,3,那么给这三个模型赋予的权值分别是3/6、2/6、1/6。方法看似简单,其实后面的高级算法也可以说是基于此而产生的,Bagging或者Boosting都是一种把许多弱分类器这样融合成强分类器的思想
2)投票融合
对于一些分类问题,可以采用投票的方法。例如在二分类问题中,已建立三个模型,便可以通过三者投票的方式,投票最多的为最终分类。
3.2 Stacking/Blending模型
1)Stacking
该模型是模型融合常用方法,本质上是一种分层的结构。重点是在第一层中,如何用基学习器生成新特征,包含训练数据集的新特征和测试数据集的新特征。
第一步:训练数据集新特征的生成。若直接在训练数据集中对基学习器进行训练,然后用输出作为新特征,容易造成过拟合。所以为了减少过拟合的影响,可以采取K-Folds的方式生成新特征。其过程如下图所示:
第二步:测试数据集新特征的生成。在上面的K-Folds方法中,每一次在训练集上得到基学习器后,就对测试数据集test进行预测,然后对K次的预测结果求平均,就得到了test上的新特征,如下图:
第三步:得到新的训练集和测试集后,在此基础上再进行第二层训练。
2)Blending
该模型必须将训练集分为2个部分,train1为训练基学习器,train2的预测值作为训练集的新特征,test的预测值作为测试集的新特征。
3)两者对比
-
Stacking更复杂,需要进行经过K-Fold生成新特征,而Blending相对简单;
-
Stacking通过K-Fold会更稳定,而Blending使用的数据更少,更容易过拟合。
3.2 Boosting/Bagging模型
Bagging和Boosting都是ensemble learing 中的学习框架,所以并不能认为其是一种具体算法,而是两种不同的学习思想。
1)Boosting
Boosting的思想是通过若干个弱分类提高算法准确度。这种方法通过构造一个预测函数系列,然后以一定的方式将他们组合成一个预测函数。Boosting是一种提高任意给定学习算法准确度的方法。
Boosting的特点是各个学习器之间有依赖关系。
2)Bagging
Bagging(Bootstrap aggregation)由Leo Breiman提出,其具体内容:从数据集有放回的随机抽取样本,生成多个自助样本集,每个自助样本集大小与原数据集一致,因此一些样本可能在同一个自助样本集中出现多次。对每个自助样本集训练一个基学习器,常用的基学习器为二元决策树,因为对于有复杂决策边界的问题,二元决策树性能不稳定,这种不稳定可以通过组合多个决策树模型来客服。最终,对于回归问题,结果为基学习器均值,对于分类问题,结果是从不同类别所占的百分比引申出来的各类别概率或均值。
另外,随机森林(Random Forest,RF)也运用的是Bagging的思想。
References:
- https://zhuanlan.zhihu.com/p/25836678
- https://cloud.tencent.com/developer/article/1463294
- https://cloud.tencent.com/developer/article/1085438
- https://cloud.tencent.com/developer/article/1024314
- https://cloud.tencent.com/developer/article/1146345