简单加权融合
对于一个给定的网络结构,每一种不同的权重组合将得到不同的模型。因为所有模型结构都有无限多种权重组合,所以将有无限多种组合方法。
训练神经网络的目标是找到一个特别的解决方案(权重空间中的点),从而使训练集和测试集上的损失函数的值达到很小。
回归
对于回归问题,一个简单直接的思路是取平均。稍稍改进的方法是进行加权平均。
这两种方法看似简单,其实后面的高级算法也可以说是基于此而产生的,Bagging或者Boosting都是一种把许多弱分类器这样融合成强分类器的思想。
- 算术平均融合(Arithmetic mean)
- 几何平均融合(Geometric mean)
分类
- 投票(Voting)
分为软投票和硬投票两种,其原理采用少数服从多数的思想。- 硬投票:
对多个模型直接进行投票,不区分模型结果的相对重要度,最终投票数最多的类为最终被预测的类。 - 软投票:
增加了设置权重的功能,可以为不同模型设置不同权重,进而区别模型不同的重要度。
- 硬投票:
综合
- 排序融合(Rank averaging)
- log融合
stacking/blending
构建多层模型,并利用预测结果再拟合预测
stacking
当用初始训练数据学习出若干个基学习器后,将这几个学习器的预测结果作为新的训练集,来学习一个新的学习器。
将个体学习器结合在一起的时候使用的方法叫做结合策略。对于分类问题,我们可以使用投票法来选择输出最多的类。对于回归问题,我们可以将分类器输出的结果求平均值。
在stacking方法中,我们把个体学习器叫做初级学习器,用于结合的学习器叫做次级学习器或元学习器(meta-learner),次级学习器用于训练的数据叫做次级训练集。次级训练集是在训练集上用初级学习器得到的。
算法示意图
blending
其实和Stacking是一种类似的多层模型融合的形式
- 主要思路
把原始的训练集先分成两部分,比如70%的数据作为新的训练集,剩下30%的数据作为测试集。
1.第一层,在这70%的数据上训练多个模型,然后去预测那30%数据的label,同时也预测test集的label。
2.第二层,直接用这30%数据在第一层预测的结果做为新特征继续训练,然后用test集第一层预测的label做特征,用第二层训练的模型做进一步预测。 - 优点
1.比stacking简单(因为不用进行k次的交叉验证来获得stacker feature)
2.避开了一个信息泄露问题:generlizers和stacker使用了不一样的数据集 - 缺点
1.使用了很少的数据(第二阶段的blender只使用training set10%的量)
2.blender可能会过拟合
3.stacking使用多次的交叉验证会比较稳健
boosting/bagging
多树的提升方法
boosting
Bagging算法可以并行处理,而Boosting的思想是一种迭代的方法,每一次训练的时候都更加关心分类错误的样例,给这些分类错误的样例增加更大的权重,下一次迭代的目标就是能够更容易辨别出上一轮分类错误的样例。最终将这些弱分类器进行加权相加。
bagging
Bagging就是采用有放回的方式进行抽样,用抽样的样本建立子模型,对子模型进行训练,这个过程重复多次,最后进行融合。大概分为这样两步:
1.重复K次
有放回地重复抽样建模
训练子模型
2.模型融合
Bagging算法不用我们自己实现,随机森林就是基于Bagging算法的一个典型例子,采用的基分类器是决策树。
总结
模型融合涉及多个层面:
- 结果层面的融合
最常见的融合方法,可行的融合方法很多,比如根据结果得分进行加权融合,做Log,exp处理等。在做结果融合的时候,有一个很重要的条件是模型结果的得分要比较近似,然后结果的差异要比较大,这样的结果融合往往有比较好的效果提升。 - 特征层面的融合
准确说可以叫分割,很多时候如果我们用同种模型训练,可以把特征进行切分给不同的模型,然后在后面进行模型或者结果融合有时也能产生比较好的效果。 - 模型层面的融合
模型层面的融合可能就涉及模型的堆叠和设计,比如加Staking层,部分模型的结果作为特征输入等。这些就需要多实验和思考了,最好不同模型类型要有一定的差异,用同种模型不同的参数的收益一般是比较小的。
网友评论