详解stacking过程

博客里关于stacking的讲解有许多,先分享一个我认为写的比较好的:

https://blog.csdn.net/wstcjf/article/details/77989963

但是有一些地方我觉得还是没讲清楚:

1,训练集(training data),验证集(validation data),测试集(test data)的概念。

2,下一层模型如何训练。

3,最终如何输出结果。

因此对这篇博客进行了修改,修改后的文章如下:

stacking的过程有一张图非常经典,如下:

虽然很直观,但是没有语言描述确实很难搞懂。

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

每一次的交叉验证包含两个过程,1. 基于training data训练模型;2. 基于training data训练生成的模型对validation data进行预测。在整个第一次的交叉验证完成之后我们将会得到关于当前validation data的预测值,这将会是一个2000行1列的数据,记为a1。注意!在这部分操作完成后,我们还要对数据集原来的整个test data进行预测,这个过程会生成2500个预测值,这部分预测值将会作为下一层模型test data的一部分,记为b1。因为我们进行的是5折交叉验证,所以以上提及的过程将会进行五次,最终会生成针对validation data数据预测的2000行5列的数据a1,a2,a3,a4,a5,对test data的预测会是2500行5列数据b1,b2,b3,b4,b5。

在完成对Model1的整个步骤之后,我们可以发现a1,a2,a3,a4,a5其实就是对原来整个training data的预测值,将他们拼凑起来,会形成一个10000行1列的矩阵,记为A1。而对于b1,b2,b3,b4,b5这部分数据,我们将各部分相加取平均值,得到一个2500行1列的矩阵,记为B1。

以上就是stacking中一个模型的完整流程,stacking中同一层通常包含多个模型,假设还有Model2: LR,Model3:RF,Model4: GBDT,Model5:SVM,对于这四个模型,我们可以重复以上的步骤,在整个流程结束之后,我们可以得到新的A2,A3,A4,A5,B2,B3,B4,B5矩阵。

在此之后,我们把A1,A2,A3,A4,A5并列合并得到一个10000行5列的矩阵作为training data,B1,B2,B3,B4,B5并列合并得到一个2500行5列的矩阵作为test data。让下一层的模型基于他们进一步训练。

下一层模型训练时,将10000行5列的矩阵作为模型的特征矩阵,将最原始的training data的True Labels作为模型的输出矩阵,进行模型的训练。模型训练完成后,将经过处理的2500行5列test data作为特征矩阵,利用模型输出2500行1列作为结果。

以上即为stacking的完整步骤!

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值