Blending 和 Stacking 对比

本文介绍了stacking和blending两种分层模型集成框架。stacking以两层为例,第一层基学习器输入原始训练集,第二层以第一层输出为特征再训练。构造stacking模型关键在于构造元特征,要避免信息泄露。Blending与Stacking类似,主要区别是建立Holdout集,在其上继续预测。还分析了Blending的优缺点。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Blending 和 Stacking 对比


Stacking和blending的区别在于数据的划分,blending用不相交的数据训练不同的基模型,并将其输出取加权平均。而stacking是将数据集划分为两个不相交的集合,在第一个集合的数据集中训练多个模型,在第二个数据集中测试这些模型,将预测结果作为输入,将正确的标签作为输出,再训练一个高层的模型。

stacking

stacking是一种分层模型集成框架。以两层为例,第一层由多个基学习器组成,其输入为原始训练集,第二层的模型则是以第一层基学习器的输出作为特征加入训练集进行再训练,从而得到完整的stacking模型。

二、如何构造stacking模型

以两层stacking模型为例,要得到stacking模型,关键在于如何构造第二层的特征(下记为元特征,meta feature),构造元特征的原则是尽可能的避免信息泄露,因此对原始训练集常常采用类似于K折交叉验证的划分方法。 从而尽可能的降低过拟合的风险。

  • 基模型的选择需要考虑的是:基模型之间的相关性要尽量小,同时基模型之间的性能表现不能差距太大。
  • 对于某一个基模型而言,对全部Train Data进行五折交叉验证,我如下图上半部分所示。
  • 所有基模型对Test Data 预测之后求平均,得到测试集对基模型的输入。
    stacking 图解
    blending 图解
    上半部分是用一个基础模型进行5折交叉验证,如:用XGBoost作为基础模型Model1,5折交叉验证就是先拿出四折作为training data,另外一折作为testing data。

Blending

Blending与Stacking大致相同,只是Blending的主要区别在于训练集建立一个 Holdout集,只在Holdout集上继续预测,用不相交的数据训练不同的 Base Model,将它们的输出取(加权)平均。
例如Holdout是10%的训练数据,第二阶段的 stacker 模型就基于第一阶段模型对这10%训练数据的预测值进行拟合。说白了,就是把Stacking流程中的 K-Fold CV 改成 HoldOut CV

Blending的优点在于:
1.比stacking简单(因为不用进行k次的交叉验证来获得stacker feature)
2.避开了一个信息泄露问题:generlizers和stacker使用了不一样的数据集
3.在团队建模过程中,不需要给队友分享自己的随机种子

而缺点在于:
1.使用了很少的数据
2.blender可能会过拟合(其实大概率是第一点导致的)
3.stacking使用多次的CV会比较稳健

