集成学习(emsemble learning)-“好而不同”

介绍

集成学习通过构建并结合多个学习器来完成任务。一般先产生一组个体学习器(individual learner),再用一些策略把它们结合起来。个体学习器通常由一个现有的学习算法从训练数据中产生。

集成中若全是同种类型的个体学习器(如全是神经网络),则称为同质的( homogeneous ),否则称为异质的( heterogenous )。

集成学习对弱学习器( weak learner )的提升效果更显著。

集成学习原理可参考以下例子(假设这里的结果都是由“少数服从多数”产生):

在这里插入图片描述
图片摘自《机器学习》周志华

由上可看出,要获得好的集成,个体学习器应“好而不同”。个体学习器应有一定的准确性,同时也要有多样性。然而,现实中这往往是冲突的。因为我们所有的个体学习器都是为了同一个问题训练出来的。如何产生“好而不同”的个体学习器,也是集成学习研究的核心。

根据个体学习器的生成方式,可分为两大类; 个体学习器间不存在强依赖关系、可同时生成的并行化方法(如Bagging)和存在强依赖关系、必须串行生成的序列化方法(如Boosting)。

Bagging

给定一个具体数据集,为了差异性,分出若干个不同的子集给个体学习器学习。但是同时,我们也希望能提高每个个体学习器的准确性,所以假如每个子集都完全不同,那每个子集必定不会很大。为此,我们考虑使用相互有交叠的采样子集。

Bagging是 Boostrap AGGregatING的缩写, 直接基于自助采样法( bootstrap sampling)。在预测输出时,通常对分类任务用简单投票法,对回归任务用简单平均法。由于自助采样法只用了约63.2%的初始样本,剩下的可用来作为验证集对泛化性能进行“包外估计”(out-of-bag estimate)。(补充:这也是与传统的train-validation分割的不同之处。自助采样法很适合样本不大的数据集。) 当然,包外样本还有很多其他用途。

Bagging 主要关注降低方差,因此在神经网络等易受样本扰动的学习器上效果明显。换句话说,因为 bagging 方法可以减小过拟合,所以通常在强分类器和复杂模型上使用时表现的很好(例如,完全生长的决策树,fully developed decision trees)

随机森林(Random forest)

随机森林是bagging的一个变体,它在以决策树作为个体学习器的基础上,在决策树训练时引入了随机属性选择,即在每个节点先从属性集(假设有d个属性)中选出包含k个属性的子集,然后再从中选出最优属性。一般推荐 k = log d 。

RF之所以有比较好的效果,是因为其个个体学习器的多样性不仅来自样本扰动,还来自属性扰动,使个体学习器之间的差异度增加。

在sklearn中使用时要调整的参数主要是 n_estimators 和 max_features。 前者(n_estimators)是森林里树的数量,通常数量越大,效果越好,但是计算时间也会随之增加。 此外,当树的数量超过一个临界值之后,算法的效果并不会很显著地变好。 后者(max_features)是分割节点时考虑的特征的随机子集的大小。 这个值越低,方差减小得越多,但是偏差的增大也越多。根据经验,回归问题中使用 max_features = None (总是考虑所有的特征), 分类问题使用 max_features = "sqrt" (随机考虑 sqrt(n_features) 特征,其中 n_features 是特征的个数)是比较好的默认值。 max_depth = None 和 min_samples_split = 2 结合通常会有不错的效果(即生成完全的树)。 请记住,这些(默认)值通常不是最佳的,同时还可能消耗大量的内存,最佳参数值应由交叉验证获得。 当使用自助采样法方法抽样时,泛化精度是可以通过剩余的或者袋外的样本来估算的,设置 oob_score = True 即可实现。

Boosting

Boosting是一族可将弱学习器提升为强学习器的算法。其一开始先从初始训练集训练出一个基学习器,再根据基学习器的表现对样本分布进行调整,使得之前做错的样本获得更多的关注,然后基于调整后的样本训练下一个基学习器,直至基学习器数目达到之前指定的值T,最终将这T个进行加权结合。

该族算法的代表是AdaBoost。

Boosting算法调整数据分布可通过“重赋权法(re-weighting)”或“重采样法(re-sampling)”处理。后者适用于无法接受带权样本的基学习算法。一般而言,这两种算法无明显的优劣差别。

Boosting 主要关注降低偏差,因此在弱模型上表现更好(例如,浅层决策树,shallow decision trees)。

参考资料

  • 《机器学习》周志华
  • sklearn 文档

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注