kaggle的比赛真的靠ensemble吗?

针对kaggle某火热问题的点评

首先这个问题下所有人谈论kaggle的时候都不区分讨论tabular比赛和cvnlp 这种nn类比赛,我觉得nn类比赛确实连简单的seed average都可以得到不错的分数提升,但是在tabular比赛里,xgb和lgb是非常强大稳定的模型,ensemble的提升在我看来其实是非常有限的。


下面通过罗列近一年的kaggle的tabular比赛的冠军solution来看看冠军们就近靠什么赢的比赛的

从我参加的第一场比赛开始

比赛: Sberbank Russian Housing Market 房价预测

第一名solution: 1st place solution | Kaggle 领先第二名比第二名领先top10%还多

获胜关键 :对房地产业务理解:将预测目标转化成房子均价;分类预测投资房和自住房以适应经济形势的变化;用相对稳定自住房模型作为cv验证特征有效性;确定房子的涨跌和宏观经济无法关联(滑稽);通过cv误差分析找到地理信息错误并修正,几何清理等等。

模型数:“ensemble from several models from our individual solutions”

点评:这是我第一次参加kaggle比赛,在开源模型的基础上,我通过天天逛知乎和水木得到房地产知识也想到了冠军的前两点,只改了几行代码,就进了前二十,所以我认为这题跟stacking基本没关系,主要是房产知识理解,冠军ensemble也只是合并两名队员的结果和分类预测模型而已。所以后面我做比赛基本都是走业务理解路线。


比赛:Mercedes-Benz Greener Manufacturing | Kaggle 小样本匿名数据赛

第一名solution :1st place solution | Kaggle

获胜关键 :通过反复的线下验证获取能够最大限度提升的匿名数据组合

模型数: 901

点评:stacking在匿名数据赛里很关键!但还是想说stacking的收益不如运气好蒙对几个异常值,小样本数据机器学习提升很有限。另外这个比赛有4000+4000的数据还是摸奖游戏,鄙视一下某池却经常举办几百个数据还开放几天b榜的比赛。


比赛:Instacart Market Basket Analysis 类ctr

第一名未开源

第二名solution:2nd Place Solution | Kaggle

模型数: 3个模型简单平均

获胜关键 :特征工程

点评:特征工程来源于业务理解,ONODERA 本人受采访时也说当时工作就是做这个方向的

第三名solution:3rd-Place Solution Overview | Kaggle

模型数:8个对category encoding的nn+2平均

获胜关键 :baseline优势

点评:sjv在没有特征工程的情况下靠nn取得了仅次于两位业务高手的成绩,对我的震撼很大,从这开始,可以看到baseline的重要性远大于特征工程。


比赛:Web Traffic Time Series Forecasting 时序(而且是真真切切的未来数据)

第一名solution:1st place solution | Kaggle

获胜关键 :baseline优势 第一名领先第二名等于第二名领先银牌第一名、

模型数:3个nn简单平均

点评:在那之前很多书和知乎回答都说rnn之类预测周期性数据,而这个学习神经网络不到半年的选手就用rnn击败一切,可以说非常牛逼了。这个比赛前kaggle已经很久没时序比赛了,kernel里没有强大的baseline,所以每位选手都是用自己的baseline,名次的关键就是baseline的好坏。


比赛:Porto Seguro’s Safe Driver Prediction 匿名数据赛

第一名solution: 1st place with representation learning

获胜关键:baseline优势,单模型也能拿第二名

模型数:blend of 6 models. 1x lightgbm, 5x nn

点评:在匿名数据赛里,看来DAE比特征工程更加牛逼了,虽然这个匿名数据比赛剩下其他金牌都是堆叠大量模型,但是这一位大佬就让这个比赛变的非常有价值有意义!


比赛:kaggle.com/c/zillow-pri 房价预测

由于比赛有两轮,无开源


比赛: Corporación Favorita Grocery Sales Forecasting 时序

第一名solution: kaggle.com/c/favorita-g

模型数:四个模型线性融合(单模型也是第一)

获胜关键 :特征工程

点评:第一名的代码写的很漂亮,虽然那些特征工程可能大家都做的出来,却合理的控制category特征的粒度以非常简单的特征遥遥领先第一名,虽然public和private存在bias,但都在金牌区。这也是第一次看到公布单模型成绩的方案。


