记我的第一次Kaggle比赛

Author: Shiyi001 && Bobbbb

众所周知,Kaggle是一个全球知名的大数据竞赛。能在Kaggle比赛中获得一个好的名次,是对一个data scientist最好的肯定。现在,我就把自己参加Kaggle的经历写下来,希望能帮到各位Kagglers。

PS 本文假设读者对 Machine Learning 的基本概念和常见模型已经有一定了解。 Enjoy Reading!

我参加的是Kaggle的Quora Question Pairs比赛,共3394支队伍参赛。最后我们队获得了135名(top 4%)的好成绩。在此,我们将自己参加比赛的具体流程和心路历程记录下来。完整代码及心得体会在PPshrimpGo/Quora-Kaggle

数据分析 && 数据预处理

在参加比赛后,我们要先对数据进行分析。由于数据量很大,光靠肉眼显然是不够的。在此,我们需要使用一些数据分析工具以及可视化工具,如pandas,matplotlib, seaborn等。

对数据做初步的分析非常有意义,比如对于分类问题中的特征按特征观察数据的分布,可以直观的看出这个特征是否有足够的“区分度”。

一个直观的可视化展示也非常有助于进行思考和挖掘数据分布上特征。

通常我们拿到是数据并不是“完美”的,会存在各种各样的情况。针对不同情况,我们需要做出不同的处理。如空值处理,就存在不同的方法。

除了数据本身存在的问题,我们为了更好地提取特征和训练模型,也需要对数据进行特殊处理(数据清洗)。例如在本次比赛中,很多队伍选择将连在一起的词拆开(What's -> What is),替换原句中的非英文单词等(印度语 -> 英语)。

数据清洗的在比赛中可能起到很关键的作用,异常值的剔除和一些空值的补足会给特征提取减弱噪声,加速模型的构建。通常数据清洗的手段有以下:

  • 补充空值
  • 剔除异常值
  • 数据的转化

具体的方法在如何在 Kaggle 首战中进入前 10%博客中有详细介绍,在此不再赘述。

特征工程

一场Kaggle比赛,最重要的就是特征工程。一个良好的特征给预测结果带来的提升是显而易见的。很多人在做特征工程时很容易没有头绪,下面我就说一说我们在这次比赛中的特征提取思路。

首先,由于Quora Question Pairs属于自然语言处理的文本相似性问题。在考虑问题的时候,我们从两方面进行思考:

1 传统文本特征
2 词向量特征

在这两个方向,我们挖掘了30+个特征,获得了大约0.30的Public LB Score。

在这一部分工作做完之后,我们接下来做了另外两部分工作。

1 研究最新的关于文本相似性的论文,从论文中获取灵感。并且,我们将论文中的一些算法实现,并将其加入我们的特征。
2 查看Kaggle上面的Kernel和discussion。Kaggle是一个非常活跃和乐于分享的社区,很多人都愿意把自己的思路放上来供大家参考。

从这两部分工作中,我们又获得了许多特征,包括了两个一度被认为是leaky的magic feature(这两个特征帮我们提升了接近0.1)。加上以上特征,我们的Public LB Score来到了0.15左右。

在这一部分,建议大家挖掘特征方向可以思维开阔一些,有时候顺着别人的思路,会走的比较深,比如本次比赛的magic feature从基于图的角度出发,挖掘到了特征,赛后看到top n的经验分享,很多人在此基础上,挖掘了更多基于图的特征,取得了不错的效果。

还有一个就是特征间的多项式组合,比如两个句子的长度,可以求他们的差值,也可以求他们的和等等。还有不同特征间的相互组合,常常会起较为出色的效果。

模型融合

在之前的特征工程中,我们一直是使用的xgboost作为单模型跑。融合阶段,我们决定使用stacking方法。

Stacking
相比 Blending,Stacking 能更好地利用训练数据。以 5-Fold Stacking 为例,它的基本原理如图所示:

Stacking

整个过程很像 Cross Validation。首先将训练数据分为 5 份,接下来一共 5 个迭代,每次迭代时,将 4 份数据作为 Training Set 对每个 Base Model 进行训练,然后在剩下一份 Hold-out Set 上进行预测。同时也要将其在测试数据上的预测保存下来。这样,每个 Base Model 在每次迭代时会对训练数据的其中 1 份做出预测,对测试数据的全部做出预测。5 个迭代都完成以后我们就获得了一个 #训练数据行数 x #Base Model 数量 的矩阵,这个矩阵接下来就作为第二层的 Model 的训练数据。当第二层的 Model 训练完以后,将之前保存的 Base Model 对测试数据的预测(因为每个 Base Model 被训练了 5 次,对测试数据的全体做了 5 次预测,所以对这 5 次求一个平均值,从而得到一个形状与第二层训练数据相同的矩阵)拿出来让它进行预测,就得到最后的输出。

Base Model 选择如下:

  • xgboost(0.14),
  • LoesticRegression(0.19),
  • RandomForestClassifier(0.19),
  • GradientBoostingClassifier(0.19),
  • MLPClassifier(0.20)
  • LSTM(0.20)

经过5折stacking,我们发现效果居然还不如单模型xgboost。What a sad story!
经过一番思考,我们认为由于不同的模型使用了相同的特征做分类,模型的diversity不足,于是在最后一天,采取了对每个fold随机采样百分之70的特征进行stacking,此番操作减小了base model的水平,所以最后结果并没有太大提升。

最后由于时间不足,我们最后选择0.5Xgboost + 0.5LSTM草草了事。

赛后总结

  • 1 因尽早进行特征管理,后期有些特征并不能起到作用甚至会有反作用。可以单独拿出这部分特征去做一些事情,特征间的多项式组合没有考虑。
  • 2 不要一头扎进单模型,尽早对其他模型进行调参,后期时间很可能不够
  • 3 及早进行stacking,可以提前发现问题并解决。
  • 4 建立自己的PipeLine。
  • 5 对DL的方法应该早早考虑和实验。

引用参考

如何在 Kaggle 首战中进入前 10%
在此特别感谢引用博客作者dnc11994学长和小松stuart大叔在比赛期间的问题解答。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 159,835评论 4 364
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,598评论 1 295
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 109,569评论 0 244
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 44,159评论 0 213
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,533评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,710评论 1 222
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,923评论 2 313
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,674评论 0 203
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,421评论 1 246
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,622评论 2 245
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,115评论 1 260
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,428评论 2 254
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,114评论 3 238
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,097评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,875评论 0 197
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,753评论 2 276
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,649评论 2 271

推荐阅读更多精彩内容