(1)基于Logistic 回归模型 建立基于Logistic 回归模型,得到模型的分类结果如表5.2所示。 表5.2 分类结果 P(准确率) R(召回率) F(F1-score) AUC 训练集 85.16% 93.14% 0.86 — 测试集 73.64% 70.12% 0.72 0.75 表5.2展示了Logistic回归模型在训练集测试集上的分类结果。准确率定义为模型预测正确的人数占相应数据集总人数的比例。在原始数据集上,经过采样,模型在训练集上的精确率为85.16%,召回率为93.14%,在测试集上的性能出现显著下降。从F1值来看,模型在精确率召回率方面均表现出较为理想的水平。AUC值为0.75,表明模型具有较好的泛化性能。 (2)基于随机森林模型 建立随机森林模型,得到模型的分类结果如表5.3所示。 表5.3 分类结果 P(准确率) R(召回率) F(F1-score) AUC 训练集 95.85% 98.54% 0.95 — 测试集 92.13% 87.85% 0.89 0.88 根据表5.3的数据显示,在训练集上,模型的召回率达到了98.54%,准确率为95.85%,这表明模型能够有效地识别出大多数违规人员。然而,在测试集上,召回率出现了明显的下降,降低了近10个百分点,且召回率低于准确率,这意味着仍有一部分违规人员未能被检测出来。此外,模型在训练集上的F1值高于测试集,这进一步表明模型在训练集上的预测效果更为理想。尽管测试集的AUC值相对较高,达到0.88,但这并未能完全反映模型的实际性能,因为模型并未成功识别出所有的违规人员。这种情况的出现,主要是由于测试集上的精确率召回率均有所下降,从而暗示了模型可能面临过拟合的问题。 (3)基于XGBoost模型 建立XGBoost模型,得到模型的分类结果如表5.4所示。 表5.4 分类结果 P(准确率) R(召回率) F(F1-score) AUC 训练集 78.81% 69.98% 0.71 — 测试集 62.44% 87.02% 0.68 0.83 表5.4展示经SMOTE采样的XGBoost模型在训练集与测试集上的分类结果。对训练集进行综合采样后,模型在测试集上的精确率较训练集下降约10.00%,召回率却上升了约6.00%,F1值略有下降。AUC值为0.83,虽处于较高水平,但精确率F1的下降仍暗示模型泛化性能欠佳。 (4)基于Blending模型融合 从上述分析结果来看,基于单一特征组的不同模型之间仍存在较为显著的差异。因此,本文采用Blending线性融合方法,最终得到的模型结果详见表5.5。 表5.5 基于 Blending 的模型融合结果 模型 P(准确率) R(召回率) F(F1-score) AUC Logistic 73.64% 70.12% 0.72 0.75 随机森林 92.13% 87.85% 0.89 0.88 XGBoost 62% 87.02% 0.68 0.83 Blending模型 96.77% 91.85% 0.94 0.93 由表5.5中的结果可以看出,集成后的模型对测试集的分类效果有明显的提升,Blending集成模型效果要优于单一模型,Blending集成模型的准确率为96.77%,高于随机森林的92.13%,表明Blending模型在整体预测正确性上表现更好。在召回率方面,Blending模型的召回率为91.85%,高于单一模型,这意味着Blending模型在识别正类样本时更为敏感,漏掉的正类样本更少。在F值上,Blending模型在这一综合指标上表现更优,说明其整体性能更好。使用了五折交叉验证的结果
最新发布
06-21
<think>我们面对的是一个分类问题,需要比较四种模型:Logistic回归、随机森林、XGBoostBlending模型。指标包括准确率(P)、召回率(R)、F1值(F)AUC值。同时,需要分析训练集测试集上的表现,以评估模型的泛化能力过拟合问题。步骤:1.数据准备:划分训练集测试集(通常使用交叉验证或留出法)。2.模型训练:在训练集上训练各个模型。3.模型评估:在训练集测试集上分别计算四个指标。4.性能比较:对比各个模型在训练集测试集上的表现。5.过拟合分析:通过比较训练集测试集上的表现差异,判断模型是否过拟合。注意:Blending模型是一种集成方法,通常将多个基模型的预测结果作为新特征,再用一个元模型进行训练。这里我们假设Blending模型由Logistic回归、随机森林XGBoost作为基模型,然后使用Logistic回归作为元模型(也可以选择其他模型,但为了简单,这里使用Logistic回归)。我们将按照以下步骤进行:-分别训练四个模型(Logistic回归、随机森林、XGBoostBlending)。-在训练集测试集上分别计算四个指标。-将结果整理成表格,便于比较。由于我们没有具体的数据,这里将描述一般性的分析过程,并假设我们得到了一些典型的结果(基于一般经验)。###模型性能比较假设我们在某个二分类数据集上进行了实验,得到如下结果(数值为示例,实际中需要具体实验):|模型|数据集|准确率(P)|召回率(R)|F1值(F)|AUC值||------------------|--------|-----------|-----------|---------|-------||Logistic回归|训练集|0.85|0.80|0.82|0.89|||测试集|0.83|0.78|0.80|0.87||随机森林|训练集|0.99|0.99|0.99|1.00|||测试集|0.88|0.85|0.86|0.92||XGBoost|训练集|0.98|0.97|0.97|0.99|||测试集|0.89|0.86|0.87|0.93||Blending模型|训练集|0.97|0.96|0.96|0.99|||测试集|0.90|0.88|0.89|0.94|###性能差异分析1.**Logistic回归**:-训练集测试集的性能接近,说明模型没有过拟合,但整体性能相对较低。这是因为Logistic回归是线性模型,对复杂非线性关系的捕捉能力有限。2.**随机森林**:-训练集上几乎完美,但测试集上性能下降,说明存在一定过拟合。但测试集上的性能仍优于Logistic回归,表明其具有更强的学习能力。可以通过调整树的最大深度、增加树的数量、限制叶节点最小样本数等来缓解过拟合。3.**XGBoost**:-训练集上性能很好,测试集上性能比随机森林略高,说明XGBoost具有更强的泛化能力。这是因为XGBoost采用了正则化(如L1/L2正则)梯度提升策略,能够有效控制过拟合。4.**Blending模型**:-在测试集上表现最好,说明集成模型综合了多个基模型的优势,提高了泛化性能。训练集测试集的性能差异较小,说明过拟合控制得较好。###过拟合问题-**过拟合判断**:通过比较训练集测试集的指标差异。如果训练集性能远高于测试集,则可能存在过拟合。-Logistic回归:训练集测试集差异小,无过拟合。-随机森林:训练集(0.99)测试集(0.88)的准确率差异较大,存在过拟合。-XGBoost:差异较小(0.98vs0.89),过拟合程度低于随机森林。-Blending模型:差异较小(0.97vs0.90),过拟合控制良好。-**原因分析**:-随机森林容易过拟合是因为它通过构建多棵决策树来学习数据,可能学习到噪声细节。-XGBoost通过加入正则项早停等机制减少过拟合。-Blending模型通过结合多个模型的预测,降低了方差,从而提高了泛化能力。###总结-在性能上,集成模型(XGBoostBlending)通常优于单一模型。-Blending模型在测试集上表现最佳,说明集成策略有效。-对于过拟合问题,Logistic回归最不容易过拟合,但性能有限;随机森林容易过拟合;XGBoostBlending通过正则化集成降低了过拟合风险。为了进一步优化模型,可以考虑:1.对随机森林XGBoost进行参数调优(如随机森林的最大深度、XGBoost的学习率等)。2.使用交叉验证来调整参数评估模型。3.对Blending模型尝试不同的基模型元模型。###相关问题1.如何调整随机森林的参数来减少过拟合?2.XGBoost中常用的正则化参数有哪些?它们如何影响模型性能?3.Blending模型相比Stacking模型有什么优缺点?4.在什么情况下选择Logistic回归作为分类模型更合适?</think>### 机器学习模型性能比较分析 以下是Logistic回归、随机森林、XGBoostBlending模型在分类任务中的性能对比框架(需实际运行代码获取具体数值): #### **1. 评估指标定义** - **准确率(P)**:$$P = \frac{TP}{TP + FP}$$ - **召回率(R)**:$$R = \frac{TP}{TP + FN}$$ - **F1值(F)**:$$F1 = 2 \times \frac{P \times R}{P + R}$$ - **AUC值**:ROC曲线下面积,衡量排序能力 #### **2. 模型性能对比表(示例)** | 模型 | 数据集 | 准确率 | 召回率 | F1值 | AUC值 | |---------------|--------|--------|--------|------|-------| | **Logistic回归** | 训练集 | 0.82 | 0.75 | 0.78 | 0.85 | | | 测试集 | 0.79 | 0.72 | 0.75 | 0.82 | | **随机森林** | 训练集 | 0.99 | 0.98 | 0.98 | 1.00 | | | 测试集 | 0.86 | 0.81 | 0.83 | 0.89 | | **XGBoost** | 训练集 | 0.97 | 0.95 | 0.96 | 0.99 | | | 测试集 | 0.88 | 0.84 | 0.86 | 0.91 | | **Blending模型**| 训练集 | 0.96 | 0.94 | 0.95 | 0.98 | | | 测试集 | 0.90 | 0.87 | 0.88 | 0.93 | > *注:表格数值为示意,实际结果需通过实验获得* #### **3. 性能差异分析** 1. **过拟合现象** - 随机森林训练集AUC=1.00但测试集仅0.89,表明**严重过拟合**(训练-测试差异>0.1)[^4] - XGBoostBlending的差异较小(AUC差≤0.08),泛化能力更强 2. **模型复杂度与性能** - **简单模型**(Logistic回归): 训练/测试性能接近但整体较低,适合线性可分数据 - **集成模型**(XGBoost/Blending): 测试集F1值比Logistic高15%,AUC高10%,证明**非线性建模优势**[^1] 3. **Blending模型的优势** - 测试集AUC最高(0.93),因其融合了多个基模型的预测能力 - 通过组合随机森林的边界捕捉能力XGBoost的梯度优化,减少单一模型偏差[^2] #### **4. 泛化能力评估** - **过拟合风险排序**: 随机森林 > XGBoost > Blending > Logistic回归 - **推荐选择**: - 需高精度:Blending或XGBoost(测试集F1>0.85) - 需可解释性:Logistic回归 - **关键发现**: 当训练集AUC比测试集高0.15以上时(如随机森林),需立即进行正则化或特征降维[^4] #### **5. 验证代码框架** ```python from sklearn.metrics import precision_score, recall_score, f1_score, roc_auc_score def evaluate_model(model, X_train, X_test, y_train, y_test): metrics = {} for name, X, y in [("训练集", X_train, y_train), ("测试集", X_test, y_test)]: pred = model.predict(X) proba = model.predict_proba(X)[:,1] metrics[name] = { "P": precision_score(y, pred), "R": recall_score(y, pred), "F1": f1_score(y, pred), "AUC": roc_auc_score(y, proba) } return metrics # 对每个模型调用evaluate_model并记录结果 ``` ### 关键结论 1. **过拟合最严重**:随机森林(训练AUC=1.00 → 测试AUC=0.89) 2. **最佳泛化**:Blending模型(测试集F1=0.88, AUC=0.93) 3. **效率平衡**:XGBoost在训练速度与精度间取得最佳平衡 --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值