搜狗用户画像-经验分享之stacking与blending(转)
2017-12-26 11:17
274 查看
具体地址如下:
http://prozhuchen.com/2016/12/28/CCF%E5%A4%A7%E8%B5%9B%E6%90%9C%E7%8B%97%E7%94%A8%E6%88%B7%E7%94%BB%E5%83%8F%E6%80%BB%E7%BB%93/
主要借鉴一下stacking的理解思路,网上很多解释把stacking和blending搞混淆了。
首先,我们从stacking模型的训练开始阐述。在上图中我们可以看到,该模型的第一层有五个分类模型,第二层有一个分类模型。在第一层中,对于不同的分类模型,我们分别将训练数据分为 5 份,接下来迭代5次。每次迭代时,将 4 份数据作为训练集对每个分类模型进行训练,然后剩下一份数据在训练好的分类模型上进行预测并且保留结果。当5次迭代都完成以后,我们就获得了一个结果矩阵。该矩阵是一个N 1的矩阵,N是训练集的样本数。当5个模型都进行完上述操作后,我们就可以得到一个N 5的结果矩阵。然后将该矩阵导入到第二层的模型6中进行训练,此时全部模型训练完毕。接下来是stacking模型的预测过程。
接下来我们开始阐述该模型的预测过程。在第一层中,对于不同分类模型,我们还是使用在训练时分成的5份训练数据进行五次迭代。每次迭代时,我们利用训练后的分类模型对预测集进行预测并保留下来。当5次迭代都完成以后,我们可以得到一个M 5的矩阵,M是预测集的样本数。 我们将这个矩阵按列取平均,缩减成M 1的矩阵。当5个模型都进行完上述操作后,我们就可以得到一个N*5的结果矩阵。然后将该矩阵导入到第二层中训练好的模型6进行预测,就可以得到最终的预测结果。
Blending的优点在于:
1.比stacking简单(因为不用进行k次的交叉验证来获得stacker feature)
2.避开了一个信息泄露问题:generlizers和stacker使用了不一样的数据集
3.在团队建模过程中,不需要给队友分享自己的随机种子
而缺点在于:
1.使用了很少的数据
2.blender可能会过拟合(其实大概率是第一点导致的)
3.stacking使用多次的CV会比较稳健
python数据挖掘包集合总结:
基础包:numpy,scipy
大神级数据挖掘包:sklearn
数据读取与探索:pandas
数据不均衡:imbalanced-learn
分词包:jieba
大神级nlp包:gensim(word2vec和LDA),NLTK
深度学习包:TensorFlow,Keras
集成学习包:heamy
调参包:hyperopt
http://prozhuchen.com/2016/12/28/CCF%E5%A4%A7%E8%B5%9B%E6%90%9C%E7%8B%97%E7%94%A8%E6%88%B7%E7%94%BB%E5%83%8F%E6%80%BB%E7%BB%93/
主要借鉴一下stacking的理解思路,网上很多解释把stacking和blending搞混淆了。
stacking
经典Stacking模型是指将多种分类器组合在一起来取得更好表现的一种集成学习模型。一般情况下,Stacking模型分为两层。第一层中我们训练多个不同的模型,然后再以第一层训练的各个模型的输出作为输入来训练第二层的模型,以得到一个最终的输出。为了更加详细的阐述stacking模型的训练和预测过程,我们用下面的图作为示例。首先,我们从stacking模型的训练开始阐述。在上图中我们可以看到,该模型的第一层有五个分类模型,第二层有一个分类模型。在第一层中,对于不同的分类模型,我们分别将训练数据分为 5 份,接下来迭代5次。每次迭代时,将 4 份数据作为训练集对每个分类模型进行训练,然后剩下一份数据在训练好的分类模型上进行预测并且保留结果。当5次迭代都完成以后,我们就获得了一个结果矩阵。该矩阵是一个N 1的矩阵,N是训练集的样本数。当5个模型都进行完上述操作后,我们就可以得到一个N 5的结果矩阵。然后将该矩阵导入到第二层的模型6中进行训练,此时全部模型训练完毕。接下来是stacking模型的预测过程。
接下来我们开始阐述该模型的预测过程。在第一层中,对于不同分类模型,我们还是使用在训练时分成的5份训练数据进行五次迭代。每次迭代时,我们利用训练后的分类模型对预测集进行预测并保留下来。当5次迭代都完成以后,我们可以得到一个M 5的矩阵,M是预测集的样本数。 我们将这个矩阵按列取平均,缩减成M 1的矩阵。当5个模型都进行完上述操作后,我们就可以得到一个N*5的结果矩阵。然后将该矩阵导入到第二层中训练好的模型6进行预测,就可以得到最终的预测结果。
Blending
Blending与Stacking大致相同,只是Blending的主要区别在于训练集不是通过K-Fold的CV策略来获得预测值从而生成第二阶段模型的特征,而是建立一个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会比较稳健
python数据挖掘包集合总结:
基础包:numpy,scipy
大神级数据挖掘包:sklearn
数据读取与探索:pandas
数据不均衡:imbalanced-learn
分词包:jieba
大神级nlp包:gensim(word2vec和LDA),NLTK
深度学习包:TensorFlow,Keras
集成学习包:heamy
调参包:hyperopt
相关文章推荐
- 腾讯电商设计师经验分享:百货大类页如何打动用户?
- APP用户盘活经验分享:APP如何盘活用户
- iOS开发经验分享:如何在业余时间开发出百万用户的 App?
- 一点做用户画像的人生经验:ID强打通
- 推测用户行为 程序员分享Android开发经验
- 【经验分享】卡方检验实战--检验次日留存率与用户分类的独立性
- 软件公司是不是应该是用户经验分享的组织者?
- 五年SEO经验分享之用户提升关键词排名。
- 一点做用户画像的人生经验(一):ID强打通
- 推测用户行为 程序员分享Android开发经验
- 2016CCF大数据与计算智能大赛——搜狗用户画像比赛总结
- 大咖分享会 | 百度首次揭秘如何构建用户画像与移动统计
- 推测用户行为 程序员分享Android开发经验(转载)
- Facebook移动应用开发经验分享:基于用户不忘本心
- 2016CCF 大数据与计算智能大赛——搜狗用户画像(NLP)
- 如何快速全面建立自己的大数据知识体系? 大数据 ETL 用户画像 机器学习 阅读232 作者经过研发多个大数据产品,将自己形成关于大数据知识体系的干货分享出来,希望给大家能够快速建立起大数据
- 用户体验真是个纠结活,分享点经验了
- 用户研究经验分享
- APP促活经验分享,APP怎样激活用户