文章目录
什么是集成算法
把多个基础算法一起拿来用,就是集成算法···
目的就是让结果更加准确,让分类器的效果更好。
常见的集成算法
- Bagging——训练多个分类器取平均
- Boosting——从弱学习器开始加强,通过加权来进行训练:
Fm(x)=Fm−1(x)+argminhi=1∑nL(yi+,Fm−1(xi)+h(xi)) - Stacking——聚合多个分类或回归模型(可以分阶段来做)
Bagging
bagging模型的全称:bootstrap aggregation。含义大概就是并行的去训练一堆分类器,各个分类器之间不存在强依赖关系然后结果拿来取均值。
随机森林是比较典型的bagging算法。
f(x)=M1m=1∑Mfm(x)
随机森林
- 随机指的是数据随机采样,比如有一千条数据,分成若干份,A分类器用其中的100一条,B分类器用其中的100条。。。
- 假设有N个特征,不同分类器也任意选择一些特征使用。
- 由于上面说的二重随机性,使得每个树基本上都不会一样,最终的结果也会不一样。把最后的结果使用bagging公式取均值算出来,就是最终的结果。
- 森林指的就是决策树了,一些树放在一起就是一片森林。
- 之所以要保证随机性,就是为了要保证泛化能力。使各个分类器都不一样。
- 随机森林构建完成后,对于分类任务和回归任务的结果处理也有不同:
- 分类任务:最终结果等于多数分类器的结果。
- 回归任务:最终结果等于分类器结果的平均。
随机森林的特点
优点
- 它能够处理很高维度(feature很多)的数据,并且不用做特征选择
- 在训练完后,它能够给出哪些feature比较重要
- 容易做成并行化方法,速度比较快
- 可以进行可视化展示,便于分析
缺点
- 解决回归问题时,不能给出连续的输出,造成效果可能不好。
- 计算过程是个黑盒子,只能调整参数来改变结果,可解释性差。
树的数量
理论上越多的树效果会越好,但实际上基本超过一定数量就差不多上下浮动了,图中80颗树的效果也明显大于90颗。所以,什么还是要合适的数量。
什么数量最适合?不知道····自己试··· 正对应了它的缺点:计算过程是个黑盒子。
boosting模型
前面说了,从弱学习器开始加强,通过加权来进行训练就是boosting的过程。
典型代表:AdaBoost, Xgboost。
基本思想是“逐步强化”。计算过程为:
- 所有样本权重相同,训练得到第一个弱分类器。
- 根据上一轮的分类效果,调整样本的权重,上一轮分错的样本权重提高,重新进行训练。
- 重复以上步骤,直到达到约定的轮数结束。
- 由于处于分类边界的点容易分错,因此会得到更高的权重。
- 最终的结果:每个分类器根据自身的准确性来确定各自的权重,再合体。
adBoost工作流程
一次切一刀,多切几刀就分开了。
Stacking模型
把样本分成n份,使用n个分类器对样本进行计算;计算的结果作为下一层分类器的输入;可以堆叠各种各样的分类器(KNN,SVM,RF等等)。不断迭代,直到达到迭代的次数限制为止。缺点是效率低。