1、集成学习概述
集成学习( E n s e m b l e l e a r n i n g Ensemble learning Ensemblelearning)的目的是让机器学习的的效果更好,一个不行,就多个一起。
常用的有三种方式
-
Bagging:训练多个分类器取平均 f ( x ) = 1 / M ∑ m = 1 M f m ( x ) f(x)=1 / M \sum\limits_{m=1}^{M} f_{m}(x) f(x)=1/Mm=1∑Mfm(x)
-
Boosting:从弱学习器开始加强,通过加权来进行训练
F m ( x ) = F m − 1 ( x ) + argmin h ∑ i = 1 n L ( y i , F m − 1 ( x i ) + h ( x i ) ) F_{m}(x)=F_{m-1}(x)+\operatorname{argmin}_{h} \sum\limits_{i=1}^{n} L\left(y_{i}, F_{m-1}\left(x_{i}\right)+h\left(x_{i}\right)\right) Fm(x)=Fm−1(x)+argminhi=1∑nL(yi,Fm−1(xi)+h(xi))
(加入一个模型,要比原来强,例如随机森林就是加入一棵树,要比原来强)
-
Stacking:聚合多个分类或回归模型(可以分阶段来做)
2、Bagging模型
全称: b o o t s t r a p bootstrap bootstrap a g g r e g a t i o n aggregation aggregation
就是并行训练一堆分类器
2.1、 R a n d o m Random Random F o r e s t Forest Forest 随机森林模型
-
随机:数据采样随机,特征选择随机
-
森林:很多个决策树并行放在一起
构造树模型
由于二重随机性,使得每个树基本上都不会一样,最终的结果也会不一样
之所以要进行随机,是要保证泛化能力,如果树都一样,那就没意义了!
随机森林的优势
- 它能够处理很高维度( f e a t u r e feature feature很多)的数据,并且不用做特征选择
- 在训练完后,它能够给出哪些 f e a t u r e feature feature比较重要
- 容易做成并行化方法,速度比较快
- 可以进行可视化展示,便于分析
2.2、 K N N KNN KNN模型
K N N KNN KNN就不太适合,因为很难去随机让泛化能力变强!
3、 B o o s t i n g Boosting Boosting模型
3.1、 A d a B o o s t AdaBoost AdaBoost
Adaboost会根据前一次的分类效果调整数据权重
如果某一个数据在这次分错了,那么在下一次我就会给它更大的权重
每一次切一刀,最终合在一起,弱分类器这就升级了.
3.2、 x g b o o s t xgboost xgboost
X G B o o s t XGBoost XGBoost是陈天奇等人开发的一个开源机器学习项目,高效地实现了 G B D T GBDT GBDT算法并进行了算法和工程上的许多改进,被广泛应用在 K a g g l e Kaggle Kaggle竞赛及其他许多机器学习竞赛中并取得了不错的成绩。
说到 X G B o o s t XGBoost XGBoost,不得不提 G B D T ( G r a d i e n t GBDT(Gradient GBDT(Gradient B o o s t i n g Boosting Boosting D e c i s i o n Decision Decision T r e e ) Tree) Tree)。因为 X G B o o s t XGBoost XGBoost本质上还是一个 G B D T GBDT GBDT,但是力争把速度和效率发挥到极致,所以叫 X ( E x t r e m e ) G B o o s t e d X (Extreme) GBoosted X(Extreme)GBoosted。包括前面说过,两者都是 b o o s t i n g boosting boosting方法。
X G B o o s t XGBoost XGBoost的核心算法思想不难,基本就是:
- 不断地添加树,不断地进行特征分裂来生长一棵树,每次添加一个树,其实是学习一个新函数 f ( x ) f(x) f(x),去拟合上次预测的残差。
- 当我们训练完成得到k棵树,我们要预测一个样本的分数,其实就是根据这个样本的特征,在每棵树中会落到对应的一个叶子节点,每个叶子节点就对应一个分数
- 最后只需要将每棵树对应的分数加起来就是该样本的预测值。
更多 x g b o o s t xgboost xgboost内容请看终于有人说清楚了–XGBoost算法
4、 S t a c k i n g Stacking Stacking模型
堆叠:很暴力,拿来一堆直接上(各种分类器都来了)
可以堆叠各种各样的分类器( K N N , S V M , R F KNN,SVM,RF KNN,SVM,RF等等)
分阶段:第一阶段得出各自结果,第二阶段再用前一阶段结果训练
堆叠在一起确实能使得准确率提升,但是速度是个问题