在无线通信中,有一种广受欢迎的“MIMO”传输技术。MIMO 的全称是多输入多输出(Multiple Input Multiple Output),其早期配置是在发送端和接收端同时布置多个发射机和多个接收机,每个发射机发送相同的信号副本,而每个接收机则接收到来自多个发射机的不同信号,这些信号经历的衰减是相互独立的。这样一来,在接收端多个信号同时被严重衰减的概率就会以指数形式减小,通过获得分集增益带来误码率的下降与信道容量的提升。

无线通信中的分集思想在机器学习中的对应就是集成学习。集成学习正是使用多个个体学习器来获得比每个单独学习器更好的预测性能

监督学习的任务是通过假设空间搜索来找到能够对特定问题给出良好预测的假设。但问题是即使这样的假设存在,能否找到也在两可之间。因而集成学习的作用就是将多个可以得到假设整合为单个更好的假设,其一般结构是先产生一组个体学习器,再使用某种策略将它们加以整合。每个组中的个体学习器如果属于同一类型(比如都是线性回归或者都是决策树),形成的就是同质集成;相应地,由不同类型学习器得到的集成则称为异质集成

直观来看,性能优劣不一的个体学习器放在一块儿可能产生的是更加中庸的效果,即比最差的要好,也比最好的要差。那么集成学习如何实现“1 + 1 > 2”呢?这其实是对个体学习器提出了一些要求。

一方面,个体学习器的性能要有一定的保证。如果每个个体学习器的分类精度都不高,在集成时错误的分类结果就可能占据多数,导致集成学习的效果甚至会劣于原始的个体学习器,正如俗语所言“和臭棋手下棋,越下越臭”。

另一方面,个体学习器的性能要有一定的差异,和而不同才能取得进步。多样性(diversity)是不同的个体学习器性能互补的前提,这恰与 MIMO 中分集(diversity)的说法不谋而合。

在 MIMO 中,一个重要的前提条件是不同信号副本传输时经历的衰减要相互独立。同样的原则在机器学习中体现为个体学习器的误差相互独立。但由于个体学习器是为了解决相同问题训练出来的,要让它们的性能完全独立着实是勉为其难。尤其是当个体学习器的准确性较高时,要获得多样性就不得不以牺牲准确性作为代价。由此,集成学习的核心问题在于在多样性和准确性间做出折中,进而产生并结合各具优势的个体学习器

个体学习器的生成方式很大程度上取决于数据的使用策略。根据训练数据使用方法的不同,集成学习方法可以分为两类:个体学习器间存在强依赖关系因而必须串行生成的序列化方法,和个体学习器之间不存在强依赖关系因而可以同时生成的并行化方法

序列化方法中的数据使用机制被称为提升(Boosting),其基本思路是对所有训练数据进行多次重复应用,每次应用前需要对样本的概率分布做出调整,以达到不同的训练效果。

与 Boosting 相比,并行化方法中的数据使用机制是将原始的训练数据集拆分成若干互不交叠的子集,再根据每个子集独立地训练出不同的个体学习器。这种方法被称为自助聚合(Bootstrap AGgregation),简称打包(Bagging)。在 Bagging 机制中,不同个体学习器之间的多样性容易得到保证;但由于每个个体学习器只能使用一小部分数据进行学习,其效果就容易出现断崖式下跌。

在基于训练数据集生成样本的子集时,Bagging 采用的是放回抽样的策略,即某些样本可能出现在不同的子集之中,而另外某些样本可能没有出现在任何子集之内。计算未被抽取概率的极限可以得到,放回抽样会导致 36.8% 的训练数据没有出现在采样数据集中。这些未使用的数据没有参与个体学习器的训练,但可以作为验证数据集,用于对学习器的泛化性能做出包外估计,包外估计得到的泛化误差已被证明是真实值的无偏估计。

典型的序列化学习算法是自适应提升方法(Adaptive Boosting),人送绰号 AdaBoost。在解决分类问题时,提升方法遵循的是循序渐进的原则。先通过改变训练数据的权重分布,训练出一系列具有粗糙规则的弱个体分类器,再基于这些弱分类器进行反复学习和组合,构造出具有精细规则的强分类器。从以上的思想中不难看出,AdaBoost 要解决两个主要问题:训练数据权重调整的策略和弱分类器结果的组合策略

在训练数据的权重调整上,AdaBoost 采用专项整治的方式。在每一轮训练结束后,提高分类错误的样本权重,降低分类正确的样本权重。因此在下一轮次的训练中,弱分类器就会更加重视错误样本的处理,从而得到性能的提升。这就像一个学生在每次考试后专门再把错题重做一遍,有针对性地弥补不足。虽然训练数据集本身没有变化,但不同的权重使数据在每一轮训练中发挥着不同的作用。

在 AdaBoost 的弱分类器组合中,每一轮得到的学习器结果都会按照一定比例叠加到前一轮的判决结果,并参与到下一轮次权重调整之后的学习器训练中。当学习的轮数达到预先设定的数目 TT