模型融合:stacking&blending

本文探讨了机器学习中模型融合的重要性,重点讲述了stacking和blending两种方法。stacking通过多层模型集成,特别是第一层模型的交叉验证预测值作为第二层模型的训练数据。而blending则采用不相交的数据集训练不同层模型,避免信息泄露,但可能因数据量少导致过拟合。尽管两者各有优缺点,但在实际应用中效果相近,选择取决于个人偏好。
摘要由CSDN通过智能技术生成

对于机器学习和深度学习来说,用单模型的效果往往都没有进行模型融合后的效果好。

对模型来说,我们需要选择具有多样性、准确性的模型,对于融合的方式来说也有很多种,比如最简单的取平均或者投票法就是一种。这里主要讲一下stacking和blending,二者都是用了两层的模型。

1.stacking

stacking也是一种模型融合的方法,首先,直接用所有的训练数据对第一层多个模型进行k折交叉验证,这样每个模型在训练集上都有一个预测值,然后将这些预测值做为新特征对第二层的模型进行训练。相比blending,stacking两层模型都使用了全部的训练数据。

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

stacking训练过程:

  • 1) 拆解训练集。将训练数据随机且大致均匀的拆为m份
  • 2)在拆解后的训练集上训练模型,同时在测试集上预测。利用m-1份训练数据进行训练,预测剩余一份;在此过程进行的同时,利用相同的m-1份数据训练,在真正的测试集上预测;如此重复m次,将训练集上m次结果叠加为1列,将测试集上m次结果取均值融合为1列。
  • 3)使用k个分类器重复2过程。将分别得到k列训练集的预测结果,k列测试集预测结果。
  • 4)训练3过程得到的数据。将k列训练集预测结果和训练集真实label进行训练,将k列测试集预测结果作为测试集。

上半部分是用一个基础模型进行5折交叉验证,如:用XGBoost作为基础模型Model1,5折交叉验证就是先拿出四折作为training data,另外一折作为testing data。注意:在stacking中此部分数据会用到整个traing set。如:假设我们整个training set包含10000行数据,testing set包含2500行数据,那么每一次交叉验证其实就是对training set进行划分,在每一次的交叉验证中training data将会是8000行,testing data是2000行。

每一次的交叉验证包含两个过程,1. 基于training data训练模型;2. 基于training data训练生成的模型对testing data进行预测。在整个第一次的交叉验证完成之后我们将会得到关于当前testing data的预测值,这将会是一个一维2000行的数据,记为a1。注意!

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值