什么是集成学习?
一、集成学习概念
在统计学和机器学习中,集成学习(Ensemble learning)方法通过组合多种学习算法来获得比单独使用任何一种算法更好的预测性能(维基百科)。集成学习结合了多个学习器(或基学习器)的预测结果,以提高整体模型的性能,尤其是在模型的泛化能力上。集成学习的核心思想是“集思广益”,即通过组合多个模型来减少单一模型可能存在的偏差和方差,从而提高预测的准确性和稳定性。集成学习可以应用于各种机器学习任务,包括分类、回归、聚类等。
二、集成学习类别
1、Bagging
Bagging(Bootstrap Aggregating)通过从原始数据集中创建多个不同的训练集来训练多个基学习器,然后将这些学习器的预测结果结合起来,以提高整体模型的性能(科技理解为投票机制)。Bagging的主要目的是减少模型的方差,从而提高泛化能力,随机森林就是典型的Bagging算法。Bagging的工作原理包括以下几个步骤:
(1)自助采样(Bootstrap Sampling):从原始数据集中有放回地随机抽取样本,生成多个新的训练集,每个训练集的大小与原始数据集相同,但样本可能会重复。
(2)训练基学习器:在每个新的训练集上独立地训练一个基学习器,这些基学习器通常是相同的模型,例如决策树。
(3)聚合预测结果:在预测阶段,Bagging算法将所有基学习器的预测结果进行聚合,通常是通过投票(对于分类问题)或平均(对于回归问题)的方式。
Bagging能够降低模型的方差,提高模型的稳定性,也可以并行计算,加速模型训练的速度。同时,Bagging对噪声数据比较敏感,因为每个子集都可能包含噪声数据。在处理分类问题时,可能会出现过于一致性问题,即如果不同的基学习器都对同一个测试样本做出了相同的错误预测。
2、Boosting
Boosting通过组合多个弱学习器来创建一个强学习器,目的是提高模型的预测准确性和稳定性。Boosting的核心思想是迭代地训练一系列弱学习器,每个学习器都在前一个学习器的基础上进行改进(比如预测一个人的年龄,实际年龄是30岁,第一个弱学习器预测为20,那下一个学习器则负责拟合30-20=10岁的误差,以此类推),直到达到满意的性能或达到预定的迭代次数。与Bagging不同,Boosting方法降低的是模型的偏差,其工作原理可以概括为以下几个步骤:
(1)初始化样本权重:在训练开始时,为数据集中的每个样本分配相同的权重。
(2)训练弱学习器:使用当前的样本权重训练一个弱学习器。如果某个样本被错误分类,其权重将增加,以便在后续的学习器中获得更多关注。
(3)更新样本权重:根据学习器的性能更新样本权重,增加错误分类样本的权重,减少正确分类样本的权重。
(4)迭代训练:重复步骤(2)和(3),直到训练出足够数量的弱学习器或达到预定的性能标准。
(5)组合弱学习器:将所有训练好的弱学习器按照一定的权重组合成一个强学习器,通常是通过加权多数投票或加权平均的方式。
Boosting算法的几种常见实现包括AdaBoost、GBDT、XGBoost、LightGBM和CatBoost。Boosting算法可以提高模型的准确性、减少过拟合的风险、增强模型的泛化能力,但也对异常值和噪声敏感。由于Boosting训练弱学习器是迭代进行的,后一个弱学习器依赖前一个弱学习器的结果,因此Boosting方法无法模型的并行训练,时间开销比bagging方法大。
3、Stacking
Stacking也称为堆叠泛化,它通过组合多个不同的模型来提高预测性能。在Stacking中,首先在相同的数据集上训练多个基模型,然后使用它们的预测结果作为新的特征,训练一个元模型来进行最终的预测(可以理解为员工A、B、C对同一件事分别凝练出自己独到的见解,三个人共同的老板S不直接理解原事件,而是综合A、B和C的见解做出最终的决策)。Stacking的关键步骤包括:
(1)训练基模型:使用不同的算法训练多个基模型。这些模型可以是决策树、支持向量机、神经网络等,不要求基模型具有同样的结构。
(2)生成新特征:每个基模型对训练集和测试集进行预测,这些预测结果作为新的特征。
(3)训练元模型:使用新特征训练一个元模型,这个模型学习如何最佳地结合基模型的预测。
(4)预测:使用训练好的元模型对新特征进行预测,得到最终结果。
Stacking的优点在于能够结合不同模型的优势,提高预测的准确性和泛化能力。然而,Stacking也会增加模型的复杂性和计算成本,并且在数据集较小或不平衡的情况下可能会导致过拟合问题。
三、集成学习优缺点
1、优点
(1)提高准确性:集成学习通常能够提高模型的准确性,因为它减少了模型的方差/偏差。
(2)减少过拟合:通过组合多个模型,集成学习减少了单一模型可能存在的过拟合风险。
(3)增强泛化能力:集成学习能够提高模型对未知数据的泛化能力,因为它利用了多个模型的优势。
(4)稳定性:集成学习模型对数据中的噪声和异常值更加鲁棒,因为多个模型的预测结果可以相互补充。
(5)多样性:集成学习可以结合不同类型的模型,利用它们的多样性来提高性能。
2、缺点
(1)计算成本:集成学习需要训练和存储多个模型,这可能导致计算成本和内存使用的增加。
(2)模型复杂性:集成模型可能比单一模型更复杂,这可能使得模型的解释和理解变得更加困难。
(3)可能欠拟合:如果基学习器过于简单或数量不足,集成学习可能无法有效提高性能,甚至可能导致欠拟合。
(4)训练时间:训练集成模型可能需要更长的时间,特别是当基学习器数量较多或模型复杂时。
(5)模型部署:部署集成模型可能需要更多的资源和更复杂的系统设计,因为它涉及到多个模型的集成。
四、总结
在实际工作或者竞赛中,Bagging和Boosting是建模的常客,很多面试官也会问Bagging和Boosting的异同,对两者概念的把握应当清晰。然而,Stacking也是很有效的集成学习方法。在建模的灵活度上,笔者认为Stacking要比另外两种更高,因此在一些场景中我们会上一些复杂的深度学习/预训练模型,并使用Stacking方法进行组合应用,有时从效果上看Stacking也比另外两种更优。三种方法各有优劣,根据任务的特点选择合适的方法才能事半功倍。