§1.1 引言
集成学习(ensemble learning)是一种机器学习范式,它本身不是一个单独的机器学习算法,而是通过构建并结合多个机器学习器来完成学习任务。集成学习的特点是一种将几种机器学习技术组合成一个预测模型的元算法,以减小方差、偏差或改进预测。所以集成学习核心思想就是通过训练若干个个体学习器,采用一定结合策略,形成一个强学习器,以达到群体决策提高决策准确率的目的。其中两个主要的问题就是:
1)如何得到若干个弱学习器
2)如何让选择一种结合策略,将这些弱学习器集合成一个强学习器。
在大多数情况下,这些弱学习器本身的性能并不好,要么是因为它们具有较高的偏置,要么是因为他们的方差太大导致鲁棒性不强。但是当弱学习器被正确组合成集成模型时,有时可以得到更精确或更鲁棒的模型。这些弱学习器的组合方式一般分为Bagging、Boosting、Stacking三种方式。Bagging通常考虑的是同质弱学习器,相互独立地并行学习,并按照某种确定性的平均过程(如投票发)将它们组合起来。Boosting通常考虑的也是同质弱学习器。它以一种高度自适应的方法顺序地学习这些弱学习器并按照某种确定性的策略将它们组合起来。Stacking通常考虑的是异质弱学习器,并通过训练一个将它们组合起来,并行地学习它们,根据不同弱模型的预测结果输出一个最终的预测结果。
那么如何组合这些弱学习器呢?简而言之说Bagging 的重点在于获得一个方差比其组成部分更小的集成模型,而 Boosting 和 Stacking 则将主要生成偏置比其组成部分更低的强模型(即使方差也可以被减小)。
那么如何得到若干个弱分类器呢?其实有两种方式:
1)同构集成:所有的个体学习器都是相同类型的,或者说是同质的(homogeneous),同质集成中的个体学习器也称为“基学习器”(base learner),相应的学习算法称为“基学习算法”(base learning algorithm)。比如都是决策树个体学习器。
2)异构集成:所有的个体学习器不全是同一个类型的,或者说是异质的(heterogeneous)。比如解决一个分类问题,对训练集采用支持向量机个体学习器,逻辑回归个体学习器和朴素贝叶斯个体学习器来学习,再通过某种结合策略来确定最终的分类强学习器。这时个体学习器一般不称为基学习器,而称作“组件学习器”(component leaner)或直接称为个体学习器。
采用什么样的学习模式呢?
1)串行:个体学习器之间存在强依赖关系,必须串行生成的序列化方法,代表算法是boosting系列算法。
2)并行:个体学习器不存在强依赖关系,可以同时生成的并行化方法,代表算法是bagging系列算法。
§1.2 集成学习的发展及研究现状
集成学习是十大机器学习算法之一,它是一种有监督学习算法,其目标是学习出一个稳定的且在各个方面表现都较好的模型,但实际情况往往不这么理想,有时我们只能得到多个有偏好的模型。集成学习就是组合这里的多个弱监督模型以期得到一个更好更全面的强监督模型,集成学习潜在的思想是即便某一个弱分类器得到了错误的预测,其他的弱分类器也可以将错误纠正回来。也就是我们常说的“博采众长”。集成学习可以用于分类问题集成,回归问题集成,特征选取集成,异常点检测集成等等,可以说所有的机器学习领域都可以看到集成学习的身影。
集成方法是将几种机器学习技术组合成一个预测模型的元算法,以达到减小方差(bagging)、偏差(boosting)或改进预测(stacking)的效果。集成学习在各个规模的数据集上都有很好的策略。如果数据集较大,则划分成多个小数据集,学习多个模型进行组合,若数据集较小:利用Bootstrap方法进行抽样,得到多个数据集,分别训练多个模型再进行组合。
而集合方法可分为两类:
序列集成方法,其中参与训练的基础学习器按照顺序生成(例如 AdaBoost)。序列方法的原理是利用基础学习器之间的依赖关系。通过对之前训练中错误标记的样本赋值较高的权重,可以提高整体的预测效果。集成学习的发展历史比较早。
1979年,Dasarathy 和 Sheela 首次提出集成学习思想[3],并使用线性分类器和最近邻居(NN)分类器组成的复合系统作为其组成部分的例子来说明这些概念。同年,Bootstrap由 Bradley Efron发表在他的论文"Bootstrap methods: another look at the jackknife"中[]。因其通用性和简便性,bootstrapping在各种机器学习算法中具有很强的实用性。1988年Kearns和1989年Valiant分别提出的弱学习的概念,引发了关于“能否用一组弱学习器创造一个强学习器”这一问题的讨论。1990年Schapire对这一问题给出了肯定的回答,并开发出boosting。并在几年之后和Freund提出了AdaBoost,该算法被广泛使用,他们还凭借Adaboost获得了计算机领域富有盛名的哥德尔奖。同年Hansen 和 Salamon 展示了一种基于神经网络的集成模型[4],并使用交叉验证优化网络参数和体系结构。该模型证明了集成系统的方差缩减(variance reduction)性质,从而可以提升神经网络的表现,使得集成模型具有更低的方差和更好的泛化能力,Schapire[5]证明 了通过 Boosting 方法可以将弱分类器组合成一个强分类器,该方法的提出使集成学习成为机器学习的一个重要研究领域.此后,集成学习研究得到迅猛发展,出现了许多新颖的思想和模型.1991 年 Jacobs 提出了混合专家模型[6].1992年Wolpert首次提出堆叠泛(Stacking)化的思想,堆叠通常能获得比任何单个的训练模型更好的性能。[7]1995 年,Freund 和 Schapire 提出了 Adaboost 算法[5],该算法运行高效且实际应用广泛,该算法提出后,研究人员针对该算法进行 了深入的研究[8-9]同年,Tin Kam Ho 等提出了集成学习中最广为人知的算法——随机决策森林,并在几年后由Leo Breiman将随机森林方法进行系统的阐述,随机森林方法正式成为数据挖掘分类算法的重要组成部分。1996年,Breiman 开发出 Bagging 预测器,并对其原理和训练进行了详细描述。他提出回归和分类的一个关键问题是预测方法的不稳定性——如果扰乱训练集,那么可能会导致构建的预测变量发生重大变化,而Bagging 可以提高准确性。1997 年,Woods[11]提出了一种动态分类器 选择 方 法.2001 年,Breiman 提出了随机森林算 法[12],该算法被誉为最好的算法之一.随着时代的发展,更多的集成学习算法被提出,并且在诸多领域都取得了重大突破.2010年,Kalal等人提出P-N学习。他们证明通过处理结构化的未标记数据可以显着提高二元分类器的性能,并提出了一种新的范例,用于从标记和未标记的例子中训练一个二元分类器,称之为P-N学习。他们还在学习中用Bootstrapping提升分类器的性能。GBDT(Gradient Boosting Decision Tree) 又叫 MART(Multiple Additive Regression Tree),是一种迭代的决策树算法,该算法由多棵决策树组成,所有树的结论累加起来做最终答案。它在被提出之初就和SVM一起被认为是泛化能力(generalization)较强的算法2014年,LightGBM是微软旗下的Distributed Machine Learning Toolkit (DMKT)的一个项目,由2014年首届阿里巴巴大数据竞赛获胜者之一柯国霖主持开发。虽然其开源时间才仅仅2个月,但是其快速高效的特点已经在数据科学竞赛中崭露头角。Allstate Claims Severity竞赛中的冠军解决方案里就使用了LightGBM,并对其大嘉赞赏。LightGBM是2017年由微软推出的可扩展机器学习系统,是微软旗下DMKT的一个开源项目,由2014年首届阿里巴巴大数据竞赛获胜者之一柯国霖老师带领开发。2015年,美国华盛顿大的美籍华裔陈天其教授提出了XGBoost的提出等。2017年,俄罗斯的搜索巨头提出了Catboost 。