stacking的理解

转载地址:
https://www.cnblogs.com/Christina-Notebook/p/10063146.html

其实本质上stacking就是用下一个模型去针对上一个模型预测的结果进行学习, 注意这里训练的输入是上一个模型的预测结果, 换句话说, 就是我下一个模型学习的目标是找到上一个模型预测结果和真实结果之间的模式, 通过学习这种模式可以优化最终的结果.

具体流程:
1、首先我们会得到两组数据:训练集和测试集。将训练集分成5份:train1,train2,train3,train4,train5。
2、选定基模型。这里假定我们选择了xgboost, lightgbm 和 randomforest 这三种作为基模型。比如xgboost模型部分:依次用train1,train2,train3,train4,train5作为验证集,其余4份作为训练集,进行5折交叉验证进行模型训练;再在测试集上进行预测。这样会得到在训练集上由xgboost模型训练出来的5份predictions,和在测试集上的1份预测值B1。将这五份纵向重叠合并起来得到A1。lightgbm和randomforest模型部分同理。
3、三个基模型训练完毕后,将三个模型在训练集上的预测值作为分别作为3个"特征"A1,A2,A3,使用LR模型进行训练,建立LR模型。
4、使用训练好的LR模型,在三个基模型之前在测试集上的预测值所构建的三个"特征"的值(B1,B2,B3)上,进行预测,得出最终的预测类别或概率。
做stacking,首先需要安装mlxtend库。安装方法:进入Anaconda Prompt,输入命令 pip install mlxtend 即可。

猜你喜欢

转载自blog.csdn.net/haoshan4783/article/details/88930095
今日推荐