为什么要拿这次比赛来说?首先criteo是全球一家专注在效果广告的公司,在业界很有影响力,计算广告书中对其也有介绍,比赛的数据质量不错。其次前三名有10w美金的激励,继KDD cup 2012 track2之后,算是点击率预估问题上最知名的一次比赛,很多kdd cup的往届冠军都前来参加。最后呢这次比赛都是脱敏过的特征,没有具体的特征含义,使得难以结合领域知识做更细致的特征工程,更多考量模型的工作,比较适合我们今天讨论的话题,另外比赛时间是从去年6月到9月三个月的时间,参赛者们的方案相对也会比较细致。
第三,应用Online的更新方式去更新模型,还是batch的方式。Online的方式对应的最优化算法主要是minibatch sgd,Offline的方式可以应用计算广告书里说的LBFGS,Trust region这些。按我个人经验,minibatch sgd的更新方式对头部的数据学习的会更快更充分,因此更善于fine tuning the head part。而Offline的方式全局优化历史数据,对于长尾稀疏特征,就比sgd的方式要精细些了。如果业务场景时效性较强,更关注头部,用一个Online keep更新的模型就足够了,比如新闻推荐的场景。但是如果业务场景有很多长尾流量,需要精细的预估,一个batch的Offline model是必要的,为了业务的时效性考虑,可以用batch的模型结果去初始化Online的模型更新,定期的batch结合Online的delta更新,比如搜索广告的场景。
之前提及过,一般会以高维sparse特征的LR模型作为基线模型,也有用dense特征直接结合LR来建模的。由于LR是线性分类器,后者需要对dense特征手工加各种非线性变换,遇到瓶颈后会转向前者,或者改成使用GBDT,NN等非线性模型。而高维sparse特征结合LR的方案,人工在特征工程遇到一定瓶颈后,会采用FM等方案自动做特征发现,为了解决时效性的问题,会结合batch的训练加上Online的更新方式,或者直接转向完全Online的方案如ftrl。还有一个方向是会结合自身的业务场景,对模型的损失函数做一些创新,比如yahoo的laser,阿里的coupled group lasso,比赛里的field aware的ffm等等。