FFM: Field-aware Factorization Machines

  • 一、背景知识
    • 1.1 什么是特征域
  • 二、FFM模型
    • 2.1 FFM模型数学公式和原理
    • 2.2 FFM场景举例(Publisher、Advertiser)
    • 2.4 FFM参数比FM多,拟合能力强,但要用早停防过拟合
  • 三、FFM相关面试题
    • 问题1:FFM相比FM的优缺点(FFM计算复杂度O(kn2)O(kn^2)O(kn2)
    • 问题2:FFM能解决少量记录数据拟合大量参数的问题吗?即稀疏性?
    • 问题3:FFM有m个特征域,那每个位置只需要m-1个隐向量吗
    • 问题4:为什么FFM的效果比FM好?
    • 问题5:FFM和FM适用的场景?
    • 问题6:你还知道哪些特征交叉的模型?(FwFM、DCN v2、CAN等)

学习资料

  • paper: Field-aware Factorization Machines for CTR Prediction
  • ⭐⭐⭐ [blog] FFM算法介绍
  • AI上推荐 之 FM和FFM(九九归一)

一、背景知识

1.1 什么是特征域

“域”(field)代表特征域,域内的特征一般是采用one-hot编码形成的一段one-hot特征向量。例如用户的性别分别是男、女、未知,那么对于一个女性而言采用one-hot方式进行编码的特征向量为[0,1,0],这个三维的特征向量就是一个“性别”的特征域。

将所有特征域连接起来,就组成了样本的整体特征向量[x1,x2,x3,...,xn][x_1,x_2, x_3, ... , x_n][x1,x2,x3,...,xn],其中[x1,x2,x3][x_1,x_2,x_3][x1,x2,x3]是性别的one-hot向量,属于“性别”特征域,而[x4,x5,x6,x7][x_4,x_5,x_6,x_7][x4,x5,x6,x7]是学历的one-hot向量,属于“学历”特征域…

二、FFM模型

2015年,Criteo基于FM提出的FFM在多项CTR预估大赛中夺魁,并被Criteo、美团等公司深度应用在推荐系统、CTR预估等领域。

FFM算法,全名Field-aware Factorization Machines ,整整比FM算法多了一个F!多出来的F意为Field

相比FM模型,FFM模型引入了特征域感知(field-aware)这个概念,使模型的表达能力更强了

2.1 FFM模型数学公式和原理

FM每个特征xix_ixi只有唯一的隐向量viv_ivi,和不同特征域的隐向量进行交叉时也是用的同一个viv_ivi

FFM每个特征对应的不是唯一一个隐向量,而是一组隐向量。

FFM的核心:在做特征交叉时,每个特征选与对方域对应的隐向量做内积运算,得到交叉特征的权重。

FFM模型数学公式:
y^FFM=w0+∑i=1nwixi+∑i=1n∑j=i+1n<vi,fh,vj,fk>xixj\hat{y}_{FFM}=w_{0}+\sum_{i=1}^{n} w_{i} x_{i}+\sum_{i=1}^{n} \sum_{j=i+1}^{n}<v_{i,f_h}, v_{j,f_k}>x_{i} x_{j}y^FFM=w0+i=1nwixi+i=1nj=i+1n<vi,fh,vj,fk>xixj

其中fhf_hfh表示xjx_jxj所属的特征域编号,fkf_kfk表示xix_ixi所属的特征域编号。

下图来自:《Operation-aware Neural Networks for user response prediction》(他不同特征域交叉的箭头可能画的没有那么清楚,不过知道大概意思就行)

Fig. 4. The architecture of the FFM model. The structure is the same as FM,except that the embedding layer is operation-aware in FFM.

2.2 FFM场景举例(Publisher、Advertiser)

这是个经典的CTR的场景,右边是特征,Publisher是广告的发行平台,Advertiser是广告商,左边带有+号的是该广告被成功点击多少次,带有—号的是该广告被成功无视多少次,右边的这些特征都是类别特征,通常我们就是用one hot独热编码来表示,每个位置代表一个类别,若是对应类别就标1,其余标0,每个位置都算是一个单独的特征。

在FFM看来,每个单独的特征都可以算出多个对应的隐向量。那么在这个场景下会有多少个隐向量?我们前面说过这取决于我们把特征归类为多少个field。在这个场景下,两个field足够,一个field是Publisher,包含着ESPN,Vogue,NBC等,一个field是Advertiser,包含着Nike,Gucci,Adidas等,那么需要多少个隐向量?是2-1=1个!只有属于Publisher field的特征碰上Advertiser field的特征,才取出对应的隐向量,那这总共只有这么个场景,隐向量对应的也只要用一个就够了,对了,这其实就是FM!

那么有人问了,那如果同属一个field的特征碰上了怎么办?忘了独热编码了么,同一个field里的特征至多只有一个位置上的特征标1,该交叉项必乘以一个0,该交叉项就不存在了!

试着在场景里多考虑些特征

那这里就多出来了一些可以划为Gender field的特征,现在共有三个field了,因此每个特征都可以对应算出3-1=2个隐向量!

2.4 FFM参数比FM多,拟合能力强,但要用早停防过拟合

每个特征都带有更多隐向量的FFM比起每个特征都只带有一个隐向量的FM有更多的参数,模型的拟合能力就更强,因此在某些场合下就比FM表现更好就不足为奇,但因为模型拟合能力更强了,经常过拟合就也不奇怪了,因此在原作者认为,FFM搭配early stopping风味更佳,所谓的early stopping,就是看着差不多了就让FFM停下,让其别再进一步拟合了!差不多就行了,再拟合下去就过拟合了。

三、FFM相关面试题

问题1:FFM相比FM的优缺点(FFM计算复杂度O(kn2)O(kn^2)O(kn2)

参数量:FFM训练时需要学习nnn个特征在mmm个特征域上的kkk维隐向量,二阶部分参数数量为n⋅m⋅kn\cdot m \cdot knmk个,而FM二阶部分只有n⋅kn \cdot knk个参数

计算复杂度:FFM的二阶部分无法像FM一样用数学公式优化,所以复杂度是O(k∗n2)O(k*n^2)O(kn2),而FM可以优化到O(k∗n)O(k*n)O(kn),n远大于k

相比FM,FFM引入了特征域的概念,为模型引入了更多有价值的信息,使模型的表达能力更强了。但同样的它的计算复杂度上升到了kn2kn^2kn2,远大于FM的knknkn

在实际工程应用中,需要在模型效果和工程投入之间进行权衡。

问题2:FFM能解决少量记录数据拟合大量参数的问题吗?即稀疏性?

当然可以咯。因为它是基于FM的啦。


问题3:FFM有m个特征域,那每个位置只需要m-1个隐向量吗

是的,如果扣细节的话,每个位置(特征xix_ixi)只需要m-1个隐向量,因为他自己不用和自己交叉,所以可以省去1个隐向量。

FFM中每个特征对应要算的隐向量的个数与特征可以被划为多少个field有关,那如果划来划去也划不出多少个field,比如只能划出2个,那些FFM就退化为FM

问题4:为什么FFM的效果比FM好?

每个特征都带有更多隐向量的FFM比起每个特征都只带有一个隐向量的FM有更多的参数,模型的拟合能力就更强,因此在某些场合下就比FM表现更好就不足为奇,但因为模型拟合能力更强了,经常过拟合就也不奇怪了

问题5:FFM和FM适用的场景?

(1)FM和FFM都是在线性拟合的基础上考虑了特征的交叉项,但有些场景特征x和目标y之间只是单纯无邪的线性拟合关系,此时FM和FFM的效果和线性模型差不多。

(2)FM和FFM在数据集大型稀疏的场景下运转良好。因为都是利用了共享参数的方法解决了用少量记录数据拟合大量参数的问题。其实FFM也一样,比起FM多了一些隐向量要算,但其实多出的参数量也在可控的范围内,并没有多出特别多,用少量记录数据也足够拟合了。

(3)在类别特征比较多的时候比较适合用FM、FFM,而数值特征(如[0.31,0.74,0.25…1.63])占多的情况下,FM、FFM并不比SVM等经典算法好处多少。(怪不得打微信大数据竞赛时用DeepFM模型时,要对一些统计特征进行数据分箱操作)

问题6:你还知道哪些特征交叉的模型?(FwFM、DCN v2、CAN等)

详见:一文梳理推荐系统中的特征交互排序模型

RS笔记:传统推荐模型之FFM (引入特征域的概念) [2015 Criteo]相关推荐

  1. 传统推荐模型(一)协同过滤算法_UserCF和ItemCF

    传统推荐模型(一)协同过滤算法_UserCF 1.UserCF 协同过滤就是协同大家的反馈.评价和意见一起对海量的信息进行过滤,从中筛选出目标用户可能感兴趣的信息的推荐过程. 物品1 物品2 物品3 ...

  2. 谷歌引入自动网络设计,高效解决大规模深度推荐模型的特征嵌入问题

    来源 | 深度传送门(ID:gh_5faae7b50fc5) 导读:本文主要介绍Google在大规模深度推荐模型上关于特征嵌入的最新论文. 一.背景 大部分的深度学习模型主要包含如下的两大模块:输入模 ...

  3. AI上推荐 之 逻辑回归模型与GBDT+LR(特征工程模型化的开端)

    1. 前言 随着信息技术和互联网的发展, 我们已经步入了一个信息过载的时代,这个时代,无论是信息消费者还是信息生产者都遇到了很大的挑战: 信息消费者:如何从大量的信息中找到自己感兴趣的信息? 信息生产 ...

  4. 传统推荐方法相关论文和代码

    目录 一 协同过滤方法 1.1 论文 1.2 代码 二 矩阵分解方法 2.1 论文 2.2 代码 三 因子分解机方法 3.1 论文 3.1.1 FM(Factorization Machines) 3 ...

  5. Google最新论文:大规模深度推荐模型的特征嵌入问题有解了!

    转载自深度传送门(ID: gh_5faae7b50fc5) 导读:本文主要介绍下Google在大规模深度推荐模型上关于特征嵌入的最新论文. 一.背景 大部分的深度学习模型主要包含如下的两大模块:输入模 ...

  6. 推荐模型是怎样由窄变宽、越变越深的?

    星标/置顶小屋,带你解锁 最萌最前沿的NLP.搜索与推荐技术 文 | 邢智皓 编 | 兔子酱 当前,深度学习推荐模型已经成功应用于推荐.广告.搜索等领域,但在了解它之前,简单回顾传统推荐模型仍是有必要 ...

  7. 推荐系统 | 基础推荐模型 | GBDT+LR模型 | Python实现

    基础推荐模型--传送门: 推荐系统 | 基础推荐模型 | 协同过滤 | UserCF与ItemCF的Python实现及优化 推荐系统 | 基础推荐模型 | 矩阵分解模型 | 隐语义模型 | PyTor ...

  8. CIKM 2021 | 基于异质图学习的搜索广告关键词推荐模型及实践

    猜你喜欢 0.[免费下载]2021年11月热门报告盘点1.如何搭建一套个性化推荐系统?2.从零开始搭建创业公司后台技术栈3.全民K歌推荐系统算法.架构及后台实现4.微博推荐算法实践与机器学习平台演进5 ...

  9. 深入浅出推荐系统之简单推荐模型

    先来回答一个最关键的问题:到底什么是推荐系统? 下面从3个角度来回答: 它能做什么 它需要什么 它怎么做 先来第一个问题推荐系统能做啥? 推荐系统可以把那些最终会在用户(User)和物品(Item)之 ...

最新文章

  1. java例7_Java中单例七种写法(懒汉、恶汉、静态内部类、双重检验锁、枚举)
  2. 华为mate40计算机,原来拍摄还能这么玩?华为Mate40 Pro连接电脑+耳机,Vlog输出分分钟...
  3. 大数据架构师训练营学习笔记
  4. function module COM_PRODUCT_GETDETAIL_INTERNAL的内存分配问题
  5. Ajax step by step
  6. 慎用ToLower和ToUpper,小心把你的系统给拖垮了
  7. 小程序怎样和服务器交互,微信小程序与 Django服务器 数据流 交互通信
  8. Hello Struts2
  9. 这届 360 公关不行
  10. android通知栏应用程序更新,Android App自动更新之通知栏下载
  11. Jquery.ajax不能解析json对象,报Invalid JSON错误的原因和解决方法
  12. mac 2k显示器字体发虚_亲身实践:Mac mini 搭配戴尔显示器体验
  13. python画3D图
  14. Projector 远程访问 pycharm IDE
  15. CSS总结1-来自freecode
  16. 整合NGFW和威胁分析后,防火墙这是要上天?
  17. Linux DRM(二) --Xorg/DRM
  18. pm961 mysql_搭建Memcache服务详解
  19. [Caffe]:关于ReLU、LeakyReLU 、PReLU layer
  20. 解决linux下.AppImage文件无法运行问题

热门文章

  1. 大内密探HMM(转)
  2. 【博客之星】坚持,是一种信仰
  3. 【教程】通过lothelper实现短信接收测试
  4. 大型复杂项目集管理之二——项目集治理
  5. MySQL8.0超细致下载安装教程
  6. Chrome安装CRX插件方法
  7. CLIP:多模态领域革命者
  8. android夜间模式监控
  9. QT实现图片缩放的同时标记指定坐标
  10. 流利阅读 2019.2.22 Duke University apologizes over professor’s email asking Chinese students to speak En