Kaggle竞赛总结

本篇单独开出来,主要将对自己做过的一些个人项目近些一些总结,希望能在反思中不断进步。
所以,本文也会持续的更新。。。。。。

Home Credit Deafult Risk

Private Leaderboard 77/7198
本项目来自Kaggle竞赛,其实蛮早就关注平台了,但是原来自己水平及装备有所不及,所以多是看看。

本项目可以算得上是对我来说第一个真正意义上的竞赛。从一开始发布便跟上大神们的更新脚步,因有希望能够保持在前列,使我有了更多的动力参与,为此,甚至提前购置了MBP。

说实在的,在之前,对分类、回归及各种模型,多是有一些了解,那时对特征工程虽然也有听闻,但是具体应该怎么深入操作,其实是有一点迷糊的。经过比赛的洗礼,从数据的准备,特征处理,模型训练,结果评估,循环迭代,都有了一些操作能力。能够在一些工程的角度来考虑一些问题了。

Kaggle的分享精神真是让我学到蛮多的,将来我也会回馈社区的。

紧跟大神的脚步就能飞快的成长。

当然具体做的时候还是需要有一些想法,让代码和数据来验证想法,如何快速实现这样的迭代其实就是实现能力来,非常重要。

整个比赛历时3个月,由于那段时间手上没有什么工作,基本都在做这件事。具体到一些特征的处理其实跟业务的相关性比较高了,如果不是在这个业务领域,恐难深入理解。

本来比赛结束就想把这个总结写了,但是那时换工作了,也有一堆事情需要处理,所以就一直拖到了现在,想着要是再不写可能就凉了。技术上的一些探索和学习主要在于模型融合、特征工程。
特征工程主要包括特征之间的关系,以及使用NN模型或者遗传算法的输出作为输入。其中遗传算法生成的特征在线下的表现非常好,但是到线上的表现却很差,也做过很多次的检查,至今仍然疑惑。NN模型的特征探索是积极的,top方案也有比较好的反馈,但当时,对NN还不是十分熟悉,所以,也只是依葫芦画瓢,没有什么很好的结果。另外,对于分类任务来说,特征工程最主要的目标在于能够发现比较好的表征使得目标可以很好的区隔开来,当然,理论上来说最好的特征是与目标值相关(线性或者非线性)的值,我们的工作就是去找这个可能(也可能没有)的关系将特征表征出来。

其它学到的东西估计就是对于整个流程的熟悉了。

由于后面将开启一个新的project,所以关于这个项目的数据将暂时移出电脑,本来还想将top方案跑一跑学习一下的,现在可能只会去看看代码了。

Elo Merchant Category Recommendation

Private Leaderboard 137/4221

1-连续数值的最后stack,建议使用BayesianRidge操作,并尽量不在后续再叠加人工权重与其它模型集成.

1
from sklearn.linear_model import BayesianRidge

2-NN用得好几乎可以达到lgb同等的效果,不过要看数据集/模型/参数
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
def ann(input_shape):
“”“
just for this project maybe helpful.
”“”
model = Sequential()
model.add(Dense(2 ** 10, input_dim = input_shape, init='random_uniform', activation='relu'))
model.add(Dropout(0.25))
model.add(BatchNormalization())
model.add(Dense(2 ** 9, init='random_uniform', activation='relu'))
model.add(BatchNormalization())
model.add(Dropout(0.25))
model.add(Dense(2 ** 5, init='random_uniform', activation='relu'))
model.add(BatchNormalization())
model.add(Dropout(0.25))
model.add(Dense(1))
model.compile(loss='mean_squared_error', optimizer='adam')
return model