1.集成算法的简介
对于一个复杂任务来说,将多个专家的判断进行适当的综合所得出的判断,要比其中任何一个专家单独的判断好。
集成学习(ensemble learning)通过构建并结合多个学习器来完成学习任务等。
·结合策略
①简单平均法
②加权平均法
集成学习的结果通过投票法产生?即“少数服从多数”
2.集成算法的分类
·根据个体学习器的生成方式,目前的集成学习方法大致可以分为两类:
①Bagging:个体学习器间不存在强依赖关系、可同时生成的并行化方法,代表为随机森林。
②Boosting:个体学习器间存在强依赖关系、必须串行生成的序列化方法,如Adaboost。
③Stacking:聚合多个分类或回归模型(可以分阶段来做)
3. 集成算法 · Bagging
Bagging:训练多个分类器取平均。
全称:bootstrap aggregation(说白了就是并行训练一堆分类器)
预测输出时,通常对分类任务使用简单投票法,对回归任务使用简单平均法。
·随机森林:
随机:数据采样随机,特征选择随机。
森林:很多个决策树并行放在一起。
·构造树模型:由于二重随机性,使得每个树基本上都不会一样,最终的结果也会不一样。
随机森林优势:
①它能够处理很高维度(feature很多)的数据,并且不用做特征选择
②在训练完后,它能够给出哪些feature比较重要
③容易做成并行化方法,速度比较快
④可以进行可视化展示,便于分析
RandomForestClassifier():随机森林分类算法
RandomForestRegressor():随机森林回归算法
n_estimators 树的数量,默认100
oob_score 是否采用Out of Bag评估方式,默认False。=True时,等同于使用交叉验证评估模型。
bootstrap 是否采用有放回的采样方式,默认True
max_samples 训练树的最大样本量,默认为None。
rom sklearn.datasets import load_wine
4.集成算法 · Boosting
用随机森林实现葡萄酒分类。
·Boosting:从弱学习器开始加强,通过加权来进行训练。
典型代表:AdaBoost
Adaboost会根据前一次的分类效果调整数据权重
解释:如果某一个数据在这次分错了,那么在下一次我就会给它更大的权重
最终的结果:每个分类器根据自身的准确性来确定各自的权重,再合体
1. 初始化训练样本的权值分布,每个样本具有相同权重;
2. 训练弱分类器,如果样本分类正确,则在构造下一个训练集中,它的权值就会被降低;反之提高。
3. 用更新过的样本集去训练下一个分类器;
4. 将所有弱分类组合成强分类器,各个弱分类器的训练过程结束后,加大分类误差率小的弱分类器的权重,降低分类误差率大的弱分类器的权重。
5. 集成算法 · Stacking
·堆叠:很暴力,拿来一堆直接上(各种分类器都来了)
·可以堆叠各种各样的分类器(KNN,SVM,RF等等)
·分阶段:第一阶段得出各自结果,第二阶段再用前一阶段结果训练