1、 集成学习算法介绍
1.1 什么是集成学习
集成学习通过建立几个模型来解决单一预测问题。工作原理:生成多个分类器/模型,各自独立地学习和做出预测。这些预测再结合成组合预测,因此由于任何一个单分类的预测。
1.2 机器学习的两个核心任务
- 如何优化训练数据 —解决欠拟合问题
- 如何提示泛化性能 —解决过拟合问题
1.3集成学习中的boosting和bagging
只要单分类器的表现不太差,集成学习的结果总是要好于单分类器的
2、Bagging和随机森林
2.1 Bagging
采样-学习-集成
举例说明:
目的:将圆和方块分类
步骤:
1,采样不同数据集
2,训练分类器
3,平权投票,获取最终结果
对每个点,看平均状态是在左在右,这样划分
4,最终实现
2.2 随机森林
随机森林是一个包含多个决策树的分类器,并且其输出的类别是由于个别树输出类别的众数而定的。
随机森林 = Bagging + 决策树
步骤:
1,一次随机选出一个样本,有放回的抽样,,重复N次(有可能重复样本)
2,随机选择m个特征,m<<M(全部特征),建立决策树
问题:
1,为什么要随机抽样训练集?
如果不进行随机抽样,每棵树的训练集都一样,那么最终训练出的树分类结果也是完全一样的
2,为什么要有放回的抽样?
如果不是有放回的抽样,每棵树的训练样本都是不同的,没有交集,这样每棵树都是有偏的,都是绝对片面的,即每棵树训练出来都是有很大的差异的。
2.3 包外估计
随机森林的过程中,有放回的抽样,总有一部分样本我们选不到。
没有被选择到的数据,称之为out-of-bag(OOB)数据。当数据足够多,对任意一组数据(xn,yn)是包外数据的概率为1/e~36.8%
包外数据的用途:
- 当基学习器是决策树时,可使用包外样本来剪枝,或用于估计决策树各结点的后验概率以辅助对训练样本点的处理
- 当基学习器是神经网络时,可使用包外样本来辅助早期停止以减小过拟合
2.4 随机森林API
sklearn.ensemble.RandomForestClassifier(n_estimators=10,criterion='gini',max_depth=None,bootstrap=True,random_state=None,min_samples_split=2)
2.5 随机森林预测案例
from sklearn.ensemble import RandomForestClassifier
rf = RandomForestClassifier()
#通过超参数调优
from sklearn.model_selection import GridSearchCV
param = {"n_estimators":[100,120,300],"max_depth":[3,7,11]}
gc = GridSearchCV(rf,param_grid = param,cv=3)
gc.fit(x_train,y_train)
print('随机森林预测结果是:\n',gc.score(x_test,y_test))
Bagging +决策树/线性回归/深度学习。。=bagging集成学习方法
Bagging的优点:
- 均可在原有算法上提高约2%的泛化正确率
- 简单、方便、通用
p0792