模型融合与集成策略
在机器学习竞赛和实际落地中,模型融合(Model Ensemble)往往是提升预测性能的最后一块拼图。面对医疗领域复杂多模态的数据,单一模型很难全面捕捉所有信息,而通过组合多个异质模型,我们可以综合各自优势,抵消偏差和方差,获得比任何单模型更稳定、准确的诊断结果。
集成学习的基本思想
集成学习的核心其实很简单:"三个臭皮匠,顶个诸葛亮"。通过结合多个学习器来完成学习任务,通常能获得比单一学习器更优越的泛化性能。
根据个体学习器的生成方式,主要分为两大类:
- Bagging:并行训练多个独立的基学习器,然后通过平均或投票进行结合。典型代表是随机森林。它主要用来降低方差。
- Boosting:串行训练基学习器,每个新学习器关注前一个学习器的错误,从而降低偏差。典型代表是 AdaBoost、XGBoost。
模型融合通常指将多个已经训练好的、可能异质的基模型(如逻辑回归、SVM、XGBoost 等)进行组合。融合可以在不同层面进行:数据层面(采样变换)、模型层面(不同算法/超参数)以及特征层面(不同特征子集)。
常见的模型融合方法
简单投票法(Voting)
对于分类任务,最简单的融合就是投票。每个基模型对样本预测后,统计票数,得票最多的类别胜出。
- 硬投票:直接统计类别票数,多数胜出。适用于模型性能相近且独立的情况。
- 软投票:对每个类别的预测概率进行平均(或加权平均),选择平均概率最高的类别。软投票通常优于硬投票,因为它考虑了模型的不确定性。
注意,投票法要求基模型之间相关性较低。如果所有模型都倾向于犯相同的错误,投票无法纠正。
简单平均法(Averaging)
对于回归任务,通常采用平均法。计算所有基模型预测值的算术平均或加权平均作为最终输出。权重可以根据验证集性能确定,性能好的模型赋予更高权重。
Bagging 与 Boosting 集成
- Bagging:通过对训练数据进行有放回采样,生成多个不同的训练子集,分别训练基模型,然后平均或投票。随机森林就是 Bagging 与决策树的结合,能有效防止过拟合。
- Boosting:通过串行训练,不断调整样本权重,使后续模型关注前序模型预测错误的样本。常见算法包括 AdaBoost、Gradient Boosting、XGBoost、LightGBM、CatBoost 等。Boosting 主要降低偏差,但也容易过拟合,需配合正则化。
Stacking(堆叠泛化)
Stacking 是一种层次化的融合方法,使用一个次级学习器(元学习器)来组合多个基模型的预测结果。
- 基模型训练:将训练集划分为 K 折(例如 5 折),对每个基模型进行 K 折交叉训练。用其余 K-1 折数据训练基模型,预测该折的样本(生成折叠外预测)。最终,每个基模型对训练集生成一组预测值(元特征),对测试集生成 K 个预测值取平均。
- 元特征构建:将所有基模型对训练集的预测值作为新的特征,连同真实标签,构成元训练集。
- 次级学习器训练:在元训练集上训练一个次级学习器(通常选简单的线性模型,如逻辑回归,以防止过拟合)。
- 测试集预测:用基模型对测试集生成预测值,作为元测试集特征,输入次级学习器得到最终预测。
Stacking 能有效融合不同模型的优势,但要注意避免过拟合:使用交叉验证生成元特征,次级学习器不宜过于复杂。
Blending
Blending 是 Stacking 的简化版。直接将训练集划分为两个子集:训练集和验证集。基模型在训练集上训练,然后在验证集上预测生成元特征;次级学习器在验证集的元特征上训练。Blending 比 Stacking 简单,但验证集划分可能导致数据利用率低,易过拟合。


