Kaggle机器学习之模型融合(stacking)心得

更新于 2017年10月11日 机器学习
我来说两句
wx:吉他手   网页版 2017-10-11 00:26
入门 算法 应用 资源 Kaggle Python 崔立明 集成学习 课程 推荐系统 章凌豪
「开发 | Kaggle机器学习之模型融合(stacking)心得」AI科技评论按,本文作者吉他手,AI科技评论获其授权发布。此文道出了本人学习Stacking入门级应用的心路历程。在学习过程中感谢@贝尔塔的模型融合方法(https://zhuanlan.zhihu.com/p/25836678),以及如何在 Kaggle 首战中进入前 10%这篇文章(https://dnc1994.com/2016/04/rank-10-percent-in-first-kaggle-competition/,作者是章凌豪)。对于两位提供的信息,感激不尽。同时还有Kaggle上一些关于ensemble的文章和代码,比如这篇(https://www.kaggle.com/arthurtok/introduction-to-ensembling-stacking-in-python)。本文适用于被stacking折磨的死去活来的新手,在网上为数不多的stacking内容里,我已经假设你早已经看过了上述所提到的那几篇有用的文章了。但是,看完之后内心还是卧槽的。我希望下面的内容能成为,你在学习stacking的曲折道路上的一个小火把,给你提供一些微弱的光亮。本文以Kaggle的Titanic(泰坦尼克预测 https://www.kaggle.com/c/titanic)入门比赛来讲解stacking的应用(两层!)。数据的行数:train.csv有890行,也就是890个人,test.csv有418行(418个人)。而数据的列数就看你保留了多少个feature了,因人而异。我自己的train保留了 7+1(1是预测列)。在网上为数不多的stacking内容里,相信你早看过了这张图:这张图,如果你能一下子就能看懂,那就OK。如果一下子看不懂,就麻烦了,在接下来的一段时间内,你就会卧槽卧槽地持续懵逼……因为这张图极具‘误导性’。(注意!我没说这图是错的,尽管它就是错的!!!但是在网上为数不多教学里有张无码图就不错啦,感恩吧,我这个小弱鸡)。我把图改了一下:对于每一轮的 5-fold,Model 1都要做满5次的训练和预测。Titanic 栗子:Train Data有890行。(请对应图中的上层部分)每1次的fold,都会生成 713行 小train, 178行 小test。我们用Model 1来训练 713行的小train,然后预测 178行 小test。预测的结果是长度为 178 的预测值。这样的动作走5次! 长度为178 的预测值 X 5 = 890 预测值,刚好和Train data长度吻合。这个890预测值是Model 1产生的,我们先存着,因为,一会让它将是第二层模型的训练来源。重点:这一步产生的预测值我们可以转成 890 X 1 (890 行,1列),记作 P1 (大写P)接着说 Test Data 有 418 行。(请对应图中的下层部分,对对对,绿绿的那些框框)每1次的fold,713行 小train训练出来的Model 1要去预测我们全部的Test Data(全部!因为Test Data没有加入5-fold,所以每次都是全部!)。此时,Model 1的预测结果是长度为418的预测值。这样的动作走5次!我们可以得到一个 5 X 418 的预测值矩阵。然后我们根据行来就平均值,最后得到一个 1 X 418 的平均预测值。重点:这一步产生的预测值我们可以转成 418 X 1 (418行,1列),记作 p1 (小写p)走到这里,你的第一层的Model 1完成了它的使命。第一层还会有其他Model的,比如Model 2,同样的走一遍, 我们有可以得到  890 X 1  (P2) 和  418 X 1 (p2) 列预测值。这样吧,假设你第一层有3个模型,这样你就会得到:来自5-fold的预测值矩阵 890 X 3,(P1,P2, P3)  和 来自Test Data预测值矩阵 418 X 3, (p1, p2, p3)。—————————————–到第二层了………………来自5-fold的预测值矩阵 890 X 3 作为你的Train Data,训练第二层的模型来自Test Data预测值矩阵 418 X 3 就是你的Test Data,用训练好的模型来预测他们吧。—————————————最后 ,放出一张Python的Code,在网上为数不多的stacking内容里, 这个几行的code你也早就看过了吧,我之前一直卡在这里,现在加上一点点注解,希望对你有帮助:—————  AI 科技评论招人啦!  —————你即将从事的工作内容:报道海内外人工智能相关学术会议,形成具有影响力的报道内容;采访高校学术青年领袖,输出人工智能领域的深度观点;跟进国内外学术热点,深入剖析学术动态;我们希望你是这样的小伙伴:英语好,有阅读英文科技网站的习惯;兴趣广,对人工智能有关注及了解;态度佳,有求知欲,善于学习;欢迎发送简历到 guoyixin@leiphone.com—————  给爱学习的你的福利  —————3个月,从无人问津到年薪30万的秘密究竟是什么?答案在这里——崔立明授课【推荐系统算法工程师-从入门到就业】3个月算法水平得到快速提升,让你的职业生涯更有竞争力!长按识别下方二维码(或阅读原文戳开链接)抵达课程详细介绍~———————————————————— via: http://mp.weixin.qq.com/s?__biz=MzI5NTIxNTg0OA==&mid=2247487594&idx=4&sn=65eb242f5c7267fe2c40e870030a6520&scene=0#wechat_redirect

 

回复