算法复现·推荐算法 | DeepFM for CTR Prediction

2020-10-22 10:00:58 浏览数 (1)

背景

点击率(CTR)的预测在推荐系统中至关重要,目的是估算用户点击推荐项目的可能性。大多数推荐系统的目标都是最大程度地增加点击次数,因此返回给用户的项目也根据估算的点击率进行排名;而在其他应用场景(例如互联网广告)中,提高收入也很重要,因此项目的排名策略调整为所有候选项的点击率X出价,其中“出价”是用户点击商品后系统获得的收益。故无论哪种情况,很明显,关键都在于正确估算点击率。

难点与现状

对于CTR预测而言,了解用户点击行为背后的隐式交互特征非常重要:

比如,人们经常在用餐时下载用于送餐的APP,这表明应用程序类别和时间戳之间的(2阶)交互作用可用作CTR预测的一个特征。再比如,男性青少年喜欢射击游戏和RPG游戏,这意味着应用类别,用户性别和年龄的(3阶)交互作用也是CTR的一个特征。

如上,用户点击行为背后的各种交互非常复杂,其中低阶和高阶特征交互均发挥重要作用。

因此,CTR预测关键在于如何有效的建模捕捉交互特征。一些功能交互很容易理解(如上面的实例),但其实大多数交互都隐藏在数据中,并且很难识别(例如,零售业经典关联规则“尿布和啤酒”是从数据中提取的,而不是由专家发现的),这类交互只能通过机器学习自动捕获。而即使对于易于理解的交互,当其规模很大时,也很难做到详尽的建模描述。

目前主流的几种方法,如FTRL、FM、CNN、RNN、DNN、PNN、Wide&Deep要么仅支持低阶特征(或高阶特征),要么就需要大量的特征工程。

故本文提出了一种DeepFM方法,既能支持低阶与高阶的特征交互,同时引入了特征嵌入的共享策略,以避免特征工程。

文章模型

数据集描述:

假设用于训练的数据集包含n个实例(x,y)

其中x是涉及用户和产品的m个字段的数据记录,y∈{0,1}是表示用户点击行为的标签(1表示点击、0表示未点击), x通常包括类别字段(例如,性别,位置)和连续字段(例如,年龄)。

数据处理阶段,每个类别字段均表示为one-hot的向量,而每个连续字段则表示为值本身,或离散化后的one-hot的向量。

然后,将每个实例转换为(x,y)

其中,

是d维向量,其中X field j是x的第j个字段的矢量表示。通常,x是高维且极为稀疏的。

CTR预测的任务就是建立一个预测模型y = CT R_model(x)来估计用户在给定上下文中点击特定应用的概率。

DeepFM:

DeepFM由两个部分组成,FM部分和Deep部分,它们共享相同的输入。

对于特征i,标量wi用于权衡其1阶重要性,而潜在矢量Vi用于测量其与其他特征相互作用的影响。

Vi馈入FM组件以建模2阶特征交互,并馈入深层组件以建模高阶特征交互。

联合训练预测模型所有参数,包括wi,Vi和网络参数(下文提到的W(l),b(l)),则有:

其中ˆ y∈(0,1)是预测的CTR,yFM是FM分量的输出,而yDNN是DNN分量的输出。

FM Component:

除了特征之间的线性(1阶)交互作用外,FM模型将2阶的特征交互作为各个特征潜在向量的内积。它可以比以前的方法更有效地捕获2阶特征交互,尤其是在数据集稀疏的情况下。在先前的方法中,仅当特征i和特征j都出现在同一数据记录中时,才能训练特征i和j的交互作用的参数。在FM中,通过其潜在向量Vi和 Vj的内积对其进行测量。由于这种灵活的设计,只要i(或j)出现在数据记录中,FM都可以训练潜矢量Vi(Vj)。因此,FM可以更好地学习从未或很少出现在训练数据中的特征交互。

如图2所示,FM的输出是2个单元的总和:

其中,

前半部分反映了1阶特征的重要性,后半部分表示2阶特征交互的影响。

Deep Component:

Deep部分用于学习高阶特征交互。如图3所示,数据记录(向量)被馈送到神经网络,这些原始特征输入向量通常是高度稀疏且超高维的,类别字段与连续字段混合并且按标签(例如性别,位置,年龄)分组。

故在进一步馈入第一隐藏层之前,嵌入层会将输入向量压缩为低维,密集的实值向量,否则网络可能不堪重负。

图4突出显示了从输入层到嵌入层的子网结构。注意:1)虽然不同输入场矢量的长度可以不同,但它们的嵌入大小相同(k);2)FM中的潜在特征向量(V)现在用作网络权重,这些权重已被学习并用于将输入场向量压缩为嵌入向量。

与[Zhang et al,2016]不同,本文没有使用FM的潜在特征向量来初始化网络,而是将FM模型作为整体学习架构的一部分。这样一来,我们就无需通过FM进行预训练。

将嵌入层的输出表示为:

其中ei是第i个字段的嵌入,m是字段数。然后,馈入深度神经网络,正向过程为:

其中l是层深度,σ是激活函数。a(l),W(l),b(l)是第l层的输出,模型权重和偏差。进一步,生成一个密集的实值特征向量,最终将其输入到用于CTR预测的S型函数中:

其中| H |是隐藏层的数量。

算法复现

数据处理

设定权重

模型训练

模型预测

模型评估

结果输出

参考文献:

Guo H , Tang R , Ye Y , et al. DeepFM: A Factorization-Machine based Neural Network for CTR Prediction[J]. 2017.

参考代码:

https://github.com/ChenglongChen/tensorflow-DeepFM

数据下载:

https://www.kaggle.com/c/porto-seguro-safe-driver-prediction/overview

--------- END ----------

代码语言:javascript复制

0 人点赞