{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "所谓“三个臭皮蛋，顶一个诸葛亮”，**集成学习**（ensemble learning）就是使用类似的思想，通过构建并结合多个学习器来完成学习任务，有时也叫做 **多分类器系统**（multi-classifier system）或 **基于委员会的学习**（committee-based learning）等。\n",
    "\n",
    "从集成学习的定义可以看出，集成学习的关键在于两点：构建和结合。如何构建出多个不同的学习器？如何将多个学习器的学习结果结合在一起输出？\n",
    "\n",
    "一般我们把构建出来的学习器称为 **个体学习器**（individual learner）或 **组件学习器**（component learner），如果个体学习器都是同一种类型，这样的集成叫做 **同质集成**（homogeneous），如果个体学习器类型不同，叫做 **异质集成**（heterogenous）。同质集成中的个体学习器又叫做 **基学习器**（base learner）。\n",
    "\n",
    "根据 Krogh 和 Vedelsby 在 1995 年提出的 **误差-分歧分解** 理论（error-ambiguity decomposition）：个体学习器的准确性越高，多样性越大，则集成效果越好，我们可以知道，要获得好的集成结果，个体学习器要做到“好而不同”，即个体学习器要同时具有**准确性**（accuracy）和**多样性**（diversity）。不过准确性和多样性是存在冲突的，一般情况下，准备性很高时，增加多样性就需要牺牲准确性，集成学习的构建算法的核心就是如何产生“好而不同”的个体学习器。\n",
    "\n",
    "根据个体学习器的生成方式，集成学习可以分为两类：\n",
    "\n",
    "* 序列化方法：个体学习器之间存在强依赖关系，必须串行生成，代表算法为 **Boosting**。\n",
    "* 并行化方法：个体学习器之间不存在强依赖关系，可以同时生成，代表算法为 **Bagging** 和 **随机森林**（Random Forest）。\n",
    "\n",
    "生成个体学习器之后，集成学习的第二项重点工作就是结合。通过结合多个学习器有很多好处：可以提高泛化性能，可以避免学习陷入局部极小值，可以扩大假设空间学得更好的近似。那么，如何结合多个学习器的学习结果呢？一般来说有三种不同的结合策略：\n",
    "\n",
    "* 平均法（averaging）：常用于数值型输出，可分为**简单平均法**（simple averaging）和**加权平均法**（weighted averaging），在个体学习器性能相差较大时适合采用加权平均法，而在个体学习器性能相近时采用简单平均法。\n",
    "* 投票法（voting）：常用于分类任务，可分为 **绝对多数投票法**（majority voting）、**相对多数投票法**（plurality voting）和**加权投票法**（weighted voting），使用绝对多数投票法时，当某标记得票数超过一半则预测为该标记，否则拒绝预测，这在可靠性要求较高的学习任务中是一个很好的机制，如果学习任务必须提供预测结果，则绝对多数投票法将退化为相对多数投票法。\n",
    "* 学习法：这是一种更强大的组合策略，它使用另一个学习器来学习如何组合，这里我们把个体学习器称为**初级学习器**，用于结合的学习器称为**次级学习器**或**元学习器**（meta learner），典型算法为 **Stacking**。"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.7.1"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
