1 集成学习——投票
在学习了KNN、逻辑回归、决策树和随机森林等算法之后,如何综合利用这几种算法,从而放大每个算法的优势,我们采取投票的方式,即就是少数服从多数的方法对算法进行集成学习。
2 Hard voting和Soft voting
以一个二分类问题(A/B两类)为例,对两种投票方式进行说明:
模型1: A-95%; B-5%
模型2: A-40%; B-60%
模型3: A-90%; B-10%
模型4: A-45%; B-55%
模型5: A-49%; B-51%
- 1 根据投票的结果,我们认为类别A可以获得2票,类别B可以获得3票,因此依照票数,最终分类为B,这就是Hard Voting;
- 当然投票还有另外一种方式,我们分别对两种类型的概率求平均:
A:(0.95 + 0.4 + 0.9 + 0.45 + 0.49)/5 = 0.638
B:(0.05 + 0.6 + 0.1 + 0.55+0.51)/5 = 0.362
因此从中得到最终结果为A,此时的投票方式为Soft Voting。
可以看出,两种投票方式得到的结果截然不同,因此在之后的调参过程中需要格外注意。
3 集成学习的要求
从上面的计算过程中,我们不难看出,获得最终投票结果的前提是集合的每一个模型都能估计出每个类别的概率值。
KNN近邻:可以预测属于某一个类别的概率
逻辑回归:是基于概率模型的
决策树:预测属于某一个类别的概率
4 集成学习之Bagging模型
4.1 Bagging模型为什么要抽样?
虽然有很多的机器学习算法,但是从投票的角度来看,模型的数量依然有限,因此需要创建更多的子模型,来集成更多子模型的意见
-
假如每个子模型的准确率为51%,三个子模型的集成模型,精度为:
(即三个子模型中,有至少两个子模型预测准确) -
假如有500个子模型:
-
假如每个子模型的准确率为60%,假如有500个子模型:
通过这种集成学习方法,每一个子模型不需要太高的准确率,而整体就可以得到非常高的准确率,即用多个弱学习器实现强学习器的效果,Bagging模型子模型之间不能一致,要有差异性,为了让子模型具有差异性,我们采取抽样的方式,让每个子模型只学习样本数据的一部分。例如:一共有1000个样本;每个子模型只学习100个样本数据。
4.2 有放回抽样和无放回抽样的区别是什么?
(1)有放回抽样
在一轮抽样期间,每次抽完一个数据,就立马把该数据放回。如果一轮要抽样n个数据,那么就会有n次数据的放回动作。
(2)无放回抽样
它是在逐个抽取个体时,每次被抽到的个体,不放回总体中参加下一次抽取的方法。采用不重复抽样方法时,总体单位数在抽样过程中逐渐减小,总体中各单位被抽中的概率先后不同。不放回抽样也指整个样本一次同时抽取的抽样方法。
(3)主要区别
有放回抽样,每次的结果互不影响,无放回抽样,之前的抽样结果会影响之后的结果。
4.3 什么是包外数据?它有什么用处?
放回取样导致一部分样本很可能没有被取到,平均大约有37%的样本没有被取到,这些数据叫包外数据,Out-Of-Bag(OOB),因此可以在不用使用测试集的情况下,使用这些包外数据进行模型测试。
4.4 Bagging模型为什么可以做并行化运行?
因为个体学习器之间不存在强依赖关系,各个预测函数可以并行生成,可同时生成的并行化算法。
5 理解Random Forest和ExtraTress的性质
5.1 Random Forest 的随机性体现在哪些方面?
- 普通决策树:会在结点上所有的n个样本特征中选择一个最优的特征进行划分。
- 扩展之处:从结点的特征集合中随机选择一个包含 k个属性的子集,再从这个子集中选择一个最优划分,进一步扩大了基学习器的差异性,提升模型泛化性能。这里的参数k控制了随机性的引入程度:若k=d,则基决策树的构建和传统决策树的构建相同;若令k=1,则是随机选择一个属性用于划分,一般情况下,推荐值:k = log_2d。
5.2 训练同样的数据集,Random Forest为什么比Bagging的效率要高?
随机森林对Bagging只做了小改动,但是与Bagging中基学习器的“多样性”仅通过样本扰动(通过对初始训练集采样)而来不同,随机森林中基学习器的多样性不仅来自样本扰动,还来自属性扰动,这就使得最终集成的泛化性能可通过个体学习器之间差异度的增加而进一步提升。
随机森林的训练效率常优于Bagging,因为在个体决策树的构建过程中,Bagging使用的是“确定型”决策树,在选择划分属性时要对结点的所有属性进行考察,而随机森林使用的“随机型”决策树则只考察一个属性子集。
5.3 ExtraTress和Random Forest 的不同之处在哪儿?
- 随机森林:从结点的特征集合中随机选择一个包含 k个属性的子集,再从这个子集中选择一个最优划分。
- ExtraTrees:从k个属性的子集中,每个属性上随机选择一个阈值,再选一个最优划分,提供额外的随机性,进一步增强模型的泛化能力,更快的训练速度。
Extra tree是RF的一个变种, 仅有区别有:
1) 对于每个决策树的训练集,RF采用的是随机采样bootstrap来选择采样集作为每个决策树的训练集,而extra tree一般不采用随机采样,即每个决策树采用原始训练集。RandomForest应用的是Bagging模型,ExtraTree使用的是所有的样本,只是特征是随机选取的,因为分裂是随机的,所以在某种程度上比随机森林得到的结果更加好。
2) 在选定了划分特征后,RF的决策树会基于信息增益,基尼系数,均方差之类的原则,选择一个最优的特征值划分点,这和传统的决策树相同。但是Extra tree比较激进,会随机的选择一个特征值来划分决策树。
从第二点可以看出,由于随机选择了特征值的划分点位,而不是最优点位,这样会导致生成的决策树的规模一般会大于RF所生成的决策树。也就是说,模型的方差相对于RF进一步减少,但是bias相对于RF进一步增大。在某些时候,Extra tree的泛化能力比RF更好。(参考链接:https://www.jianshu.com/p/757ce349594c)