文章目录
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/1a5e2c01dff5752c57fe7de24f51704a.png)
FFM模型时FM模型的变种(优化),该模型考虑了(User,item)之间的关系和(User,时间)之间的关系是不一样的(FM考虑它们都一样),更广泛的讲,对特征引入了
field
的概念。
摘要
点击率预测是计算广告领域的一个非常重要的技术,之前解决该问题应用最广泛的模型就是FM模型。最近FFMs模型被提出,并获得了竞赛冠军。本文我们将FFM模型作为将稀疏数据分类的一个非常有效的模型提出,它可以应用在CTR预估问题上。
1. Introduction
有效的学习特征融合(feature conjunction)对CTR预估来说是非常关键的。观察下图的数据,可以更好的理解feature conjunction:Gucci的广告在Vogue媒体上的点击率会很高,这种信息很难被线性模型捕捉到,因为线性模型对特征Gucci和Vogue的权重学习是分开的,每个特征对应一个权重。为了解决这个问题,FM模型是一个很好的解决办法。
本文提出FFM模型,它是FM模型的一个变种,实验证明它优于FM模型。另外本位介绍了如何去训练FFM模型,并提供了实验代码和libffm库
2. POLY2 AND FM
POLY2不作介绍,FM模型在另一篇博客中写了:FM模型
3. FFM
对于很多像Tabel1的数据集的CTR预估问题,特征可以被分组到“field”内。例如在Tabel1中,特征ESPN、Vogue和NBC,这三个特征属于媒体域(Publisher field),而其他三个特征Nike,Gucci和Adidas属于广告主域(Ad field)。为了解释FFM是如何工作的,我们考虑下面的这个样本:
在FM模型中,每个特征只有一个隐向量去学习特征之间隐藏的关系。但是,由于Nike和Male属于不同域,(ESPN,Nike)和(EPSN,Male)的关系显然是不同的。
在FFM模型中,每个特征对应若干个隐向量:
3.1 Solving the Optimization Problem
论文使用Adagrad优化器去优化损失函数:
3.2 Parallelization on Shared-memory Systems
本小节讲的是FFM模型可以利用多核CPU开启多线程,从而加速训练过程。
3.3 Adding Field Information
本小节讲的是如何给特征加上field知识,然后讨论了三种类型的特征:
(1) Categorical Feature分类型变量
分类型变量一般转换为多个binary变量,就是one_hot操作
(2) Numerical Feature
将数值型特征离散化,转化成类型(1)去解决,主要缺点是确定"如何离散化"是个难点。离散化必将会导致一些信息丢失
(3) Single-field Feature
这类特征指的是对于一个样本,所有的特征都归属于同一个域,主要出现在NLP领域的文本分析
4. Experiments
首先,我们给出实验细节设置。然后探索模型参数的影响,发现FFM模型对epoch的数量很敏感,这个问题可以通过early stopping解决。多线程加速问题再4.4详细探讨
4.1 Experiments settings
4.2 Impact of Parameters
包括正则参数λ,学习率η,隐变量维度k
4.3 Early Stopping
使用early stopping过程的一个难点是对数损失对epoch的数量很敏感
4.4 Speedup
讨论线程的数量对模型训练速度的影响