1、集成学习
集成学习是将多个机器学习的算法结合起来的一种方法,即实现将多个弱学习器通过组成一个整体来实现强学习的效果,俗语里:三个臭皮匠赛过一个诸葛亮。
2、Bagging算法
2.1 Bootstrap自助采样
在样本集D(样本数为m)中进行有放回的抽样,抽取数为m,则每次可能被抽取的概率为1/m,那么样本在m次采用中不被采样的概率为 ( 1 − 1 m ) m → lim n → ∞ ( 1 − 1 m ) m → 1 e ≈ 0.368 (1-\frac{1}{m})^m →\lim\limits_{n \to \infty}(1-\frac{1}{m})^m \to \frac{1}{e} ≈ 0.368 (1−m1)m→n→∞lim(1−m1)m→e1≈0.368对概率取极限能够得到数据集中36.8%的样本没有出现在采样数据集D1中。我们将D1作为训练集,D-D1作为测试集,这样做的好处是我们的模型都是使用m个训练样本,样本数量没有减少,但我们用于测试的样本仍然为总量的1/3,而且这些测试样本没有出现在训练集中。
2.2 Bagging算法
如上图所示,采用bootstrap有回放抽样选取训练集,每次抽样都被用于分类器C的训练。其中随机森林就是Bagging算法的特例,它使用随机特征子集去拟合单颗决策树。
Bagging算法的流程如下:
(1)采用Bootstrap有放回抽样,组成n个样本(n<m)的新训练集;
(2)重复(1)进行T遍,得到T个训练集
S
i
S_i
Si;
(3)在每个训练集上采用某个分类算法独立进行训练,得到T个基类分类器
C
i
C^i
Ci;
(4)那么对于每个测试样本x,利用T个分类器得到了T个预测值
c
i
(
x
)
c_i(x)
ci(x);
(5)对于每个x,采用多数投票的方式得到最终的预测结果
c
∗
(
x
)
c^*(x)
c∗(x)
而这个基类分类器可以是决策树,也可以是逻辑回归等基类分类器。而这种集成学习,对于稳定性不好的分类器比较实用,通过多数投票,减少了泛化误差;但对于稳定的分类器效果并不明显。其中分类问题上采用简单投票法进行汇总;而回归问题采用简单平均法取得平均值。
Bagging性能
- 是一个高效的集成学习算法;
- 适用性广,可以不经修改地用于多分类和回归任务;
- 由于采用Bootstrap采用,可以将剩下的35.8%的样本作为验证集来进行泛化性能的“包外样本评估”;
- Bagging主要关注降低方差,因此在不剪枝和神经网络等比较容易受样本扰动的学习器上的效果更明显。
3、随机森林
随机森林就是Bagging+决策树,不过随机森林不仅对训练样本进行了采用,对特征也进行了采样,这样是为了保证每个决策树之间的独立性,从而让投票结果更加准确。其中每个决策树都使用CART算法计算,不剪枝。这是因为前面进行了随机抽取样本和随机特征选取,所以不会产生过拟合的现象。
- 问题1:为什么要随机抽取训练集?
不进行随机抽取,那么每棵树的训练集有可能出现重叠,那么最终的树分类结果也是一样的。
- 问题2:为什么要有放回抽样?
没有放回则代表每棵树的训练样本是不同的,这样会让每棵树产生偏差,及每棵树的结果都是有很大差异的,这样就没有办法进行最后的投票表决。
随机森林总结
- 分类结果更加准确
- 处理高纬度的特征,不用进行特征选择
- 允许数据缺失,但仍然可以维持较高的准确度
- 学习的速度快
- 能够筛选出特征的重要性
- 能够进行并行计算
- 能够检测特征之间的相互影响