1 集成学习作用
俗话说:“三个臭皮匠赛过诸葛亮”。
- 当使用某一种分类器不能使我们达到很好的效果的时候,我们不妨设想将这些分类效果不好的分类器组合一下,再去看看效果是否有提升,这就是集成学习(Ensemble Learning)的思想。
- 集成学习是机器学习中的一种思想,它通过多个模型的组合形成一个精度更高的模型,参与组合的模型成为弱学习器(基学习器)。训练时,使用训练集依次训练出这些弱学习器,对未知的样本进行预测时,使用这些弱学习器联合进行预测。
2 什么是集成学习
传统机器学习算法 (例如:决策树,逻辑回归等) 的目标都是寻找一个最优分类器尽可能的将训练数据分开。集成学习 (Ensemble Learning) 算法的基本思想就是将多个分类器组合,从而实现一个预测效果更好的集成分类器。集成算法可以说从一方面验证了中国的一句老话:三个臭皮匠,赛过诸葛亮
例如:在训练模型时加入高次项,会使得模型在训练集上拟合效果好,但是此时容易发生过拟合;采用集成学习思想,可以使用多个线性回归模型进行拟合,拟合得到的多个模型,在预测时组合起来进行预测,这样既保证了模型的效果又减少了过拟合的风险。
- 集成学习通过建立几个模型来解决单一预测问题。它的工作原理是 生成多个分类器/模型,各自独立地学习和作出预测。这些预测最后结合成组合预测,因此优于任何一个单分类的做出预测。
集成算法大致可以分为:Bagging,Boosting和Stacking等类型。
3 集成学习分类
集成学习算法一般分为:bagging、boosting和Stacking。
集成分类模型便是综合考量多个分类器的预测结果,从而做出决策,集成学习分Bagging和Boosting两种。
3.1 Bagging集成思想
利用相同的训练数据同时搭建多个独立的分类模型,然后通过投票的方式,以少数服从多数的原则做出最终的分类决策。
随机森林是集成模型中的一种,采用Bagging集成思想,常言道:“一个篱笆三个桩,一个好汉三个帮”,即在相同训练数据上同时搭建多颗决策树。
在决策树中学到过一颗标准的决策树是根据每维特征对预测结果的影响程度进行排序,进而决定不同特征从上到下构建分裂节点的顺序;如果这里还按照这种方式随机森林会因为这一策略影响而构建的所有树都一致,从而丧失了多样性。因此随机森林在构建的过程中,每一颗决策树都会放弃这一个固定的算法,转而随机选取特征。
有放回的抽样(booststrap抽样)产生不同的训练集,从而训练不同的学习器
通过平权投票、多数表决的方式决定预测结果
弱学习器可以并行训练
采用随机森林算法的时候:
基学习器:决策树
数据采用:有放回的从原始数据中随机采样,特征也随机选择(保证每个决策树不是一致的)
3.1.1 多数投票法通过集成方法的概念:
3.1.2 Bagging思想案例
3.2 Boosting集成思想
按一定的次序搭建多个分类模型。这些模型之间彼此存在依赖关系。一般后一个模型的加入都需要对现有的集成模型有一定贡献,进而不断提高更新过后的集成模型性能,并借助多个弱分类器搭建出强分类器。代表有Boosting、AdaBoost算法。
每一个训练器重点关注前一个训练器不足的地方进行训练
通过加权投票的方式,得出预测结果;越早期的模型训练效果越差,权重越小,越往后的模型训练效果越好,权重越高。
串行的训练方式
用于随机森林算法,该算法与第一种的随机森林主要区别在于每一颗决策树在生成的过程中都会尽可能降低模型在训练集上的拟合或训练误差。
3.2.1 Boosting思想案例
- 随着学习的积累从弱到强
- 每新加入一个弱学习器,整体能力就会得到提升
- 代表算法:Adaboost,GBDT,XGBoost,LightGBM
3.3 同质和异质
- 随机森林算法中如果都采用C4.5决策树算法,我们一般把个体分类器全部为同种的分类器称为“同质的”,如全部为决策树模型。
- 同质的集成学习中的个体学习器称为“基学习器(base learner)”,相应的算法称为基学习算法。
- 集成中包含不同种的学习器,我们称之为“异质”的,异质集成中的个体学习器包含不同的学习算法组成的,这种情况下的学习器称为“组合学习器”。
- 集成学习通过将多个学习器组合,常获得比单一学习器显著优越的泛化性能。这对弱学习器特别明显,这里的弱学习器我们一般会使用决策树,BP神经网络和逻辑回归,有时候SVM也可以作为个体学习器。
3.4 Bagging和Boosting对比
4 集成学习性能评估
一般经验中如果把好坏不等的东西掺到一起,通常结果会比最坏的好一些,比最好的坏一些。集成学习把多个学习器结合起来,如何获得比最好的单一学习器更好的性能呢?
考虑一个例子:
二分类问题中,假定三个分类器在三个测试样本上表现,如下图所示。
- 打对勾的表示正确分类,打叉号的表示分类错误。
- 集成学习的结果通过投票法voting产生,即少数服从多数。
- 第一个图中每个分类器有66.6%的精度,但集成学习却达到了100%。
- 第二个图中三个分类器没有差别,但是集成之后性能却没有什么提高。
- 第三幅图中每个分类器的精度都只有33.3%,集成学习的结果更糟糕。
这个例子我们可以总结出:要获得好的集成,个体学习器应有一定的 准确性,即学习器不能太坏,并且要有“多样性”,即学习器之间具有 差异 。