ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

长话短说stacking集成学习算法,保证你能看得懂(2)

2019-07-22 21:08:06  阅读:451  来源: 互联网

标签:看得懂 stacking pred 模型 学习 train 长话短说 test new


第一步,进行初级学习,生成次级学习器的训练集(X_train_new,y_train)和测试集(X_test_new,y_test)

(篇幅所限,我们在此假设每个基模型都是经过参数调优处理的优良模型,具体如何进行参数优化请参见相关文献)

如上所述,次级学习器的训练集的X_train_new,X_test_new是初级学习的预测结果组合生成,而y_train与y_test并没有变化(搞清楚这一点很重要,很多文章中没有说明这一点)。我们来看一下X_train和X_test的生成过程。下图是非常著名的一张图。

该图描绘了一个基模型是如何贡献X_train_new和X_test_new数据的(要注意,它只贡献了一部分,而非全部)。

为了保证样本数据的多样性,从而提高模型的泛化能力,stacking提倡每个基模型采用KFold交叉验证的方式产生预测值。如上图,Model1经过k轮训练后,每次在验证集上的预测结果汇集成了原始X_train上的预测结果y_pred_1;在k轮训练的同时,Model1也在原始测试集X_test上生成了k个预测结果,这些结果通过均值操作融合成一个测试集上的输出y_test_1。为什么y_pred_1是汇集而成的而y_test_1是均值而成的?(大家从上图参悟吧,重点看箭头)。

好了,我们对其余的基模型model2、model3、...、modeln采取上同述同样的操作,就会得到(y_pred_2、y_test_2)、(y_pred_3、y_test_3)、...、(y_pred_n、y_test_n)。

接下来最关键的一步到了,我们要组合上述结果,生成次级学习的训练集和测试集了。看下图,生成过程不再废话

第二步,进行次级学习与预测

次级学习是在数据集(X_train_new ,y_train)进行的,此时你就可以忘记第一步操作了。这一步的操作如同简单的机器学习操作,对于机器学习算法的选择,你可以从以上基模型中先一个性能最优的,也可以选一个不在基学习器集合中的算法/模型。

总之,我们在次级机器学习训练完毕后,就可以将X_test_new代入模型,得到预测结果了。

实验证明,stacking集成学习算法确实效果要好很多,笔者进行了有限次实验,结果对比如下:(橙色为单一boosting模型)

笔者还提供了完整的代码案例,详见第三部分

标签:看得懂,stacking,pred,模型,学习,train,长话短说,test,new
来源: https://blog.csdn.net/interbigdata/article/details/96893702

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有