聊聊FFM在CTR预估中的应用

CTR预估在计算广告学中具有非常重要的作用。其中,基于分解机FM(factorization machines)的模型在CTR预估中广泛应用。FM的变形,FFM(fieldaware factorization machines)在一些世界级CTR预估竞赛中取得了非常好的效果。FFM这种算法具有一个比较明显的优势,它在对稀疏数据进行分类时比较高效。

逻辑回归(Logistic Regression)基本上可以说是在CTR预估中最常用的一种算法。假设数据集为(yi, xi),其中i = 1, . . . , m,即样本数为m,其中yi是类别或标签,xi是n维特征向量。模型w可以由以下优化问题得到

640?wx_fmt=png

其中 λ 是正则化参数,如果(1)中的变换函数为线性变换,则

640?wx_fmt=png

虽然逻辑回归比较常用,但是逻辑回归无法对联合特征进行建模,而联合特征在CTR预估中的作用非常重要。联合特征在线性模型中很难捕捉到,因为线性模型只能学到每个特定特征的权重,为了利用联合特征,可以利用二阶多项式映射(Poly2),这种方法可以学到每对联合特征的权重。也可以利用分解机,分解机嫩够通过将特征分解成两个隐含向量的乘积来学习联合特征的权重。

为了更清晰明了的说明联合特征,下面给出一个示例,对于来自广告主(Advertiser)Gucci的广告,如果媒体(Publisher)是Vogue,则点击率比较高。

640?wx_fmt=png

FM的一种变形算法,结对式交互张量分解(pairwise interaction tensor factorization ,PITF)算法可以用于个性化标签推荐。在KDD Cup 2012中,相关学者提出了PITF的一种泛化模型 field-aware factorization machines,这种泛化模型即为FFMs。PITF与FFM的不同之处在于在PITF中,有三个因素,即用户,商品,标签,而FFM更广泛。

FFM曾经在两个世界级CTR预估竞赛中取胜,其中主办方为Criteo和Avazu。国立台湾大学的学者开发了FFM的公开包 http://www.csie.ntu.edu.tw/˜cjlin/libffm

二阶的多项式映射函数(Poly2)通常可以有效的捕捉到特征联合的信息,并且在二阶映射之上利用线性模型比用核方法速度要快。Poly2能够学到每个特征对的权重,

640?wx_fmt=png

该式的复杂度为

640?wx_fmt=png

其中

640?wx_fmt=png

为非零特征对的平均数。

分解机模型能够学到每个特征的隐含向量,每个隐含向量包含k个隐含因子,其中k一般由用户指定。这种情况下,两个隐含向量作内积即可对联合特征进行建模。

640?wx_fmt=png

上式也可以写成

640?wx_fmt=png

其中

640?wx_fmt=png

数据比较稀疏的情况下,FM的效果优于Poly2。比如,针对某个特征对,只有一个负样本,在Poly2中,有可能对这个特征对所学到的权重为负,且值比较大。在FM中,该特征对的权重由两个特征的权重之积决定,并且这两个特征的权重跟其他特征对紧密关联,此时,预测可能会更加准确。此外,如果在训练数据中没有某个特征对,则在Poly2中,这个特征对的预测就比较没有价值。但是在FM中,某个特征对的权重可以由其他特征对学习得到,此时的预测就可能比较有意义。

在FFM中,针对特征对(j1, j2)使用了以下hash技巧,

640?wx_fmt=png

其中B是用户指定的参数。

由于FFM源于PITF,下面简单介绍下PITF。在PITF中,假设有三个域,即用户,商品,标签,并且将(用户,商品),(用户,标签),(商品,标签)分解到不同的隐含空间中。在CTR相关的数据集中,特征可以归入不同的域。通常情况下,每个域都包含多个特征。FFM相对FM的主要不同就在于域。

在FM中,为学习跟其他特征之间的隐含性影响,每个特征只有一个隐含向量。

以某个特征A为例,特征A的隐含向量可以用于学习跟B或C的隐含影响。如果B、C属于不同的域,则A B之间的隐含影响和A C之间的隐含影响可能不同。

在FFM中,每个特征含有多个隐含向量,利用这些隐含变量中的哪一个跟其他特征作内积取决于其他特征属于哪个域。FFM在数学上可以表示为

640?wx_fmt=png

其中f1和f2分别是j1和j2所属的域。如果f是域的个数,那么FFM的变量数为nf k,并且上式的计算复杂度为

640?wx_fmt=png

。值得注意的是,在FFM中,每个隐含向量只需要学习某个特定域的影响,因此

640?wx_fmt=png

各个算法的变量数以及计算复杂度的对比总结如下

640?wx_fmt=png

FFM的优化可以利用随机梯度下降来完成。目前,学者们也提出了多种自适应调整学习率的算法,比如AdaGrad,这种算法对矩阵分解效果较好,而矩阵分解是FFM的特例。

利用随机梯度对FFM训练的整体流程如下640?wx_fmt=png

其中(5) (6)具体表达如下

640?wx_fmt=png

其中

