【推荐系统】POLY2、FM、FFM模型的进化之路

本文涉及的产品
交互式建模 PAI-DSW,5000CU*H 3个月
简介: 【推荐系统】POLY2、FM、FFM模型的进化之路

POLY2模型

逻辑回归模型是CTR预测领域较为广泛使用的模型,原因有模型具备可解释性,良好的数学解释性,可以实现并行化提高效率,但是它有个缺点就是不能够捕捉数据的非线性关系,如果非要这样,一般情况下需要人工进行特征交叉,但是这样的成本较大,而且需要有经验的算法专家才能够交叉出好的特征,所以如果可以使用算法进行交叉,那么整个系统的工作效率将大大提高。

所以,这时产生了POLY2模型进行特征的 “暴力” 组合,它的原理很简单,就是将任意两个特征两两交叉,这将会新产生 n ( n − 1 ) 2 \frac{n(n-1)}{2}2n(n1) 个新的组合特征,这是我们的模型预测公式将会变为:

image.png

这个模型之后的工作将是学习各个交叉特征的权重,这在一定程度上解决了特征组合的问题,但POLY2模型本质上仍是线性模型,其训练方法与逻辑回归没有什么区别。

但是这个模型也会有两个缺点:

  • 由于CTR领域的数据一般为稀疏矩阵,存在很多用户和物品没有交互的项,这将会导致这个组合特征的权重无法进行训练,原因是训练集中无数据,导致大部分交叉特征的权重缺乏有效的数据进行训练(原因是训练参数需要对参数进行求导,然后采用梯度下降更新参数,但是那些无交互的特征,由于矩阵中的值全为0,导致对这些参数求导得到的导数为0,导致参数无法训练)
  • 权重的参数的数量由 n nn 直接上升到 n 2 n^2n2 ,极大地增加了训练复杂度。

FM模型

为了解决矩阵稀疏的问题,2010年,Rendle提出了FM模型,它的思想就是对每个特征训练一个隐向量,然后将POLY2中交叉特征的权重替换为这两个特征隐向量的内积,公式为:

image.png

举个例子吧,现在有年龄、爱好、性别三个特征,如果我们使用POLY2,当我们计算年龄-爱好这个新特征的权重时,模型会对其进行求导然后计算这个组个特征的权重,然而FM是会分别对这三个特征列训练一个隐向量,比如我们隐向量是5维,那么当我们计算年龄-爱好这个组合特征的权重时,我们此时只需要将年龄和爱好两个特征对应的隐向量做内积操作,然后将得到的结果作为这个组合特征的权重。

这样做的好处就是能够有效的训练模型参数,即使对于那些为观测到的数据也可以进行参数训练,比如对于【年龄:20,爱好:歌曲】这个特征可能在训练数据中没有,那么如果采用POLY2的方式肯定是无法进行训练的,因为缺少相关数据,但是使用FM他就可以解决这个问题,尽管没有这个数据,但是我们可以使用【年龄:20,性别:男】这个数据进行训练年龄这列的隐向量,然后使用训练好的隐向量在和爱好的隐向量做内积就可以得到年龄和爱好的权重。

POLY2各个交叉特征权重之间是独立的,而FM训练的隐向量相互之间是依赖的,当我们缺乏年龄-爱好这个数据时,可以使用年龄-性别这个数据进行训练年龄的隐向量,其余同理,这就导致各个特征的隐向量都可以训练,而且是相互依赖的。

FM优点:

  • FM引入隐向量的做法,与矩阵分解用隐向量代表用户和物品的做法异曲同工
  • 通过引入隐向量,把POLY2模型 n 2 n^2n2 级别的权重参数数量减少到了 n k nknk ,极大地降低了训练开销

FFM模型

2015年,基于FM提出的FFM在多项CTR预估大赛中夺魁,FFM模型的全称为 Field-aware Factorization Machines。

它的特殊之处在于他引入了特征域的概念,使得模型的表达能力更强,公式如下:

image.png

这个公式和FM的几乎是一样的,只不过是它的权重有所不同,FM的权重是各个特征的隐向量做内积得到的,FFM的权重也是隐向量做内积得到的,但是他和FM不同,FM只为每个特征列训练一个隐向量,而FFM是为每个特征列训练 f ff 个隐向量,其中 f ff 为特征域的个数。

