机器之心发布
作者:NaiveLamb
这是Kaggle 你问我答 (AMA) 第五期活动。本期的嘉宾是詹金,现就职于 DataRobot Japan 担任 data scientist。
kaggle profile:https://www.kaggle.com/senkin13
他 3 年前开始参加 kaggle 竞赛,曾多次取的前十名的成绩。截至目前共斩获 6 金 3 银 2 铜,kaggle 最高排名全球第 91。
以下是本期活动的问答集锦:
Q1: 首先来个自我介绍?
A1: 大家好,我是 senkin13,参加 kaggle 比赛接近 3 年了,本职工作是 Data Scientist,很荣幸和大家分享 kaggle 的经验。
Q2: 如何平衡工作、比赛和生活之间的时间精力分配?
A2: 平衡是几乎不可能的(笑),只能想办法更高效地利用工作,生活以外的碎片时间,比如通勤电车,午休时候可以多看看 kaggle 论坛,思考些新点子,多准备几台机器并行作业,醒着的时间多做快速迭代的实验,睡觉的时候跑耗时的实验。到了比赛冲刺阶段,减少些睡眠时间,把精力转移到比赛也是必要的,但尽量不去影响到健康工作家庭吧。
Q3: 如何高效地取得比赛金牌?
A3: 想要高效拿金牌,首先要选择比赛,最好是自己喜欢的比赛类型,有些经验,shake 不会那么大。常规手段大家都会,多花时间找到非常规的 trick 是关键。集中精力做一个也比做几个成功率更高。team 也是比 solo 高效多了,团队里有比你更勤奋,更有经验,更多技巧的队友那就走运了。终极武器是打出名气后可以在最后阶段搭金牌区的顺风车(笑)。
Q4: keras 患者。keras 还没用扎实。学 pytorch 没动力,但到处都是 pytorch,如何建立这种学习动力?更别说 tensorflow 了。
A4: 我也是 keras 重度用户,不到必须要用 pytorch 的时候不会去学的。学新东西还得靠外部驱动,像在 kaggle 打 image,nlp,或是 moculer 这种图形结构数据比赛的时候,不管是 github 还是 kaggle 论坛,能学习参考的代码主要都是 pytorch,这就逼自己去学习了,但首先是得自己渴望拿个好名次。也可以用工作或者发表的动力,比如做一个 pytorch 的项目展示给同事或者学习伙伴们,反正感觉都得狠狠逼自己一回。
Q5: 看到 senkin13 在 github 上的 kaggle 的 repo,这是你所有代码放的地方吗?
A5: 放了大部分比赛的常规代码,保留一些秘密武器(笑)。
Q6: 在 kaggle 里如何快速提高,多读文章还是多去复现别人的 solution?
A6: 个人觉得阅读和写代码都重要,但写代码(实践)更重要,边打比赛边学习思考是最高效的,复现别人 solution 是有了 idea 再去练习写代码,无疑这是 kaggle 最需要的能力之一。在自己思维枯竭的时候多读读文章能带来灵感。可以说只要时间允许,越多越好。
Q7: 请问在学习完机器学习和深度学习的各类视频书籍教程后,需要怎样做实战的提高最有效果?您是如何在 kaggle 上学习?还是都是看 paper?
A7: 如果想要一些实战,直接来参加 kaggle 比赛吧!找一个最感兴趣的赛题直接开始吧(最好 lb 榜上前排有很多 Master/GM 的:shake 会比较小、比赛比较可靠)。kaggle 的分享氛围非常好,可以从 Notebook 区和 Discussion 区中发现很多很棒的 idea、方法、资源等等。在探索一个赛题的同时,会从大家的分享以及 paper 里不断学习新方法。
Q8: senkin13 觉得拿 solo gold 最难的地方在哪?
A8: 抛开天赋异禀的不谈,像我这样一步步从铜,银,团队金,solo 金做出来的来看,最难的地方是不能有短板,因为对手是团队,他们不太可能有短板,就表格数据比赛来说不管是数据分析,特征工程,模型算法,融合等都缺一不可,通过一定时间积累后再去挑战比较好。还有时间一定要确保最大化投入,我打 elo 这个比赛几乎从头到尾一直没休息,保证了特征工程做到自己的极致,即使融合,后处理部分搞砸了,也没掉出金牌区。
Q9: 可以列举一下 kaggle 上学到的,在工作中最有用的三个 trick/技术吗?
A9: 第一个是在地震预测赛 (LANL) 学到的特征工程,像 MFCC 就被我应用到汽车引擎音频分析项目取得很大成功。
第二个是 HomeCredit,Elo 里面起到很关键作用的两阶段建模 meta 特征,应用到商品销售预测项目中也取得很好结果。
第三个是 Favorita, Recruit, 2019DSB 这些比赛的代码我整理成半 automl 工具,为各种 time series 的项目迅速生成 baseline 提升了工作效率。
Follow-up: 请问 mfcc 如何运用「成功」的?mfcc 是一个矩阵,能具体说说这个成功的『亮点吗?
Answer: 作为音频的特征,然后建立分类模型,得到很好的精度。把矩阵的每一行取一个平均值 就变成列了,可以去 kaggle 搜索下有很多,mfcc 主要是转换成出适合人耳频率的波形数据。
Q10: data mining 是否有从传统的 GBDT 过渡到 NN 的趋势?NN 应用到结构数据上,有什么需要注意的?
A10: 我觉得 nn 还不会取代 gbdt,甚至 gbdt 也取代不了一些更古老的算法,像制造业有些项目获取 label 很贵,数据样本很少的情况下线性或者简单 tree 模型有时表现更好,金融业的一些项目需要严格的解释性,基于线性和规则类算法也很普遍。kaggle 主要面向竞赛,所以数据足够多和复杂,gbdt 会表现更好,nn 在一些人工数据或者匿名数据的比赛中超过了 gdbt,另外对于包含有序列的数据 rnn,cnn,transformer 表现也非常好,说明 nn 和 gbdt 互有优势会长期共存。目前企业的数据越来越大,nn 或者说 deeplearning 在对应大数据上还是有优势的,这可能会成为一个趋势。
nn 应用到结构数据的话,预处理很重要,缺省值填充用 0 还是最大值,平均值有些技巧,可以看下 bestfitting 在 talkingdata 的分享。归一化也是可以挖掘下,像 Michael Jahrer 在 porto 里面用 RankGauss 取得了很好效果。
尽量走和 gbdt 不同得路线,用原始简单的数据靠 nn 的网络结构自主生成特征看看能否取得好的效果。使用人工特征的情况下,注意针对不同的 numerical,categorical,sequencial 类型特征,分别用 dense,embedding,rnn 来构造,multi input 比单纯的 mlp 效果好。
为了减少 variance,多跑几次平均一下也是很有必要。
Q11: 日本 data science 行业发展的如何,对比中美有何有劣势?
A11: 以我有限的视野看到的是靠 kaggle 取得好成绩继而转型 ds 的越来越多,市场价值也水涨船高,各个传统公司需求都上来了,但人才缺口很大,不像中国有庞大的人口红利,美国吸引世界各地人才的红利。
Q12: 一般和别人组队在队友方面有什么要求呢?
A12: 一般我都是被动的哈,早期我不认识什么人的时候是去论坛报上自己的分数等前排队伍邀请我,自从加入 kaggler cn 群基本和熟人组队比较多了,一般没什么要求(笑)。
Q13:请问在 salary prediction 比赛里, 用 residual 来做 downsampling 的时候, 是怎么选择阀值的?
A13:手动选择阈值。跑很多轮比较 valid 的分数,valid 里面是不做下采样的。
Q14:日本那边的比赛平台有试过吗? 试过的话, 体验如何?
A14:salary prediction 就是日本这边一个平台 probspace 举办的,还有 signate,nishika,另外还有专门线下比赛的平台 atma,总体体验都不错,竞争小些容易拿 prize。基本都是日本 kagglers,但也有不少学生还没在 kaggle 打出来,先在那些平台打出成绩的,包括外国留学生。
Q15:senkin 老师怎么看比赛大部分都在重复以往的经验,获取对自己新的输入看起来实在性价比太低。
A15:这是 kaggler 老鸟们的普遍问题,在舒适区拿金牌也相对容易,但成就感很低,还是得清空一下自己,找些公司项目做新领域或者跟着熟人做做新领域的比赛,最近我在做公司 nn 教学材料。
原文链接:https://zhuanlan.zhihu.com/p/128532325
本文为机器之心发布,转载请联系原作者获得授权。
✄------------------------------------------------
加入机器之心(全职记者 / 实习生):hr@jiqizhixin.com
投稿或寻求报道:content@jiqizhixin.com
广告 & 商务合作:bd@jiqizhixin.com