640?wx_fmt=png

(7)(8)具体表示如下

640?wx_fmt=png

(9)(10)具体表示如下

640?wx_fmt=png

η 是学习率,由用户指定。 w 的初始值是从均匀分布

640?wx_fmt=png

中随机采样得到。G的初始值设为1是为了防止

640?wx_fmt=png

过大。

值得注意的是,每个样本归一化为长度为1可以使得测试集的误差更低,并且对参数也更加不敏感。

至于如何加入域信息,不同类型的特征处理方式不同。

针对类别型特征,采用的方法为将其转为二值的特征,比如

Yes P:ESPN A:Nike G:Male,

转为libsvm格式即为

Yes P-ESPN:1 A-Nike:1 G-Male:1

加入域信息之后即为

Yes P:P-ESPN:1 A:A-Nike:1 G:G-Male:1.

针对数值型特征,采用的方法为一种为将每个特征看做一个域,比如

Yes AR:45.73 Hidx:2 Cite:3

变为

Yes AR:AR:45.73 Hidx:Hidx:2 Cite:Cite:3

容易看出,这种方法加入域特征具有冗余性。另外一种方式为将连续特征离散化,转变为类别型特征,比如

Yes AR:45:1 Hidx:2:1 Cite:3:1

这里的45是通过向下取整得到的,容易看出,这种转换方法不容易确定离散化的具体方案,并且离散化之后容易丢失一些重要信息。

针对单域型的特征,比如一个句子,这种情形中,只有一个域,即句子。也可以针对每个字赋予一个域,但是,此时复杂度会骤增。

实验

数据集

640?wx_fmt=png

损失函数形式为

640?wx_fmt=png

其中m是测试样本数。

各个参数的影响如下

640?wx_fmt=png

容易看出k对损失函数的影响不大,这里的k由用户指定,代表隐含因子的个数。

640?wx_fmt=png

如果正则化参数λ太大,模型不能取得好的效果,如果λ较小,模型效果较好,但是容易过拟合。

640?wx_fmt=png

如果学习率η比较小,则FFMs达到最好效果的速度比较慢,如果η比较大,则损失函数会迅速减小,但是之后会过拟合。因此,需要提前终止策略。

所谓提前终止策略即为

1.将数据集分为训练集和验证集

2.每次迭代之后,利用验证集计算损失函数

3.如果损失函数上升,记录当时迭代次数,停止或者进入下一步

4.利用全数据集和上一步得到的迭代次数来重新训练模型

640?wx_fmt=png

不同线程数对应的收敛状况

640?wx_fmt=png

多线程的加速状况,容易看出,线程数过多时,并不能达到理想的加速效果,这是因为线程数过多时,可能会造成冲突或排队。

各种方法在Criteo数据集上的效果比较

640?wx_fmt=png

各种方法在Avazu数据集上的效果比较

640?wx_fmt=png

LM Poly2 FM FFM在几个数据集上的效果比较

640?wx_fmt=png

参考资料

Field-aware Factorization Machines for CTR Prediction

https://www.csie.ntu.edu.tw/~cjlin/papers/ffm.pdf

F2M: Scalable Field-Aware Factorization Machines

http://zhenxiao.com/papers/f2m.pdf

LIBFFM: A Library for Field-aware 

Factorization Machines

https://www.csie.ntu.edu.tw/~cjlin/libffm/

Field-aware Factorization Machines

https://www.csie.ntu.edu.tw/~r01922136/slides/ffm.pdf

Pairwise Interaction Tensor Factorization for Personalized Tag Recommendation

http://www.wsdm-conference.org/2010/proceedings/docs/p81.pdf

Ensemble of Collaborative Filtering and Feature Engineered Models for Click Through Rate Prediction

https://pdfs.semanticscholar.org/eeb9/34178ea9320c77852eb89633e14277da41d8.pdf

Factorization Machines

https://www.csie.ntu.edu.tw/~b97053/paper/Rendle2010FM.pdf

Matrix Factorization and Factorization Machines for Recommender Systems

https://www.csie.ntu.edu.tw/~cjlin/talks/sdm2015.pdf

Adult Data Set 

http://archive.ics.uci.edu/ml/datasets/Adult

KDD Cup 2012, Track 2 Predict the click-through rate of ads given the query and user information.

http://www.kddcup2012.org/c/kddcup2012-track2/data 

Display Advertising Challenge 

Predict click-through rates on display ads

https://www.kaggle.com/c/criteo-display-ad-challenge

Click-Through Rate Prediction 

Predict whether a mobile ad will be clicked

http://www.kaggle.com/c/avazu-ctr-prediction

Idiots’ Approach for Click-through Rate Prediction

https://github.com/guestwalk/kaggle-avazu

https://www.csie.ntu.edu.tw/~r01922136/slides/kaggle-avazu.pdf

Idiots’ Approach for Display Advertising Challenge

https://github.com/guestwalk/kaggle-2014-criteo

https://www.csie.ntu.edu.tw/~r01922136/slides/kaggle-criteo.pdf

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值