在机器学习领域,集成学习由于可以提高学习系统的泛化能力,因此被广泛关注使用。对于集成学习可以分为两个阶段:
1)对训练数据集构造出多个基分类器。
这些基分类器的构造通常采用数据子集或者特征子集的方法进行构造,加上随机子集的方法,保证构造出的多个基分类器相互之间具有差异性
2)对这些基分类器的预测结果采用某种方式进行组合预测。
组合方式可以是平均投票,加权投票等等。
那么选择性集成学习,其实就是在集成学习的基础上增加了一个阶段,即分类器的选择阶段。也可以认为是通过剔除那些对集成分类器的预测能力具有负面影响的基分类器,从而进一步提高分类性能。如下面两幅图,左图是集成学习的流程,右图是选择性集成的流程。
可以认为选择性集成学习就是在假定已生成的的多个基分类器基础上,基于某种策略只选择一部分用于构建最终的集成。那么它的好处是什么呢?
(1)因为剔除了分类性能差劲的基分类器,改善了集成学习的预测性能。
(2)由于集成分类器个数的下降,使得集成学习的整体预测速度得到了提升并且降低了计算机的存储需求。
分类器的选择策略问题:
可以看出来选择性集成其实就是一个组合优化问题,属于NP难问题,如果采用穷举法,就会存在组合爆炸问题。目前主要有以下一些组合策略:
(1)基于聚类的方法
(2)基于排序的方法:
(3)基于优化的方法:
(4)其他(动态选择和循环集成):
一 基于聚类:
聚类属于无监督学习,一般利用某种条件将整个数据集分为几组。这里通过使用聚类比如kmeans算法,将多个基分类器分为几个簇。如下图所示:
比如有10个分类器,通过对分类器的输出结果进行聚类,分为3个簇,然后分别从这三个簇中选取出分类器性能最好的分类器用于集成,这样通过簇保证了不同簇分类器之间的差异性,同时通过聚类剔除了多余的分类器。对于聚类的方法,应当注意两个问题:
(1)聚类的个数选择
(2)簇内的距离定义:比如欧式距离、差异性等等。
二 基于排序:
基于排序的策略指的是通过事先对分类器进行排序,然后选取靠前的某些个分类器进行集成。
(1)采用何种标准进行排序
以往一般采用分类器的准确率进行排序,但是后来使用证明,个体分类器的性能比较好,并不能保证集成后的效果也是好的,因此现在一般采用分析分类器之间的相关性,使得所选择的分类器之间具有互补性,从而避免他们间的优势相互抵消。
(2)选择多少个分类器进行集成
a)自己设置选择分类器的个数大小或者个数所占总的分类器个数的百分比
b)设置阈值,只选择那些达到阈值的分类器个数,阈值可以是设置Acc的大小
三 基于优化的方法:
求解组合优化问题,很多时候是采用启发式搜索近似最优组合解。同理这里我们也可以借助优化算法比如(粒子群算法,遗传算法…)剔除不必要的基分类器,选择最优的基分类器子集。
如下图,集合T为分类器集,w是分类器的权向量,通过采用遗传算法,迭代优化出一组最优全向量值,然后选取出那些向量权重大于某个阈值的分类器进行集成学习。
还有一些常用的策略(贪心算法),如下:
(1)HC(Hill Climbing 爬山策略)
(2)FSS(Forward Sequential Selection 前序选择策略)
(3)BSS(Backward Sequential Selection 后序选择策略)
对于这些启发式搜索都有适应函数,定义为:f(x)=(1-r)Acc+r*div: Acc:分类器的分类准确率 div 分类器的差异性
1.HC
我们知道爬山算法,是一个逐步求优的搜索过程,每一次搜索都是建立在对前一次搜索的评估的基础之上的,大致步骤如下:
- 随机选择两个性能较好的基分类器作为初始集成模型M,计算适应函数。
- 从集成模型之外随机选取一个分类器添加到M,计算适应函数,比较适应函数,如果使用函数变小则撤销这一步。
- 重复以上步骤,当连续多次适应函数没有发生变化时,或者已无候选分类器时,结束步骤。
2.FSS
- 首先采用某种指标对所有的候选分类器进行排序,可以采用Acc或者其他指标。
- 选取两个指标最好的的分类器作为初始集成模型,计算适应函数。
- 从集成模型之外选取最优性能的分类器添加到集成模型M,计算适应函数,如果适应函数下降,则撤销这一步。
- 重复以上步骤,当连续多次适应函数没有发生变化时,或者已无候选分类器时,结束步骤。
3.BSS
- 首先将所有的分类器都加入到集成模型M里面。
- 随机删除集成模式M当中的一个基分类器,计算机适应函数,如果适应函数下降,则撤销这一步。
- 重复以上步骤,当连续多次适应函数没有发生变化时结束步骤。
四 其他(动态选择和循环集成):
- 构造出一定数量的候选分类器,并计算互补指数,对分类器进行排序。
- 动态选取准确率较高的的分类器组合,构成最优子集。
- 如果所有的候选分类器都参与集成仍不能得到预期准确率,就循环利用候选分类器,直到符合某个结束条件。