其中特征与可以理解为它将所有的特征进行分类,将一些特征分到一类中,这个类就叫做特征域,引入它的目的是提高模型的表达能力,比如不同的特征之间可能不同,这就需要不同种类的特征相互独立的进行训练隐向量权重,比如现在我们的特征有用户、物品、其它大类,如果是用户类的特征与物品类中的特征做交叉,那么我们就需要使用用户域对物品域的隐向量,如果是用户对其它,那么就使用用户域对其它的隐向量,每个特征都会训练3个隐向量,分别用于与自己同域的特征做交叉,另外两个分别用户和另外两个域的特征做交叉,如果是FM,不需要考虑域,只是将任何两个交叉特征的隐向量做内积,FFM会为每个特征多训练几个隐向量,分别用户与不同种类的向量做交叉,这大大提高了模型的表达能力,从参数上讲这是肯定的,因为模型参数变多了,那么模型能够表达的数据容量也就更大了。

FFM优点:

  • 通过引入特征域的概念,为每个特征训练不同的隐向量,分别用于与不同种类的特征做交叉,提高了模型的表达能力
  • 在有 n nn 个特征, f ff 个特征域,隐向量维度为 k kk ,模型权重的参数变为 n ∗ f ∗ k n*f*knfk


目录
相关文章
|
3月前
|
机器学习/深度学习 搜索推荐 算法
推荐系统离线评估方法和评估指标,以及在推荐服务器内部实现A/B测试和解决A/B测试资源紧张的方法。还介绍了如何在TensorFlow中进行模型离线评估实践。
推荐系统离线评估方法和评估指标,以及在推荐服务器内部实现A/B测试和解决A/B测试资源紧张的方法。还介绍了如何在TensorFlow中进行模型离线评估实践。
194 0
|
2天前
|
数据采集 机器学习/深度学习 搜索推荐
使用Python实现推荐系统模型
使用Python实现推荐系统模型
16 1
|
3月前
|
机器学习/深度学习 搜索推荐 算法
推荐系统算法的研究与实践:协同过滤、基于内容的推荐和深度学习推荐模型
推荐系统算法的研究与实践:协同过滤、基于内容的推荐和深度学习推荐模型
228 1
|
29天前
|
算法 搜索推荐 Python
探索Python中的推荐系统:混合推荐模型
探索Python中的推荐系统:混合推荐模型
45 1
|
10月前
|
机器学习/深度学习 人工智能 移动开发
人工智能领域:面试常见问题超全(深度学习基础、卷积模型、对抗神经网络、预训练模型、计算机视觉、自然语言处理、推荐系统、模型压缩、强化学习、元学习)
人工智能领域:面试常见问题超全(深度学习基础、卷积模型、对抗神经网络、预训练模型、计算机视觉、自然语言处理、推荐系统、模型压缩、强化学习、元学习)
|
10月前
|
机器学习/深度学习 人工智能 自然语言处理
深度学习应用篇-推荐系统[12]:经典模型-DeepFM模型、DSSM模型召回排序策略以及和其他模型对比
深度学习应用篇-推荐系统[12]:经典模型-DeepFM模型、DSSM模型召回排序策略以及和其他模型对比
深度学习应用篇-推荐系统[12]:经典模型-DeepFM模型、DSSM模型召回排序策略以及和其他模型对比
|
10月前
|
存储 搜索推荐 NoSQL
带你读《云存储应用白皮书》之37:3. 表格存储在推荐系统中的应用
带你读《云存储应用白皮书》之37:3. 表格存储在推荐系统中的应用
137 0
|
5月前
|
搜索推荐 算法 前端开发
旅游管理与推荐系统Python+Django网页平台+协同过滤推荐算法
旅游管理与推荐系统Python+Django网页平台+协同过滤推荐算法
147 0
|
3月前
|
搜索推荐 算法 前端开发
美食物管理与推荐系统Python+Django网站开发+协同过滤推荐算法应用【计算机课设项目推荐】
美食物管理与推荐系统Python+Django网站开发+协同过滤推荐算法应用【计算机课设项目推荐】
104 4
美食物管理与推荐系统Python+Django网站开发+协同过滤推荐算法应用【计算机课设项目推荐】
|
4月前
|
搜索推荐 算法 前端开发
商品购物管理与推荐系统Python+Django网页界面+协同过滤推荐算法
商品购物管理与推荐系统Python+Django网页界面+协同过滤推荐算法
67 0