一 什么是集成学习?
集成学习是机器学习中的一个重要分支,集成学习即ensemble learning,它是一种利用样本数据训练多个不同的弱分类器,然后将这些弱分类器整合成一个强大分类器的机器学习方法。
集成学习的基本结构为:先产生一组个体学习器,再使用某种策略将它们结合在一起。集成模型如下图所示:
在上图的集成模型中,若个体学习器都属于同一类别,例如都是决策树或都是神经网络,则称该集成为同质的(homogeneous);若个体学习器包含多种类型的学习算法,例如既有决策树又有神经网络,则称该集成为异质的(heterogenous)。
同质集成:个体学习器称为“基学习器”(base learner),对应的学习算法为“基学习算法”(base learning algorithm)。(目前集成学习算法的主流)
异质集成:个体学习器称为“组件学习器”(component learner)或直称为“个体学习器”。
上面我们已经提到要让集成起来的泛化性能比单个学习器都要好,虽说团结力量大但也有木桶短板理论调皮捣蛋,那如何做到呢?这就引出了集成学习的两个重要概念:准确性和多样性(diversity)。准确性指的是个体学习器不能太差,要有一定的准确度;多样性则是个体学习器之间的输出要具有差异性。通过下面的这三个例子可以很容易看出这一点,准确度较高,差异度也较高,可以较好地提升集成性能。
在所有个体学习器都使用同种算法构建时,如何保证学习器之间的差异性呢?有两种方案:
-
每次训练个体学习器时,对原始数据集进行抽样获得不同数据集作为当前训练集,每一个训练样本在抽样训练集中可以多次或不出现,经过 T T T次训练后,可得到 T T T个不同的没有相互依赖的个体学习器学习器。Bagging、随机森林就是这种方案的代表。
-
通过更新权重的方式不断地使用一个弱学习器弥补前一个弱学习器的“不足”的过程,来串行地构造一个较强的学习器,这个强学习器能够使目标函数值足够小。这一方案的代表是Boosting系列的算法,包括Adaboost、GBDT、XGBOOST等
二 集成学习可以解决什么问题?
学习EL之前,我们要搞懂为什么要引入EL,即EL可以为我们解决什么问题,我们大多都遇过一些实际项目,由于环境的复杂、噪声的存在以及其他随机不确定性因素的干扰,使用单一的识别手段、参数或特征无法达到我们预期的效果,这时就需要考虑应用多手段、多角度、多参量来解决以上问题,而有时候又由于参数特征高维的特点,引起model出现维数灾难的问题。呐,集成学习就应运而生啦,它可以解决以上的一系列问题。因此学习好集成学习至关重要。
三 集成学习的分类
EL主要可以分为两大类,按照弱分类器之间的关系可以分为boosting算法和bagging算法。每种都有其常用的EL算法:
Boosting:
- Adaboost
- GBDT
- xgboost
Bagging:
- Random Foreast
四 集成学习的核心问题
了解了集成学习的定义以及拟解决的问题后,应该知道我们如何实现集成学习,集成学习的实现主要需要考虑两个核心问题:
1.如何训练多个不同的弱分类器;
2.如何将多个不同弱分类器整合成一个强分类器。
针对以上核心问题,就有了不同的思路和方法,其中boosting和bagging对于以上两类问题的解决思路将各不相同,具体内容下一篇文章再详细介绍。