文章目录
1.Voting
投票法针对分类模型,多个模型的分类结果进行投票,少数服从多数。除了公平投票外,还可以给投票设置权重,分类器效果越好权重越高,分类器效果越差,权重越低。
2.Averaging
回归问题:直接取平均值作为最终的预测值,也可以使用加权平均。
分类问题:直接将模型的预测概率做平均,也可以使用加权平均。
可以把所有模型预测的结果作为新的特征,再通过线性回归计算出权重
3.Ranking
Ranking融合适合排序评估指标,对auc比较有效。具体公式如下:
其中,n表示模型个数,表示该样本在第i个模型的权重,所有权重相同表示平均融合,表示该样本在第i个模型中的升序排名。
4.Bagging
采用有放回的方式抽取训练子集来训练每个基模型,最后所有基模型进行融合,分类问题进行投票,回归问题进行平均。除了构建不同的训练子集,也可以构建不同的特征和参数保证基模型的差异性,最后再进行融合。参考随机森林。
5.Boosting
Boosting算法是一种迭代算法。每轮迭代中会在训练集上产生一个新的分类器,然后使用该分类器对所有样本进行分类,以评估每个样本的重要性。具体来说,算法会为每个训练样本赋予一个权值。每次用训练完的新分类器标注各个样本,若某个样本点已被分类正确,则将其权值降低,并以该权重进行下一次数据的抽样(抽中的概率减小);若样本点未被正确分类,则提高其权值,并以该权重进行下一次数据的抽样(抽中的概率增大)。权值越高的样本在下一次训练中所占的比重越大,也就是说越难区分的样本在训练过程中会变得越来越重要。 整个迭代过程直到错误率足够小或达到一定次数才停止。 参考adaboost,gbdt,xgboost。
(1)Bagging + 决策树 = 随机森林
(2)AdaBoost + 决策树 = 提升树
(3)Gradient Boosting + 决策树 = GBDT
Bagging和Boosting算法的区别:
(1)bagging的训练集是随机的,各训练集是独立的;而boosting训练集的选择不是独立的,每一次选择的训练集都依赖于上一次学习的结果。
(2)bagging的每个预测函数都没有权重;而boosting根据每一次训练的训练误差得到该次预测函数的权重。
(3)bagging的各个预测函数可以并行生成;而boosting只能顺序生成。bagging、boosting的对比: Bagging主要在优化variance(即模型的鲁棒性),boosting主要在优化bias(即模型的精确性)
bagging: Bagging 是 Bootstrap Aggregating 的简称,意思就是再取样 (Bootstrap) 然后在每个样本上训练出来的模型取平均,所以是降低模型的 variance。
由于,所以bagging后的bias和单个子模型的接近,一般来说不能显著降低bias。另一方面,若各子模型独立,则有,此时可以显著降低variance。
Boosting: boosting从优化角度来看,是用forward-stagewise这种贪心法去最小化损失函数(指数函数),boosting是在sequential地最小化损失函数,其bias自然逐步下降。但由于是采取这种sequential、adaptive的策略,各子模型之间是强相关的,于是子模型之和并不能显著降低variance。所以说boosting主要还是靠降低bias来提升预测精度。
6.Stacking
(1) 什么是 stacking
简单来说 stacking 就是当用初始训练数据学习出若干个基学习器后,将这几个学习器的预测结果作为新的训练集,来学习一个新的学习器。
将个体学习器结合在一起的时候使用的方法叫做结合策略。对于分类问题,我们可以使用投票法来选择输出最多的类。对于回归问题,我们可以将分类器输出的结果求平均值。
上面说的投票法和平均法都是很有效的结合策略,还有一种结合策略是使用另外一个机器学习算法来将个体机器学习器的结果结合在一起,这个方法就是Stacking。
在stacking方法中,我们把个体学习器叫做初级学习器,用于结合的学习器叫做次级学习器或元学习器(meta-learner),次级学习器用于训练的数据叫做次级训练集。次级训练集是在训练集上用初级学习器得到的。
(2) 如何进行 stacking
算法示意图如下:
引用自 西瓜书《机器学习》
- 过程1-3 是训练出来个体学习器,也就是初级学习器。
- 过程5-9是 使用训练出来的个体学习器来得预测的结果,这个预测的结果当做次级学习器的训练集。
- 过程11 是用初级学习器预测的结果训练出次级学习器,得到我们最后训练的模型。
参考:
模型融合