Python数据分析与机器学习24-集成算法与随机森林
2022-07-22 本文已影响0人
只是甲
一. 集成算法概述
目的:
让机器学习效果更好,单个不行,群殴走起
分类:
-
Bagging
训练多个分类器取平均
image.png
-
Boosting
从弱学习器开始加强,通过加权来进行训练
(加入一棵树,要比原来强)
image.png
-
Stacking
聚合多个分类或回归模型(可以分阶段来做)
二. Bagging模型
全称:bootstrap aggregation(说白了就是并行训练一堆分类器)
最典型的代表就是随机森林啦
随机:
数据采样随机,特征选择随机
森林:
很多个决策树并行放在一起
![](https://img.haomeiwen.com/i2638478/5410e4c5599dd348.png)
随机森林:
构造树模型:
![](https://img.haomeiwen.com/i2638478/a583c930aa35783b.png)
由于二重随机性,使得每个树基本上都不会一样,最终的结果也会不一样
Bagging模型:
树模型:
![](https://img.haomeiwen.com/i2638478/9a4fa41edcf3854d.png)
![](https://img.haomeiwen.com/i2638478/a206db074d3c6e06.png)
之所以要进行随机,是要保证泛化能力,如果树都一样,那就没意义了!
随机森林优势:
它能够处理很高维度(feature很多)的数据,并且不用做特征选择
在训练完后,它能够给出哪些feature比较重要
容易做成并行化方法,速度比较快
可以进行可视化展示,便于分析
![](https://img.haomeiwen.com/i2638478/b01b72518d23beb9.png)
Bagging模型:
KNN模型:
![](https://img.haomeiwen.com/i2638478/65248e5c7aaec71d.png)
![](https://img.haomeiwen.com/i2638478/b142f69017ff2a29.png)
KNN就不太适合,因为很难去随机让泛化能力变强!
树模型:
![](https://img.haomeiwen.com/i2638478/466c662348352863.png)
理论上越多的树效果会越好,但实际上基本超过一定数量就差不多上下浮动了
三. Boosting模型
典型代表:
AdaBoost,Xgboost
Adaboost会根据前一次的分类效果调整数据权重
解释:
如果某一个数据在这次分错了,那么在下一次我就会给它更大的权重
最终的结果:
每个分类器根据自身的准确性来确定各自的权重,再合体
Adaboost工作流程:
每一次切一刀!
最终合在一起
弱分类器这就升级了!
![](https://img.haomeiwen.com/i2638478/f949f1c93686ea21.png)
四. Stacking模型
堆叠:
很暴力,拿来一堆直接上(各种分类器都来了)
可以堆叠各种各样的分类器(KNN,SVM,RF等等)
分阶段:
第一阶段得出各自结果,第二阶段再用前一阶段结果训练
为了刷结果,不择手段!
![](https://img.haomeiwen.com/i2638478/87025620be52862c.png)
堆叠在一起确实能使得准确率提升,但是速度是个问题
集成算法是竞赛与论文神器,当我们更关注于结果时不妨来试试!