【采访】腾讯社交广告高校算法大赛第一周周冠军——郭达雅 比赛经验及心得分享

【采访】腾讯社交广告高校算法大赛第一周周冠军——郭达雅 比赛经验及心得分享

经过一周紧张又激烈的角逐

腾讯社交广告高校算法大赛产生了第一位周冠军

他的名字叫郭达雅

一个腼腆沉静的小男孩

低调的实力派,祝贺你

小编对咱们的周冠军同学进行了短暂的采访

于是就有了下面这篇分享

周冠军 郭达雅

大家好,本人郭达雅。现就读于中山大学数据科学与计算机学院,是一名计算机科学与技术的大三学生。今天很荣幸有个机会来分享一下比赛经验及心得。

刚接触这类比赛是在今年的三月份,当时刚好有个课程需要我们做kaggle的Two-sigma Connect,以排名作为成绩,经过两个月的努力,最终拿了 top 2%,同时也让我喜欢上了这种比赛。有了两个月的比赛经验,让我在这次腾讯社交广告高校算法大赛中,险拿了一次周冠军。

接下来主要讲下我在这个比赛中的一些想法及做题思路。

1、线上及线下的一致

可能大家对线上和线下不太了解,我这里做一下解释。线下成绩指的是你在本地跑的成绩,一般是做交叉验证 (CV) ,由于这个比赛具有时序性,可能会按时间划分训练集。而线上成绩便是你提交上去的成绩。

对于这种比赛,首先你必须做到CV和线上的成绩相差不大,其次 CV 和线上的成绩应该是同增同减的。否则后面你所做的事情都是白费功夫,因为 CV 根本体现不出来特征的好坏。为了同步 CV 和线上成绩,我花了两天的时间去做这件事情。

2、缩减训练时间

这次的比赛,大家比较在意的一件事就是自己电脑不够好,跑不动。但其实有很多方法可以解决这个问题的,比如缩小数据集,使用百分之一的数据量进行训练,又或者优化一下代码,分批输入训练。我在第一天所提交的成绩是0.0985,这个成绩是用十分之一的数据量,单线程及4G内存跑出来的。我们在做测试的时候,没必要使用所有的数据去测试,只用一部分的数据就能测出特征的好坏。

3、做好特征工程

有一句话说得好,“特征决定上限,模型只能无限接近于这个上限。”这种比赛,如果要拿到好的排名,建议先做特征工程,找到好的特征可以提高很多。在第一天交的成绩 0.0985 中,我使用的是 XGB 和自己构建的特征。我不太清楚 XGB 好不好,但是目前来说我只是用 XGB 来验证我自己构造的特征好不好。至于特征工程,可以做下 one-hot 编码或者统计,但也不要每次把构造的特征都放进模型跑一次,这样很浪费时间,其实一个特征的好坏程度,你可以简单的通过 groupby(’feature’,’label’) 来看出特征的好坏程度,如果某个特征在不同的取值上,0和1的比例和平均比例相差很大,那么这个特征是有效的。又或者可以看方差,这样可以省下许多时间去测试特征的好坏。

4、不放过任何有可能提升成绩的机会

大家或许最头疼的一件事就是加入某个特征线下logloss下降了很多,但是线上logloss反而升高了。当我们遇到这样的事情的时候,我们并没有直接抛弃这个特征,而是充分利用这个特征。我们会想两件事:

1.这个特征是不是信息泄露了,比如使用了未来的数据来预测现在。能不能重新构造类似的特征来规避时间。

2.测试集是不是没有这样的特征。比如训练集虽然使用了点击时间之前 app_action 的数据,可是训练集有当天的action信息,而测试集没有当天的 action 信息。因此造成了训练集有这样的特征,而测试集没有。

最后,祝大家取得好成绩。

你可能感兴趣的:(【采访】腾讯社交广告高校算法大赛第一周周冠军——郭达雅 比赛经验及心得分享)