目的:让机器学习效果更好,单个机器学习算法不行,就用多个机器算法集成。
Bagging模型:训练多个分类器取结果的平均
Boosting模型:从弱学习器开始加强,通过加权来进行训练(加入一棵树,要比原来强)
Stacking模型:聚合多个分类或回归模型(可以分阶段来做)
全称:bootstrap aggregation(说白了就是并行训练一堆分类器),最典型的代表就是随机森林(决策树的升级版,多个决策树组合起来)
随机:数据采样随机,特征选择随机(可以命名为二重随机性)
森林:很多个决策树并行放在一起
在随机森林模型中,如果是分类任务,那就对结果取众数(如上图所示),如果是预测任务,就对结果取平均值。
构造树模型:
由于二重随机性,使得每个树基本上都不会一样,最终的结果也会不一样。之所以要进行随机,是要保证泛化能力,如果树都一样,那么最终结果就都是一样的,那就没意义了!
随机森林相比于决策树优势:
(1)它能够处理很高维度(feature很多)的数据,并且不用做特征选择。
(2)在训练完后,它能够给出哪些feature比较重要,比如在下图中特征重要性最低的三个特征就可以去掉。
(3)容易做成并行化方法,速度比较快。
(4)可以进行可视化展示,便于分析。
理论上越多的树训练的效果就会越好,但实际上基本超过一定数量最终的效果就差不多上下浮动了。
典型代表:AdaBoost, Xgboost。
Adaboost会根据前一次的分类效果调整数据权重,如果某一个数据在这次分错了,那么在下一次我就会给它更大的权重。最终的结果:每个分类器根据自身的准确性来确定各自的权重,再合体。
Adaboost工作流程:每一次切一刀!最终合在一起,弱分类器这就升级了!
堆叠方式:很暴力的那种,拿来一堆直接上(各种分类器都来了),可以堆叠各种各样的分类器(KNN,SVM,RF,DT等等)
Stacking是一种分层模型集成框架。以两层为例,第一层由多个基学习器组成,其输入为原始训练集,第二层的模型则是以第一层基学习器的输出作为训练集进行再训练,从而得到完整的stacking模型。
分阶段:第一阶段得出各自结果,第二阶段再用前一阶段结果训练 。
堆叠在一起确实能使得准确率提升,但是显然速度是个问题。集成算法是竞赛与论文神器,当我们更关注于结果时不妨来试试!