
【机器学习】万字长文详解集成学习 Ensemble Learning从 Bagging、Boosting 到 Stacking 的全解析文章目录【机器学习】万字长文详解集成学习 Ensemble Learning从 Bagging、Boosting 到 Stacking 的全解析1 什么是 Ensemble Learning2 集成学习的基本思想2.1 构造多个基学习器2.2 组合多个模型的预测结果3 集成学习的三大主流方法Bagging、Boosting、Stacking3.1 Bagging并行式集成学习3.1.1 Bagging 的核心思想3.1.2 Bootstrap 有放回采样3.1.3 Bagging 的预测方式3.1.4 Bagging 的代表算法随机森林3.1.5 使用 scikit-learn 实现随机森林分类3.1.6 Bagging 的优缺点3.2 Boosting串行式集成学习3.2.1 Boosting 的核心思想3.2.2 什么是弱学习器3.2.3 Boosting 的基本流程3.2.4 AdaBoost3.2.5 GBDT3.2.6 XGBoost、LightGBM 和 CatBoost3.2.7 Boosting 的优缺点3.3 Stacking模型融合的高级方法3.3.1 Stacking 的核心思想3.3.2 Stacking 的基本流程3.3.3 使用 scikit-learn 实现 Stacking3.3.4 Stacking 的优缺点3.4 Voting最简单的集成方式3.4.1 Hard Voting3.4.2 Soft Voting3.4.3 使用 scikit-learn 实现 Voting3.5 Bagging、Boosting、Stacking 对比4 集成学习中的常见参数4.1 n_estimators4.2 learning_rate4.3 max_depth4.4 subsample4.5 colsample_bytree5 关于集成学习在实际应用时的一些建议5.1 一些情景下的应用建议5.2 集成学习的注意事项5.3 面试常见问题5.3.1 Bagging 和 Boosting 有什么区别5.3.2 随机森林为什么不容易过拟合5.3.3 XGBoost 为什么效果好5.3.4 Stacking 为什么容易数据泄漏5.3.5 集成学习一定比单模型好吗6 完整示例对比多个集成模型效果7 总结1 什么是 Ensemble LearningEnsemble Learning中文通常称为集成学习是一种非常重要的机器学习思想。它的核心思想是不依赖单个模型做决策而是训练多个模型并将它们的预测结果组合起来从而获得更稳定、更准确、更鲁棒的最终模型。在机器学习中一个模型可能会因为训练数据、特征选择、模型结构、参数设置等原因产生误差。集成学习的目标就是通过多个模型协同工作降低单个模型的不确定性。举一个生活中的例子假设你要判断一家公司是否值得投资。你可以只听一个专家的意见也可以同时参考多位专家的判断然后综合他们的观点做决定。通常情况下多个专家的综合意见会比单个专家更可靠。机器学习中的集成学习也是类似的思想。在机器学习建模过程中我们经常会遇到以下问题单个模型容易过拟合单个模型对训练数据变化敏感单个模型预测结果不够稳定某些模型偏差较大某些模型方差较大数据噪声较多模型容易受到干扰。集成学习通过组合多个模型可以有效缓解这些问题。从误差角度来看模型的泛化误差通常可以拆分为泛化误差 偏差 B i a s 方差 V a r i a n c e 噪声 N o i s e 泛化误差 偏差 Bias 方差 Variance 噪声 Noise泛化误差偏差Bias方差Variance噪声Noise其中偏差 Bias模型过于简单无法很好拟合真实规律方差 Variance模型对训练数据过于敏感泛化能力差噪声 Noise数据中本身存在的随机误差通常无法完全消除。集成学习有效的关键在于两个条件基学习器要有一定准确性如果每个模型都完全随机预测那么集成起来也没有意义。每个基模型至少应该比随机猜测好一些。基学习器之间要有差异性如果所有模型都完全一样那么集成结果和单个模型没有区别。好的集成模型希望基学习器之间具有一定差异性。差异性可以来自不同的训练样本不同的特征子集不同的模型结构不同的超参数不同的数据预处理方式不同的随机种子。这也是为什么随机森林比单棵决策树更稳定因为随机森林中的每棵树都不完全相同。不同类型的集成学习方法主要解决的问题也不同方法主要思想主要降低Bagging多个模型并行训练结果平均或投票方差Boosting多个模型串行训练后一个模型关注前一个模型的错误偏差Stacking多个不同模型作为一级模型再用一个模型融合结果综合提升2 集成学习的基本思想集成学习包含两个步骤2.1 构造多个基学习器基学习器也叫 base learner指的是参与集成的单个模型。常见的基学习器包括决策树逻辑回归支持向量机KNN神经网络朴素贝叶斯线性回归随机森林中的单棵树GBDT 中的单棵树。基学习器可以是同一种模型也可以是不同类型的模型。① 如果多个基学习器属于同一种模型这类集成通常叫做同质集成。例如随机森林中有很多棵决策树。关于随机森林模型的介绍可以参见我写的这一篇文章【数学建模】随机森林算法详解原理、优缺点及应用 。②如果多个基学习器来自不同模型这类集成通常叫做异质集成。例如同时使用逻辑回归、随机森林、XGBoost、SVM再做融合。2.2 组合多个模型的预测结果集成学习需要将多个模型的输出进行组合。对于分类任务常见方式包括投票法 Voting加权投票 Weighted Voting概率平均加权概率平均使用元学习器进行融合。对于回归任务常见方式包括简单平均加权平均使用元模型预测最终结果。3 集成学习的三大主流方法Bagging、Boosting、Stacking3.1 Bagging并行式集成学习3.1.1 Bagging 的核心思想Bagging 是 Bootstrap Aggregating 的缩写。它的核心思想是从原始训练集中有放回地随机采样构造多个不同的训练子集然后分别训练多个模型最后将这些模型的结果进行平均或投票。Bagging 的训练过程是并行的也就是说多个基模型之间没有依赖关系。Bagging 通常用于降低模型方差使模型更加稳定。3.1.2 Bootstrap 有放回采样Bagging 中非常重要的一个概念是Bootstrap Sampling也就是有放回采样。假设原始训练集有 N 条数据。每次从这 N 条数据中随机抽取一条抽完之后再放回然后继续抽取重复 N 次得到一个新的训练子集。由于是有放回采样所以某些样本可能会被重复抽到某些样本可能一次都没有被抽到每个子集都和原始数据集相似但又不完全相同。这样就可以训练出多个存在差异的模型。3.1.3 Bagging 的预测方式对于分类任务最终类别 多个模型预测结果的多数投票。例如有 5 个模型预测某个样本模型1正类 模型2正类 模型3负类 模型4正类 模型5负类最终正类有 3 票负类有 2 票所以输出正类。对于回归任务最终预测值 多个模型预测值的平均值。例如模型1预测80 模型2预测82 模型3预测78 模型4预测81 模型5预测79最终结果为(80 82 78 81 79) / 5 803.1.4 Bagging 的代表算法随机森林随机森林 Random Forest 是 Bagging 思想最经典的代表算法。随机森林由多棵决策树组成每棵树使用不同的训练样本和特征子集进行训练。随机森林相比普通决策树有明显优势不容易过拟合预测结果更稳定对异常值和噪声不太敏感可以处理高维特征可以输出特征重要性。随机森林引入了两种随机性样本随机每棵树使用 Bootstrap 采样得到的样本特征随机每次节点分裂时只从部分特征中选择最优特征。正是这两种随机性使得每棵树之间存在差异从而提升集成效果。关于随机森林模型的介绍可以参见我写的这一篇文章【数学建模】随机森林算法详解原理、优缺点及应用 。3.1.5 使用 scikit-learn 实现随机森林分类fromsklearn.datasetsimportload_irisfromsklearn.model_selectionimporttrain_test_splitfromsklearn.ensembleimportRandomForestClassifierfromsklearn.metricsimportaccuracy_score# 加载数据irisload_iris()Xiris.data yiris.target# 划分训练集和测试集X_train,X_test,y_train,y_testtrain_test_split(X,y,test_size0.2,random_state42)# 构建随机森林模型modelRandomForestClassifier(n_estimators100,max_depthNone,random_state42)# 训练模型model.fit(X_train,y_train)# 预测y_predmodel.predict(X_test)# 评估准确率accaccuracy_score(y_test,y_pred)print(Accuracy:,acc)其中n_estimators表示森林中树的数量max_depth表示每棵树的最大深度random_state用于控制随机性保证实验可复现。3.1.6 Bagging 的优缺点优点:可以有效降低模型方差模型更加稳定不容易过拟合支持并行训练效率较高适合高方差模型例如决策树。缺点:对降低偏差帮助有限模型解释性较差模型数量较多时预测速度可能变慢对弱模型的提升不如 Boosting 明显。3.2 Boosting串行式集成学习3.2.1 Boosting 的核心思想Boosting 是另一类非常重要的集成学习方法。它的核心思想是多个弱学习器按顺序训练后一个模型重点学习前一个模型预测错误的样本最终将多个弱学习器组合成一个强学习器。Boosting 和 Bagging 的最大区别在于Bagging 中的模型是并行训练的Boosting 中的模型是串行训练的Bagging 主要降低方差Boosting 主要降低偏差。3.2.2 什么是弱学习器弱学习器指的是性能只比随机猜测略好一点的模型。例如在二分类任务中随机猜测准确率大约是 50%。如果某个模型准确率是 55%它就可以看作一个弱学习器。Boosting 的强大之处在于即使每个模型都很弱只要它们不断纠正前面模型的错误最终也可以组合成一个性能很强的模型。降低偏差3.2.3 Boosting 的基本流程Boosting 的训练过程初始化样本权重训练第一个弱学习器根据预测错误调整样本权重错误样本权重变大正确样本权重变小训练下一个弱学习器重复上述过程将多个弱学习器加权组合得到最终模型。3.2.4 AdaBoostAdaBoost 是最早也最经典的 Boosting 算法之一。AdaBoost 的基本思想是对于前一个模型分类错误的样本提高其权重对于分类正确的样本降低其权重。后续模型会更加关注难分类样本。AdaBoost 的特点每轮训练都会调整样本权重错误率低的模型拥有更大的投票权重最终模型是多个弱分类器的加权组合。使用 scikit-learn 实现 AdaBoostfromsklearn.datasetsimportload_breast_cancerfromsklearn.model_selectionimporttrain_test_splitfromsklearn.ensembleimportAdaBoostClassifierfromsklearn.treeimportDecisionTreeClassifierfromsklearn.metricsimportaccuracy_score# 加载数据dataload_breast_cancer()Xdata.data ydata.target# 划分数据集X_train,X_test,y_train,y_testtrain_test_split(X,y,test_size0.2,random_state42)# 定义弱学习器base_modelDecisionTreeClassifier(max_depth1)# 构建 AdaBoost 模型modelAdaBoostClassifier(estimatorbase_model,n_estimators100,learning_rate0.5,random_state42)# 训练模型model.fit(X_train,y_train)# 预测y_predmodel.predict(X_test)# 评估accaccuracy_score(y_test,y_pred)print(Accuracy:,acc)说明max_depth1的决策树也叫决策树桩n_estimators表示弱学习器数量learning_rate表示每个弱学习器的贡献缩放比例。3.2.5 GBDTGBDT 的全称是 Gradient Boosting Decision Tree即梯度提升决策树。GBDT 也是 Boosting 家族中的经典算法。它的核心思想是每一轮训练一个新的决策树用来拟合前一轮模型的残差或负梯度方向。对于回归任务残差可以简单理解为残差 真实值 - 当前模型预测值。例如真实房价为 100 万当前模型预测为 80 万那么残差为 20 万。下一棵树就会重点学习这个 20 万的误差。GBDT 的最终预测结果是多个树的累加最终预测 初始预测 第1棵树预测 第2棵树预测 … 第M棵树预测使用 scikit-learn 实现 GBDT 分类fromsklearn.datasetsimportload_breast_cancerfromsklearn.model_selectionimporttrain_test_splitfromsklearn.ensembleimportGradientBoostingClassifierfromsklearn.metricsimportaccuracy_score# 加载数据dataload_breast_cancer()Xdata.data ydata.target# 划分数据集X_train,X_test,y_train,y_testtrain_test_split(X,y,test_size0.2,random_state42)# 构建 GBDT 模型modelGradientBoostingClassifier(n_estimators100,learning_rate0.1,max_depth3,random_state42)# 训练模型model.fit(X_train,y_train)# 预测y_predmodel.predict(X_test)# 评估accaccuracy_score(y_test,y_pred)print(Accuracy:,acc)3.2.6 XGBoost、LightGBM 和 CatBoost在实际工程中Boosting 系列算法非常常用尤其是以下三个模型1. XGBoostXGBoost 是 Extreme Gradient Boosting 的缩写是 GBDT 的高效工程实现和改进版本。它的特点包括支持正则化支持并行计算支持缺失值处理支持列采样训练速度快泛化能力强。2. LightGBMLightGBM 是微软提出的一种高效梯度提升框架。它的特点包括训练速度非常快内存占用较低适合大规模数据使用直方图算法使用 Leaf-wise 生长策略对高维稀疏特征表现较好。3. CatBoostCatBoost 是 Yandex 开源的 Boosting 算法。它的特点包括对类别特征支持较好减少特征预处理成本对类别型数据表现优秀对参数不敏感默认效果通常较好。3.2.7 Boosting 的优缺点优点:通常预测精度很高可以有效降低偏差能够处理复杂非线性关系在结构化数据任务中表现非常强XGBoost、LightGBM、CatBoost 在工业界和竞赛中应用广泛。缺点:模型串行训练并行化不如 Bagging 简单对噪声和异常值较敏感参数较多调参成本较高模型解释性相对较弱训练不当容易过拟合。3.3 Stacking模型融合的高级方法3.3.1 Stacking 的核心思想Stacking也叫堆叠泛化是一种更灵活的集成学习方法。它的核心思想是先训练多个不同的基础模型然后将这些模型的预测结果作为新的特征再训练一个二级模型来学习如何融合这些结果。Stacking 通常包含两层第一层是多个base model第二层是一个meta model例如第一层有三个模型Random Forest、XGBoost、Logistic Regression它们分别对样本做预测得到三个预测结果模型1预测概率0.82 模型2预测概率0.76 模型3预测概率0.68然后将这些预测结果组成新的特征[0.82, 0.76, 0.68]再交给第二层模型例如逻辑回归输出最终预测结果。3.3.2 Stacking 的基本流程Stacking 的训练过程通常如下将训练集划分为 K 折对每个基础模型进行 K 折训练得到每个训练样本的 out-of-fold 预测结果使用这些预测结果作为新的训练特征训练第二层元模型测试时先让基础模型预测再让元模型融合结果。因为如果直接用基础模型在训练集上的预测结果训练元模型容易产生数据泄漏。基础模型已经见过这些训练样本所以它在训练集上的预测结果可能过于乐观。元模型如果基于这些结果训练就会产生过拟合。因此Stacking 通常使用 K 折交叉验证生成 out-of-fold 预测使得某个样本的预测结果必须来自没有见过它的模型这样可以更真实地模拟测试集上的预测情况。3.3.3 使用 scikit-learn 实现 Stackingfromsklearn.datasetsimportload_breast_cancerfromsklearn.model_selectionimporttrain_test_splitfromsklearn.ensembleimportRandomForestClassifier,GradientBoostingClassifier,StackingClassifierfromsklearn.linear_modelimportLogisticRegressionfromsklearn.svmimportSVCfromsklearn.metricsimportaccuracy_score# 加载数据dataload_breast_cancer()Xdata.data ydata.target# 划分数据X_train,X_test,y_train,y_testtrain_test_split(X,y,test_size0.2,random_state42)# 第一层基础模型base_models[(rf,RandomForestClassifier(n_estimators100,random_state42)),(gbdt,GradientBoostingClassifier(random_state42)),(svc,SVC(probabilityTrue,random_state42))]# 第二层元模型meta_modelLogisticRegression(max_iter1000)# Stacking 模型modelStackingClassifier(estimatorsbase_models,final_estimatormeta_model,cv5)# 训练model.fit(X_train,y_train)# 预测y_predmodel.predict(X_test)# 评估accaccuracy_score(y_test,y_pred)print(Accuracy:,acc)3.3.4 Stacking 的优缺点优点可以融合不同类型模型的优势通常效果较好模型组合非常灵活适合竞赛和复杂业务场景能够充分利用多个模型的预测信息。缺点实现复杂度较高训练成本较大容易产生数据泄漏解释性较差模型部署复杂度较高。3.4 Voting最简单的集成方式除了 Bagging、Boosting、StackingVoting 也是一种常见的集成方法。Voting 的思想非常简单即同时训练多个模型然后通过投票或概率平均得到最终结果。Voting 主要分为两种Hard Voting 和 Soft Voting。3.4.1 Hard VotingHard Voting 指的是多数投票。例如三个模型分别预测模型1类别 A 模型2类别 B 模型3类别 A最终类别为 A。3.4.2 Soft VotingSoft Voting 指的是概率平均。例如三个模型预测某个样本属于正类的概率分别为模型10.8 模型20.7 模型30.6最终正类概率为(0.8 0.7 0.6) / 3 0.7如果阈值为 0.5则最终预测为正类。Soft Voting 通常比 Hard Voting 更稳定因为它利用了模型输出的概率信息。3.4.3 使用 scikit-learn 实现 Votingfromsklearn.datasetsimportload_breast_cancerfromsklearn.model_selectionimporttrain_test_splitfromsklearn.ensembleimportVotingClassifier,RandomForestClassifierfromsklearn.linear_modelimportLogisticRegressionfromsklearn.svmimportSVCfromsklearn.metricsimportaccuracy_score# 加载数据dataload_breast_cancer()Xdata.data ydata.target# 划分数据X_train,X_test,y_train,y_testtrain_test_split(X,y,test_size0.2,random_state42)# 定义多个模型clf1LogisticRegression(max_iter1000)clf2RandomForestClassifier(n_estimators100,random_state42)clf3SVC(probabilityTrue,random_state42)# Soft VotingmodelVotingClassifier(estimators[(lr,clf1),(rf,clf2),(svc,clf3)],votingsoft)# 训练model.fit(X_train,y_train)# 预测y_predmodel.predict(X_test)# 评估accaccuracy_score(y_test,y_pred)print(Accuracy:,acc)3.5 Bagging、Boosting、Stacking 对比对比项BaggingBoostingStacking训练方式并行串行分层代表算法随机森林AdaBoost、GBDT、XGBoost、LightGBMStackingClassifier主要目标降低方差降低偏差融合多模型优势基学习器关系相互独立前后依赖第一层输出给第二层对噪声敏感度较低较高取决于模型设计并行能力强较弱中等过拟合风险较低中等到较高中等到较高实现复杂度中等中等到较高较高典型应用随机森林XGBoost、LightGBM、CatBoost比赛模型融合4 集成学习中的常见参数4.1 n_estimators表示基学习器数量。在随机森林、AdaBoost、GBDT、XGBoost、LightGBM 中都很常见。一般来说n_estimators太小模型能力不足n_estimators太大训练成本增加对于 Boosting过大还可能导致过拟合。4.2 learning_rate主要出现在 Boosting 算法中。它控制每个弱学习器对最终结果的贡献大小。一般来说learning_rate较小模型学习更慢但可能泛化更好learning_rate较大模型学习更快但可能过拟合通常需要和n_estimators一起调节。4.3 max_depth表示树模型的最大深度。深度越大模型越复杂深度越小模型越简单深度过大容易过拟合深度过小容易欠拟合。在随机森林中单棵树可以适当深一些。在 Boosting 中通常使用较浅的树。4.4 subsample表示每轮训练使用的样本比例如subsample 0.8表示每轮只使用 80% 的训练样本。它可以增加随机性降低过拟合风险。4.5 colsample_bytree常见于 XGBoost 和 LightGBM表示每棵树使用的特征比例。例如colsample_bytree 0.8表示每棵树只使用 80% 的特征。这样可以增加模型差异性提高泛化能力。5 关于集成学习在实际应用时的一些建议5.1 一些情景下的应用建议数据量较小时可以优先考虑随机森林AdaBoostGBDT简单 Voting简单 Stacking。数据量较小时过于复杂的集成模型容易过拟合。数据量较大时可以优先考虑LightGBMXGBoostCatBoost随机森林。其中 LightGBM 在大规模数据上训练速度较快。类别特征较多时可以优先考虑CatBoostLightGBM经过编码后的 XGBoost。CatBoost 对类别特征支持较好通常可以减少人工特征编码成本。5.2 集成学习的注意事项1. 不要盲目堆模型集成学习不是模型越多越好。如果多个模型高度相似增加模型数量并不会带来明显提升反而会增加训练和部署成本。2. 注意数据泄漏在 Stacking 中尤其要注意数据泄漏问题。先用整个训练集训练基础模型再用基础模型对训练集预测最后训练元模型的做法会导致元模型看到过于乐观的预测结果。正确做法是使用 K 折交叉验证生成 out-of-fold 预测结果。3. 注意训练成本集成学习通常比单模型更耗费计算资源尤其是模型数量很多、数据量很大、特征维度很高、使用多层 Stacking 或复杂调参策略等情况下。在实际项目中需要平衡模型效果和工程成本。4. 注意模型解释性集成模型通常比单模型更难解释。如果业务场景对解释性要求很高例如金融风控、医疗诊断等需要结合特征重要性SHAPLIMEPDP业务规则分析。5.3 面试常见问题5.3.1 Bagging 和 Boosting 有什么区别Bagging 是并行训练多个模型主要用于降低方差Boosting 是串行训练多个模型后一个模型关注前一个模型的错误主要用于降低偏差。5.3.2 随机森林为什么不容易过拟合随机森林通过样本随机和特征随机训练多棵决策树然后对结果进行投票或平均。单棵树可能过拟合但多棵树的平均结果可以降低方差因此整体更稳定。5.3.3 XGBoost 为什么效果好XGBoost 在 GBDT 基础上进行了多方面优化包括正则化、二阶梯度信息、列采样、缺失值处理、并行计算等因此在很多结构化数据任务上表现优秀。5.3.4 Stacking 为什么容易数据泄漏如果基础模型先在整个训练集上训练再对同一训练集预测并将这些预测结果用于训练元模型那么元模型实际上使用了“被基础模型见过的数据”预测结果会过于乐观导致数据泄漏。5.3.5 集成学习一定比单模型好吗不一定。集成学习通常能提升模型稳定性和预测精度但前提是基学习器要有一定准确性并且模型之间要有差异性。如果多个模型都很差或者模型之间高度相似集成效果可能并不好。6 完整示例对比多个集成模型效果下面使用乳腺癌数据集对比随机森林、AdaBoost、GBDT 和 Stacking 的效果。fromsklearn.datasetsimportload_breast_cancerfromsklearn.model_selectionimporttrain_test_splitfromsklearn.metricsimportaccuracy_scorefromsklearn.ensembleimport(RandomForestClassifier,AdaBoostClassifier,GradientBoostingClassifier,StackingClassifier)fromsklearn.treeimportDecisionTreeClassifierfromsklearn.linear_modelimportLogisticRegressionfromsklearn.svmimportSVC# 1. 加载数据dataload_breast_cancer()Xdata.data ydata.target# 2. 划分训练集和测试集X_train,X_test,y_train,y_testtrain_test_split(X,y,test_size0.2,random_state42)# 3. 定义模型models{RandomForest:RandomForestClassifier(n_estimators100,random_state42),AdaBoost:AdaBoostClassifier(estimatorDecisionTreeClassifier(max_depth1),n_estimators100,learning_rate0.5,random_state42),GBDT:GradientBoostingClassifier(n_estimators100,learning_rate0.1,max_depth3,random_state42)}# 4. 定义 Stacking 模型base_models[(rf,RandomForestClassifier(n_estimators100,random_state42)),(gbdt,GradientBoostingClassifier(random_state42)),(svc,SVC(probabilityTrue,random_state42))]stacking_modelStackingClassifier(estimatorsbase_models,final_estimatorLogisticRegression(max_iter1000),cv5)models[Stacking]stacking_model# 5. 训练并评估forname,modelinmodels.items():model.fit(X_train,y_train)y_predmodel.predict(X_test)accaccuracy_score(y_test,y_pred)print(f{name}:{acc:.4f})输出结果可能类似RandomForest: 0.9649 AdaBoost: 0.9737 GBDT: 0.9561 Stacking: 0.9825注意具体结果可能会因为 scikit-learn 版本、随机种子、数据划分方式不同而略有差异。7 总结集成学习是机器学习中非常重要的一类方法它通过组合多个模型来提升整体预测能力。本文主要介绍了以下内容Ensemble Learning 的基本概念集成学习为什么有效Bagging 的原理和随机森林Boosting 的原理和 AdaBoost、GBDTXGBoost、LightGBM、CatBoost 的基本特点Stacking 的原理和实现Voting 的简单融合方式集成学习的参数、应用场景和注意事项使用 scikit-learn 完成集成学习实战。简单总结Bagging多个模型并行训练降低方差代表算法是随机森林。 Boosting多个模型串行训练降低偏差代表算法是 AdaBoost、GBDT、XGBoost、LightGBM。 Stacking多层模型融合利用不同模型的优势常用于竞赛和复杂业务场景。 Voting最简单的模型融合方法适合快速构建 baseline。在实际项目中集成学习是一种非常强大的建模工具。尤其是在结构化数据任务中随机森林、XGBoost、LightGBM、CatBoost 往往可以作为非常重要的 baseline 模型。集成学习在实际业务中应用非常广泛尤其适合结构化数据任务。常见应用包括信用评分风控建模欺诈检测用户流失预测推荐系统广告点击率预测医疗风险预测房价预测销售额预测金融量化建模Kaggle、天池等机器学习竞赛。在表格型数据任务中XGBoost、LightGBM、CatBoost 经常是非常强的 baseline。不过集成学习并不是万能的。使用时需要综合考虑模型效果训练成本推理速度可解释性数据泄漏风险部署复杂度。合理使用集成学习往往能够显著提升机器学习模型的表现。