学习地址:https://github.com/datawhalechina/team-learning-data-mining/tree/master/EnsembleLearning
Task 8 的主要学习内容是 Bagging的原理与案例分析
Bagging
与投票法的区别
与投票法仅仅集成各个模型的预测结果不同,bagging会采用一定的策略来影响基模型的训练,即通过不同的采样增加模型的差异性
原理
Bagging 核心在于自助采样(Bootstrap)方法,即有放回的数据采样。通过这样的采样生成的多个样本集合分别训练出不同的基学习器,可以得到存在略微差异的训练能力不同的基模型。在模型的同质性问题上,得到了较好的解决方案。
总结:对数据进行自助采样法,对结果进行简单投票法。
算法应用案例——随机森林
在随机森林里,用于每个决策树训练的样本和构建决策树的特征都是通过随机采样得到的,随机森林的预测结果是多个决策树输出的组合。这种采样与融合的方式,正是典型的bagging思想。
随机森林在Bagging的基础上做了修改
- 从样本集中用Bootstrap采样选出n个样本
- 从所有属性中随机选择k个属性,选择最佳分割属性作为节点建立CART决策树
- 重复以上两个步骤m次,即建立了m棵CART决策树
- 这m棵CART决策树形成随机森林,通过投票表决结果,决定数据属于哪一类
关于36.8%
对于一个样本,它在某一次含m个样本的训练集的随机采样中,每次被采集到的概率是 1 m \frac{1}{m} m1。不被采集到的概率为1− 1 m \frac{1}{m} m1。如果m次采样都没有被采集中的概率是 ( 1 − 1 m ) m (1-\frac{1}{m})^{m} (1−m1)m。当m→∞时, ( 1 − 1 m ) m (1-\frac{1}{m})^{m} (1−m1)m→ 1 e \frac{1}{e} e1≃0.368。也就是说,在bagging的每轮随机采样中,训练集中大约有36.8%的数据没有被采样集采集中。
对于这部分大约36.8%的没有被采样到的数据,我们常常称之为袋外数据(Out Of Bag, 简称OOB)。这些数据没有参与训练集模型的拟合,因此可以用来检测模型的泛化能力。
bagging对于弱学习器没有限制,这和Adaboost一样。但是最常用的一般也是决策树和神经网络。
bagging的集合策略也比较简单,对于分类问题,通常使用简单投票法,得到最多票数的类别或者类别之一为最终的模型输出。对于回归问题,通常使用简单平均法,对T个弱学习器得到的回归结果进行算术平均得到最终的模型输出。
由于Bagging算法每次都进行采样来训练模型,因此泛化能力很强,对于降低模型的方差很有作用。当然对于训练集的拟合程度就会差一些,也就是模型的偏倚会大一些。