【采访】腾讯社交广告高校算法大赛决赛第一周最大进步队伍——SkullGreymon比赛经验及心得分享

这是腾讯社交广告高校算法大赛进入决赛阶段

进步最大的一支队伍

他们的名字叫SkullGreymon

他们低调到照片都不放

小编也不知道怎么介绍

只知道队长同我一样喜欢哆啦A梦

那应该是个有童真爱想象的男孩儿吧

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

于是就有了下面这篇分享

.....

 

最大进步队 —— SkullGreymon

大家好,我们是SkullGreymon队,这单词略有点生僻,是丧尸暴龙兽的意思。起这个名字不因为我们比较丧尸,相反,我们是青年公寓F座宿舍里的三个良好公民。

初赛我们是最后一周才开始做的,可算是有惊无险,最后两天比较忙,以为提交0.1009能够保证进复赛了,然后复赛再蓄力搞,没想到最后排名蹭蹭掉到173,差点没进了复赛,不过也因跌得福,有幸获得这次最大进步奖,那么接下来介绍下复赛相比于初赛的进步点。

首先,对提升贡献最大的应该是群里说的trick, 由于我们进决赛才加的群,然后挺频繁看到这个字眼,然而也没有人具体提出是什么,总是戛然而止,令人望洋兴叹。于是乎,我们开始寻找这个传说中的特征,说来也巧,我们刚好有个特征提错了,修改成它正确的打开方式,刚好带来2个千分点的提升,这个跟群里说的trick带来的提升吻合了,然后根据其他辅助信息,确认这个应该就是要找的那个传说中的特征,这个特征给我们复赛提供了2个千分点的提升,应该算是头号进步助手了。

其次,恰逢更换数据,数据量变大了,很多选手由于内存问题停滞了一段时间,而我们刚好比较快地跑完了初赛的特征和模型,时间上快了一步,以至于我们在复赛初期排名较靠前,之后大家都上来了,这点就可以忽略了。特征的提取上我们全部使用的pandas和numpy对数据进行操作,这里简单介绍一些节省内存的方法:

1. 我们是将数据按天进行划分来提取特征,那么对其他表merge之前,我们其实可以只留下在这一天中出现过的app、creativeID、positionID等等,这样能大幅减少计算量;

2. 对两个表merge前我们只需要留下需要的那些列,比如只计算positionID的统计特征时,其他不相关的列(比如connectionType、creativeID等等)其实是可以删掉的;

3. 我们提取的特征全部使用scipy的csr_matrix来存储,它转化成pandas的DataFrame也是非常快速的,提取完的特征通过numpy.savez保存至硬盘,这样读取时的效率非常高。

最后提一下,我们复赛目前的模型和初赛一样,都还只是XGB单模型,期间也粗略尝试了FM等模型,但是效果并不好,还没找到正确的打开方式,但从以往CTR比赛的经验来看FFM等模型的效果被证明是很好的,因此这块还需要继续探索。XGB对于不同的训练集,效果有所不同,我们目前线上提交的是用28、29两天的数据作为训练样本。后面也会尝试多种模型进行stacking,希望能带来一些提升吧。

复赛慢慢变得激烈起来,两天没有提升就遭遇了滑铁卢,路漫漫其修远兮,还需探索其他不同的模型,第一次在做比赛中感觉idea远大于时间,也许这就是这次这个赛题给我们的一个很棒的用户体验,接下来就是大家与时间赛跑,实现和测试自己的idea了。

最后,祝大家能够探索出一个大提升的好策略,取得好成绩!

你可能感兴趣的:(腾讯算法大赛,腾讯广告)