技·算未来内部算法大赛总结

这一次算法总结,我要讲的不是关于比赛算法上的,而是赛前、赛中 以及 赛后的一些感受。

开篇

来阿里实习,恰好赶上了一年一度的技算未来算法大赛,我们团队一商量就报了名。由于这次比赛组队的规则是每队至多有一名算法,至少一名工程,因此我作为外援的身份的参加。
本次大赛的题目是预测2018年双十一每个sku的销量,给了2016年到2018年9月30号的数据,分别为商品维表,包括sku_id,item_id,类目,店铺等信息;商品每日销量,收藏量等信息。

开工

在刚开始的时候,平时日常业务多,因此团队热情并不是很高。我和另外一位同学参加过天池比赛,自然而然地开始负责整个比赛的流程了。
一起工作奋斗的日子很开心,平时要上班,比赛也只能抽空做。讨论了一下,发现时间很紧,我们把元旦的假期也拿来做比赛了,元旦期间我们还开了场视频会议,把要做的特征列了一下。随后,在接下来的周末,特别是第一次提交测评的前一天晚上,我们又狠狠地奋战了一番。

初赛测评

匆匆忙忙的刚上了第一次测评,出来的结果大吃一惊,一共30多个队提交,结果我们排到了20,测评分数也是一塌糊涂。突然有种让我怀疑人生的感觉。当旁边的同事问到我们多少名的时候,我们都不好意思回答。。。。回头赶紧找原因。
噫,由于自己的蜜汁自信,时间赶,又加上自己的懒惰,只是简单的做了交叉验证,来不及调参,也没有加上与线上一致的评测指标,还有是第一次提交也不知道对手的情况,导致了这么惨的分数。
紧接着在当天晚上的第二次提交时,我加上了上述指标,进一步调参后,线上效果得到提升,但是排名还是没有变化,总的提交人数变多了,终于没有处于倒数的状态。有趣的是,在我们这个算法大团队中,共有三个队参加,没想到我们在团队中的成绩竟然是最好的,这又给了我们极大的信心,也告诉我们不能轻敌。

决赛

……
时间隔的比较久,有些细节已经忘了,只记得在提交决赛测评结果的前一天晚上,我们还在讨论新特征,提新特征。修改了部分逻辑,考虑到第二天的资源可能会比较紧张,这一天晚上,大家都没有怎么休息,下班回家已经是一两点了,回去之后,又是轮流起床接力干活。
决赛现场进行,我们团队是最整齐的,集体穿上了双十一战袍。决赛当天,集群资源真的是紧张,按照计划的策略,在服务器上跑特征工程,简单训练模型,选取TOP特征,下载数据到本地再进行调参训练。
问题来了,当我们下载了结果时,竟然发现样本数与提交样本不一致,然后又马上到截止时间了。快速检查一下,发现出现了大量重复数据,时间紧,拍脑袋,重复的数据求平均!
匆匆忙忙交了结果,没想到最后测评竟然是负分!!

总结

在这次比赛中出现了这么严重的错误,回过头来分析。
敬畏线上、敬畏代码,对写的每一行代码负责。在提交、发布时做好充分的线下测试,对中间的关键环节进行验证,比如数据的行数、列数,做过的操作、运算,看看是否和想象中的一致,有没有bad case。千万不能因为时间赶,而放弃了测试环节,这是最危险的,本来时间就紧,中间匆匆忙忙,出错的概率会大很多,所以一定要做好检查,如果实在来不及,可以考虑是不是和业务方交流一下,数据还没出来,能否往后延一点呢。
做好工时预估,给自己留足够的时间,正常完成时间是多少,当集群资源紧张时会不会造成延误。
复制黏贴代码的时候一定要小心,一不留神,不是哪里复制错了,就是复制的东西忘记改了,小心再小心。
当发现错误的时候,不能随便提交,一定要先做仔细检查。