融合 vs 堆叠

17 Mar 2025 | 4 分钟阅读

引言

堆叠(Stacking)和融合(Blending)是机器学习中两种强大且流行的集成方法。它们非常相似,区别在于训练数据的分配方式。它们因在Kaggle竞赛中广受欢迎和表现出色而最受关注。

堆叠

堆叠(或堆叠泛化)由Wolpert引入。本质上,堆叠通过使用从一组基础模型训练的元模型进行预测。基础模型使用训练数据进行训练并给出预测;然后训练一个不同的元模型,使用基础模型的输出给出最终预测。

Blending vs Stacking

堆叠的工作原理

  1. 您有训练数据和测试数据。假设我们使用4折交叉验证来训练基础模型;训练数据因此被分成4部分。
  2. 使用这4部分训练数据,第一个基础模型(假设是决策树)在3部分上拟合,并对第4部分进行预测。训练数据的每一部分都重复此操作。
  3. 模型1(决策树)拟合到所有训练数据。训练好的模型将用于预测测试数据。
  4. 步骤2到3对第二个模型(例如KNN)和第三个模型(例如SVM)重复。这些将为训练数据和测试数据提供来自预测的另外两个特征,pred_m2和pred_m3。
  5. 为了训练元模型(假设是逻辑回归),我们只使用从基础模型新添加的特征,即[pred_m1, pred_m2, pred_m3]。在训练数据上拟合这个元模型。
  6. 测试数据的最终预测由训练好的元模型给出。

示例 (Python)

输出

Accuracy of the stacked model: 0.88

Blending vs Stacking

融合

融合与堆叠非常相似。它也使用基础模型提供基础预测作为新特征,并且在这些新特征上训练一个新的元模型来给出最终预测。唯一的区别是元模型的训练是在一个单独的保留集(例如10%的训练数据)上进行的,而不是在完整和折叠的训练集上。

Blending vs Stacking

融合的工作原理

  1. 训练集被分成训练集和验证集。
  2. 我们在训练集上训练基础模型。
  3. 我们只在验证集和测试集上进行预测。
  4. 验证预测用作构建新模型的特征。
  5. 该模型使用预测值作为特征,对测试集进行最终预测。

示例 (Python)

输出

Accuracy of the blended model: 0.885

Blending vs Stacking

优点和缺点

堆叠

优点

  1. 性能:堆叠通常比任何单一基础模型表现更好。
  2. 多样性:它可以结合不同的模型,使其对各种数据集具有灵活性。

缺点

  1. 复杂性:堆叠为您的模型增加了一层复杂性。
  2. 计算成本高:它需要训练多个模型,这可能导致计算成本高昂。

融合

优点

  1. 简单性:融合比堆叠更简单,因为它避免了交叉验证的需要。
  2. 更少的数据泄露:与堆叠相比,数据泄露的可能性更小。

缺点

  1. 数据利用:与堆叠不同,融合使用一个保留集,这可能导致数据利用不足。
  2. 性能:当基础模型数量很大时,它的表现可能不如堆叠。

何时使用堆叠或融合

堆叠和融合之间的选择取决于具体问题和计算资源。如果计算资源和时间不是问题,通常优先选择堆叠以获得更好的性能。然而,当您有许多基础模型或担心信息泄露时,融合可能是一个更理想的选择。

堆叠的变体

堆叠有多种版本,包括加权堆叠,其中基础模型的预测根据其性能进行加权。另一个变体是带有特征选择的堆叠,其中一部分基础模型预测用作元模型的特征。

融合的变体

融合也可以通过改变保留集的大小,或为不同的基础模型使用不同的保留集来变化。这有助于减少过拟合并提高融合模型的整体性能。

结论

堆叠和融合都是有效的集成策略,可以提高机器学习模型的性能。它们通过组合多个基础模型的预测来做出最终预测。堆叠和融合之间的选择取决于您的系统学习问题的具体要求和可用资源。


下一个主题布隆过滤器