最近老肥在做厦门赛的题目,突然间有多名选手得分暴涨,我个人认为这其中要么是找到了极佳的上分点,要么就是挖掘到了赛题数据当中的leak, 于是我也开始挖掘本题可能存在的泄露
。
Leak主要是和数据标签存在某种隐藏联系,于是我先找到主表的标签y_train数据表,一下就发现了很有意思的分布,正标签全部
分布在负标签之前。
这种泄露似乎有些低级,但当我们把标签merge到数据主表x_train之后发现不再存在这种现象,正标签不再时完全分布在负标签之后。
进一步对x_train数据进行观察分析,得到新一步的结论,每一个core_cust_id都存在同样的现象,而非整体数据的现象--即每一个core_cust_id中,正标签完全分布在负标签之后
。
上图cum列为以core_cust_id为键的计数累计值,每一个core_cust_id只有在其第一行数据标签为1时后面的标签才有可能为1,只有在其前二行数据标签为1时,后面的标签才有可能为1,以此类推。可以看到数据所在的位置与标签存在极强的关联性,直接把groupby之后的index当作特征可以获得极大的收益,并且在测试集存在同样的现象。
其实,很多比赛存在着leak现象,姬哀老师在文章《盘点数据挖掘竞赛中的泄露》[1]中对数据挖掘竞赛中出现的泄露进行总结,大家也可以移步阅读。
[1] https://zhuanlan.zhihu.com/p/283730120