作者:Gabriel Moreira
编译:修竹、柳青秀、王梦泽、钱天培
在上周,文摘菌为大家介绍了资深数据科学家Gabriel参加Kaggle的Outbrain点击预测比赛的前半程经历(戳链接阅读 Kaggle大神带你上榜单Top2%:点击预测大赛纪实(上))。
这周,我们将继续听大神唠嗑,看他又在比赛冲刺阶段用到了哪些数据科学领域的知识技能。
作为全世界最知名的数据挖掘、机器学习竞赛平台,Kaggle早已成为数据玩家在学习了基础机器学习之后一试身手的练兵场。
在该系列的上半部分中,我介绍了Outbrain点击预测机器学习比赛以及我对这次竞赛所做的初步处理。同时也介绍了用于探索性数据分析、特征工程、交叉验证策略和使用基础统计学和机器学习的基线预测模型的主要技术。
在系列的下半部分,我将描述我是如何使用更有效的机器学习算法来解决点击预测问题的。接下来我会介绍一些集成方法(ensemble methods),这些方法将我带到排行榜(Leaderboard)第19位(Top2%)。
FTRL(Follow-the-Regularized-Leader)算法
点击率预测的常用方法之一是使用FTRL优化器进行逻辑回归。谷歌通过FTRL优化器和相应较大的特征空间来预测每天数十亿的事件。
FTRL是一种懒结合了L1正则、可生成非常稀疏的系数向量的线性模型。因为每个实例通常只有几百个非零值,稀疏性可以缩小对内存的使用,使得数十亿维度的特征向量具有可伸缩性。FTRL通过从磁盘或网络上的流实例为大型数据集提供高效训练,即每个训练样本仅需被处理一次(在线学习)。
我尝试了两种不同的FTRL实现,分别适用于Kaggler框架和Vowpal Wabbit(VW)框架。
对于点击率预测,理解特性之间的交互作用是很重要的。比如,由于发布广告的平台不同(比如 ESPN和Vogue),Nike广告客户的平均转化率也会有不同。
我考虑了在Kaggler FTRL平台上训练模型的所有分类特征。特征交互选项被启用,这意味着对于所有可能的成对的特征组合,特征值增多并哈希(请阅读第一部分的特征哈希)到一个具有维度为2²⁸的稀疏特征向量的位置。这是我运行最慢的一个模型,训练时间花了超过12个小时。但是通过该方法(方法6),我的排行榜分数跃到了0.67659。
我也在VW中使用了FTRL,这是一种在使用CPU和内存资源上非常快速和有效的框架。输入数据(Input data)仍然是分类特征,除此之外还有一些被选出的数值型分箱特征(请阅读第一部分的特征分箱)。我最好的一个模型在2个小时之内就训练好了,此方法(方法7)的排行榜分数为0.67512。准确率也许稍微低了一点,但是比方法6速度快很多。
在VM的第二个FTRL模型中,我使用了VM超参数来配置只有特征子集(命名空间)的交互(特征对)。在此情况下,交互只对分类特征和一些选定的数值型特征(没有分箱转化)进行配对。 这个调整获得了一个更好的模型,排行榜分数为0.67697。我将这个模型称为方法8。