比赛:Recruit Restaurant Visitor Forecasting 时序

第一名solution:1st Place LGB Model(public:0.470, private:0.502)

模型数:4选手单模型简单平均 (单模型也是第一)

获胜关键 :模型+“黄金周”

点评:所有想把上个时序比赛的“套路”应用到这个比赛的都失败了,以上三个比赛虽然都是时序比赛,却分别被rnn和lgb分别占领,两个lgb获胜的比赛构造数据的方式也截然不同,如果没有具体业务具体分析的能力,只靠上来把以前比赛的套路怼上去的,只能吃瘪了。

另外我作为黄金周trick的贡献者(起码300个队伍可以靠这个trick拿金牌),也是通过搜索查阅日本假期的资料和EDA发现日本假期和旅馆流量的关系的。


比赛:Mercari Price Suggestion Challenge 插一个NLP题

第一名solution:Mercari Golf: 0.3875 CV in 75 LOC, 1900 s

模型数:1(4cpu只运行1900s)

获胜关键:模型

点评:这是一个限制时间的kernel赛,不得不说工程能力高的选手在这类限制时间的比赛上水平更高,而且baseline胜人一筹。


比赛:TalkingData AdTracking Fraud Detection Challenge ctr

第一名solution :1st place solution | Kaggle

模型数: 7lgb和1nn rank-based weighted averaging

获胜关键:重采样,对category的encoding技术

点评:这个比赛有1.9亿个样本,基本断了融合的念想;虽然重采样大家在书上都看过,但是可是实际会运用的却没几个;各式各样的高维category特征的encoding技术,nn embedding,lda等等是取胜的关键。


比赛: Avito Demand Prediction Challenge tabular+nlp+cv

第一名solution :"Dance with Ensemble" Sharing Thread

模型数:没说总数,其中一名队员就有二十五个模型,但同时也说了他们单NN模型也在前十

获胜关键:NN模型架构,有效整合了表、图片、文本

点评:这是最近几年来为数不多同时有表、图片、文本且对提升成绩都有明显效果的比赛,冠军开源的整合三类数据框架,以及如何快速高效的用迁移模型处理图片、文本对实际业务肯定有借鉴意义。


比赛:Santander Value Prediction Challenge 小数据匿名

第一名solution: Winner #1 Position Mini Writeup

模型数: 113

获胜关键:leak处理,通过local cv获取最好的特征

点评:只有匿名数据赛是堆叠模型的天下,这也是很多老GM的自留地,17年以前这种小规模数据还匿名的比赛还特别多,可参加我的另一文章:有关anonymized data的竞赛 ,可能是这些比赛给人带来kaggle要靠stacking的印象,在我看来,在实际业务不匿名的情况下,匿名化再拿到外面找方案,最后肯定毫无意义。


比赛:Home Credit Default Risk

第一名solution: 1st Place Solution | Kaggle

模型数:90+

获胜关键:特征工程+组更多队友(滑稽)

点评:虽然这个比赛看起来大部分队伍都大量使用ensemble,但主要是这次比赛的数据表非常,必须团队合作才能挖掘出数据的内容。像我自己所在的队(第八名),我们队长将所有人特征工程整合到单lgb模型的成绩要比使用ensemble我们各自的prediction还要高,所以在这里ensemble是用于将一个互不认识的大团队成员短期快速整合的方式,但并不能显著提分,但是名次靠后总会一看到方案不实践就理所当然以为ensemble能上分。


小结:

我个人观点,除了匿名数据赛外,一个比赛获胜的重要性 是 好的baseline》业务理解(特征工程+数据清理等等)》模型融合,xgb/lgb作为tabular比赛强大而稳定的模型,想像nn那样多跑几个多样性上分,可能收益还不如细微的抖动。ensemble主要用于将一个互不认识的大团队成员短期快速整合的手段,事实上上面很多队伍还只是简单线性叠加而已,也不会比ensemble差。

16年及以前,kaggle几MB甚至几百kb的小数据匿名赛比例较大,有靠这个刷到GM的,所以那时候给人一种kaggle要靠大量模型堆叠的感觉。

编辑于 2018-12-09

文章被以下专栏收录