来源:原始 Jupyter Notebook。内容已转换为网页阅读格式;下载原文件

所谓“三个臭皮蛋,顶一个诸葛亮”,集成学习(ensemble learning)就是使用类似的思想,通过构建并结合多个学习器来完成学习任务,有时也叫做 多分类器系统(multi-classifier system)或 基于委员会的学习(committee-based learning)等。

从集成学习的定义可以看出,集成学习的关键在于两点:构建和结合。如何构建出多个不同的学习器?如何将多个学习器的学习结果结合在一起输出?

一般我们把构建出来的学习器称为 个体学习器(individual learner)或 组件学习器(component learner),如果个体学习器都是同一种类型,这样的集成叫做 同质集成(homogeneous),如果个体学习器类型不同,叫做 异质集成(heterogenous)。同质集成中的个体学习器又叫做 基学习器(base learner)。

根据 Krogh 和 Vedelsby 在 1995 年提出的 误差-分歧分解 理论(error-ambiguity decomposition):个体学习器的准确性越高,多样性越大,则集成效果越好,我们可以知道,要获得好的集成结果,个体学习器要做到“好而不同”,即个体学习器要同时具有准确性(accuracy)和多样性(diversity)。不过准确性和多样性是存在冲突的,一般情况下,准备性很高时,增加多样性就需要牺牲准确性,集成学习的构建算法的核心就是如何产生“好而不同”的个体学习器。

根据个体学习器的生成方式,集成学习可以分为两类:

  • 序列化方法:个体学习器之间存在强依赖关系,必须串行生成,代表算法为 Boosting
  • 并行化方法:个体学习器之间不存在强依赖关系,可以同时生成,代表算法为 Bagging随机森林(Random Forest)。

生成个体学习器之后,集成学习的第二项重点工作就是结合。通过结合多个学习器有很多好处:可以提高泛化性能,可以避免学习陷入局部极小值,可以扩大假设空间学得更好的近似。那么,如何结合多个学习器的学习结果呢?一般来说有三种不同的结合策略:

  • 平均法(averaging):常用于数值型输出,可分为简单平均法(simple averaging)和加权平均法(weighted averaging),在个体学习器性能相差较大时适合采用加权平均法,而在个体学习器性能相近时采用简单平均法。
  • 投票法(voting):常用于分类任务,可分为 绝对多数投票法(majority voting)、相对多数投票法(plurality voting)和加权投票法(weighted voting),使用绝对多数投票法时,当某标记得票数超过一半则预测为该标记,否则拒绝预测,这在可靠性要求较高的学习任务中是一个很好的机制,如果学习任务必须提供预测结果,则绝对多数投票法将退化为相对多数投票法。
  • 学习法:这是一种更强大的组合策略,它使用另一个学习器来学习如何组合,这里我们把个体学习器称为初级学习器,用于结合的学习器称为次级学习器元学习器(meta learner),典型算法为 Stacking