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

本文涉及的产品
模型训练 PAI-DLC,5000CU*H 3个月
交互式建模 PAI-DSW,每月250计算时 3个月
模型在线服务 PAI-EAS,A10/V100等 500元 1个月
简介: 【推荐系统】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


目录
相关文章
|
1月前
|
机器学习/深度学习 搜索推荐 大数据
深度解析:如何通过精妙的特征工程与创新模型结构大幅提升推荐系统中的召回率,带你一步步攻克大数据检索难题
【10月更文挑战第2天】在处理大规模数据集的推荐系统项目时,提高检索模型的召回率成为关键挑战。本文分享了通过改进特征工程(如加入用户活跃时段和物品相似度)和优化模型结构(引入注意力机制)来提升召回率的具体策略与实现代码。严格的A/B测试验证了新模型的有效性,为改善用户体验奠定了基础。这次实践加深了对特征工程与模型优化的理解,并为未来的技术探索提供了方向。
90 2
深度解析:如何通过精妙的特征工程与创新模型结构大幅提升推荐系统中的召回率,带你一步步攻克大数据检索难题
|
1月前
|
机器学习/深度学习 算法 搜索推荐
django调用矩阵分解推荐算法模型做推荐系统
django调用矩阵分解推荐算法模型做推荐系统
26 4
|
1月前
|
机器学习/深度学习 搜索推荐 TensorFlow
使用Python实现智能电子商务推荐系统:深度学习模型详解
使用Python实现智能电子商务推荐系统:深度学习模型详解
169 4
|
2月前
|
搜索推荐 算法
模型小,还高效!港大最新推荐系统EasyRec:零样本文本推荐能力超越OpenAI、Bert
【9月更文挑战第21天】香港大学研究者开发了一种名为EasyRec的新推荐系统,利用语言模型的强大文本理解和生成能力,解决了传统推荐算法在零样本学习场景中的局限。EasyRec通过文本-行为对齐框架,结合对比学习和协同语言模型调优,提升了推荐准确性。实验表明,EasyRec在多个真实世界数据集上的表现优于现有模型,但其性能依赖高质量文本数据且计算复杂度较高。论文详见:http://arxiv.org/abs/2408.08821
57 7
|
1月前
|
机器学习/深度学习 搜索推荐 算法
推荐系统的矩阵分解和FM模型
推荐系统的矩阵分解和FM模型
20 0
|
5月前
|
机器学习/深度学习 搜索推荐 算法
基于深度学习神经网络协同过滤模型(NCF)的图书推荐系统
登录注册 热门图书 图书分类 图书推荐 借阅图书 购物图书 个人中心 可视化大屏 后台管理
13128 2
基于深度学习神经网络协同过滤模型(NCF)的图书推荐系统
|
4月前
|
机器学习/深度学习 数据采集 搜索推荐
打开黑盒神经网络!港大推出全新会说话的推荐系统大模型XRec,从黑盒预测到可解释
【7月更文挑战第2天】港大研发XRec模型,将可解释性引入推荐系统。XRec结合大型语言模型的语义理解与协同过滤,生成推荐的文本解释,提升透明度。该模型无关设计允许与各类推荐系统配合,增强用户体验。然而,计算资源需求高、数据质量和用户理解能力可能影响其效果。[查看论文](https://arxiv.org/pdf/2406.02377)**
68 11
|
3月前
|
搜索推荐 前端开发 数据可视化
【优秀python web毕设案例】基于协同过滤算法的酒店推荐系统,django框架+bootstrap前端+echarts可视化,有后台有爬虫
本文介绍了一个基于Django框架、协同过滤算法、ECharts数据可视化以及Bootstrap前端技术的酒店推荐系统,该系统通过用户行为分析和推荐算法优化,提供个性化的酒店推荐和直观的数据展示,以提升用户体验。
152 1
|
5月前
|
搜索推荐 算法 小程序
基于Java协同过滤算法的电影推荐系统设计和实现(源码+LW+调试文档+讲解等)
基于Java协同过滤算法的电影推荐系统设计和实现(源码+LW+调试文档+讲解等)
|
5月前
|
搜索推荐 算法 小程序
基于Java协同过滤算法的图书推荐系统设计和实现(源码+LW+调试文档+讲解等)
基于Java协同过滤算法的图书推荐系统设计和实现(源码+LW+调试文档+讲解等)

热门文章

最新文章