腾讯广告算法大赛第三周周冠军出炉!
他们就是…
等等,这位帅哥如此眼熟?
没错,就是去年的总冠军队伍!!
大腿抱紧!看上届冠军为你指点迷津!
大家好,我们是来自南京大学的“每天队员都想改一次名字”团队(nju_panda),这次非常幸运能够获得这周的周冠军,也非常有幸能够和大家分享我们的比赛经验和设计思路。我们将从三个方面分别介绍我们的方法。
1、 数据处理与特征工程
在数据的处理上,我们采用了和去年比赛类似的做法。首先我们将所有的文件都存为h5格式的表格,数据类型主要使用int8和int16类型。在这种情况下,尽管赛题数据量较大,读写速度也都还可以接受。其次,为了防止过拟合,我们会将出现次数过少的特征值使用一个特殊值替换,这种处理方式虽然十分简单暴力,但在实验效果上非常有效。现在我们也在尝试使用其他方法处理稀疏值。在特征工程方面,我们依靠经验提取了一些常用的特征。这一部分的经验与之前周冠军分享的比较类似,因此就不再做详细介绍了。
2、 模型训练
在模型选择方面,我们采用的模型和去年的基本一致,只在去年的模型上做了些简单的修改。详细的模型架构大家可以参见我们去年答辩的模型架构图(见配图),在这里只简单介绍一下。对于List类型的特征,我们目前是对embedding向量做了mean pooling。在模型训练过程中我们没有使用dropout也没有进行正则化。我们在模型中加入了batch normalization。参数的选择方面,我们的模型训练过程只迭代一次,batch size通常设为2000以上,Adam优化器学习率设为0.001到0.01之间。此外,在我们之前的实验中,多次训练模型取平均也能提高不少效果,大家也可以尝试一下。
3、 优化目标
由于本次大赛的评价指标是AUC指标,而AUC指标实际上计算的是一种pairwise的损失,因此无法直接对其求导优化。常见的方法中,使用learning to rank中pairwise的方法进行优化的比较多,效果也很好。然而这类方法时间复杂度太高,因此在比赛中我们也尝试了一些替代的优化目标。最简单的是log loss,这也是效果最好也最常用的损失函数。我们还尝试了一些其他的优化目标,如hinge loss, 正负样本得分差等,效果也都很好。我们在综合了这些优化目标之后,效果也取得了一定的提升。
最后希望大家能在比赛中获得更好的名次,学到更多的知识。