7种经典推荐算法模型的应用

简介: 7种经典推荐算法模型的应用

1.gif本文调研了推荐系统里的经典推荐算法,结合论文及应用进行分析、归纳并总结成文,既是自己的思考过程,也可当做以后的翻阅手册。


前言

个性化推荐,是指通过分析、挖掘用户行为,发现用户的个性化需求与兴趣特点,将用户可能感兴趣的信息或商品推荐给用户。本文调研了推荐系统里的经典推荐算法,结合论文及应用进行分析、归纳并总结成文,既是自己的思考过程,也可当做以后的翻阅手册。俗话说学而时习之,人的认识过程是呈螺旋式上升的,特别是理论应用到实践的过程,理论是实践的基础,实践能反过来指导人对理论的认识,我相信在将下文所述的算法应用到业务中的实践过程也将刷新我在总结此文时的认识。
个性化推荐系统是一项系统工程,为便于聚焦描述,本文不涉及模型的训练及部署等工程问题,仅对推荐算法原理进行分析和其解决的问题进行总结。
为方便分析,本文取大家购物时常遇到的商品推荐模型的某些特征进行举例:


USER侧特征 ITEM侧特征 交互行为
pk 性别 天猫会员等级 商品价格 销量 是否点击
1 T1 22223 301881 1
2 T3 33333 25651 0


特征可简单分为两类:

  1. 连续特征。如商品价格/销量时长
  2. 类别特征。如性别/天猫会员等级

对于连续的数值特征,可直接在模型中作为数值参与计算(大部分情况下需要进行归一化等处理)。而对于类别特征,一般是不能直接作为数值参与计算的,通常将其进行Hash散列编码或者one-hot编码。
以one-hot编码为例,将以上训练数据进行预处理。

pk 性别男 性别女 天猫会员等级T1 天猫会员等级T3 商品价格 销量 是否点击
1 1 0 1 0 22223 301881 1
2 0 1 0 1 33333 25651 0

预处理之后,可以看到所有的数据已经进行的数值化,可以进行数学运算了。
接下来将介绍各算法模型是如何利用这些数据进行学习的。
LR

 算法原理

逻辑回归LR(Logistic Regression)模型作为经典的机器学习分类模型,以其可解释性强、实现简单、线上高效等优点在线上应用中被大量使用。逻辑回归模型主要有两部分构成:

  1. 线性回归
  2. 逻辑函数

在机器学习中,线性回归模型可记为:

image.png

而逻辑函数使用的为sigmoid函数:

image.png

由(1)和(2)可推出LR模型的数学表达式为

image.png

image.png
 解决的问题

LR是一个基本的回归模型,可以对输入进行一些线性运算得到一个预测的输出值。预测值可以是用户点击某个商品的概率,也可以是用户下单的概率,其含义具体业务具体分析。

FM

 算法原理

FM(Factorization Machine)。LR作为一个基础的回归模型,主要原理是通过对各个特征进行线性加权得到预测值,但是其并没有考虑组合特征对模型的影响,比如一名单身女性在晚上观看李佳琦直播概率显然是大于一名妈妈的,这里面包含的组合特征单身女性-晚上在LR中就体现不到。因此相比LR仅对一阶特征进行建模,FM引入了二阶特征,增强了模型的学习能力和表达能力。FM的数学表达式如下:image.gifimage.png
如果FM仅仅是在模型的表达式上加入了二阶特征,它的应用绝不会这么广泛,只从式(4)中就可以看出表达式上其实相对于LR的改进是很简单的:在模型中引入输入特征两两组合进行乘积就行了。但是这样会引入一个很大的问题:参数的数目直接从个爆炸增长为image.gif个,这对于特征维度动辄上千上万数量级的推荐系统来说是断然不能接受的。
面对这么大的参数矩阵很容易想到将其进行矩阵分解,我们首先观察一下参数矩阵image.png

image.png

image.png  解决的问题

FM通过引入二阶特征实现了模型学习能力及表达能力的提升,并且利用正定矩阵和稀疏矩阵的性质将二阶特征的计算降低至线性复杂度,也因此成为工业界常用的特征工程算法。

FFM

 算法原理

FFM(Field-aware Factorization Machine)。从名字上看,相较于FM, FFM多了一个F,在实现上也是如此。

FFM的数学表达式如下:

image.gifimage.png

image.png

需要说明的是,FM可以看做是FFM的特例:所有特征属于同一个field

 解决的问题

引入field更精准刻画了各维特征之间的关系,通过增大隐向量的数目增强了模型的表达能力。但是由于其隐向量与field有关,其相关计算无法像FM那样化简,在面对特征维度n比较大的情况下,其计算性能容易成为系统瓶颈。

WDL

 算法原理

WDL(Wide & Deep Learning)。其核心思想是结合线性模型(如上文的LR)的记忆能力和DNN模型的泛化能力来提升模型的整体能力。

其网络结构图如下:

image.png

其中包括

  1. wide部分:wide部分是普通的线性模型,其表达式可参见式(1)
  2. deep部分:deep部分由一个3层的神经网络组成。其输入是对原始的稀疏特征(如ID类特征)进行一次embedding后的结果。每一层的公式如下:
  3. 输出:输出部分将线性模型(Wide)和DNN(Deep)模型的输出结果进行加和作为整个模型的loss进行反向传播来完成联合训练。


 解决的问题

结合了线性模型对一阶特征和和深度模型对高阶特征的学习能力来整体提高模型的表达能力。


DeepFM

 算法原理WDL可以看做是LR+DNN,那么DeepFM就可以看做是FM+DNN。相比于WDL做出的改进,DeepFM主要是将WDL中Wide模块由LR替换为了FM。
其网络结构如图所示:
image.png

可以看到相对于WDL其做了以下改进:

  1. 引入FM结构代替LR。完成对一阶二阶特征的学习 避免了WDL中人工特征工程过程。见式(4)。
  2. FM和DNN共享Embedding层。减少了额外的计算开销。

 解决的问题

在减去人工特征工程的前提下,通过Wide部分和Deep部分共享Embedding,可以提高模型的训练速度和模型的特征学习能力。

DcN

 算法原理

DCN(Deep & Cross Network)如其名字中cross所示,其主要完成了完全去手工特征交叉的工作。

其中代替DeepFM中FM模块的核心Cross Network网络结构如下:

image.png

其中:

image.png

进而可推出

image.png

image.png

 解决的问题

完全舍弃了人工特征工程过程,并且可以显示指定特征交叉阶数。

xDeepFM

 算法原理

xDeepFM(eXtreme Deep Factorization Machine)。从名字上可以看出,xDeepFM是是对于DeepFM的改进,但是实际上xDeepFM是对DCN的改进。DCN   的Cross层在Embedding层后,可以自动构造任意阶高阶特征,但是它是bit-wise的,与bit-wise对应的是vector-wise。现举例分析如下:例如,性别对应嵌入向量<a1,a2,a3>,天猫会员等级对应嵌入向量<b1,b2,b3>,在DCN的Cross网络中,向量<a1,a2,a3>,<b1,b2,b3>会拼接为<a1,a2,a3,b1,b2,b3>作为输入,在进行cross的时候a1可能事实上属于同一个field的a2进行cross。因此称DCN以嵌入向量中的单个bit为最细粒度,即bit-wise。而在FM中,特征的交叉是以该维特征对应的向量为最细粒度进行交叉来学习相关性的,即vector-wise。而xDeepFM的动机,正是将FM的vector-wise的思想引入Cross部分。这一点其实特别像one-hot编码的情况下FM到FFM的演进。

xDeepFM中,进行vector-wise特征交叉的结构如下:

image.png

对于每一层的输出

image.gifimage.png

其中image.png

 解决的问题

提出了一种vector-wise的高阶特征交叉方式。

小结

本文以解决问题的思路介绍了推荐系统里的经典算法演进过程,可以看到每种算法的出现都是为了解决某种特定的问题。学术上评价一个算法的好坏大都在于其精度,而在工业界中,更看重的是一个算法精度与性能的trade-off。比如2013年微软在NLP领域提出的双塔模型,被应用到推荐系统后经久不衰,到现在仍然在各大公司推荐系统里发光光热,究其原因:双塔模型上线有多方便/跑的有多快,谁用谁知道...

个性化推荐系统算法的演进相比于CV(计算机视觉)和NLP(自然语言处理)来说并没那么快,这一点从顶会论文数目上可窥一斑。究其原因我个人认为是其所应用的场景所限,个性化推荐本质上是一个人与物的匹配过程,所以使用这套系统的前提是应用场景下要有大量的人和大量的物,场景强绑定的特性提高了其研究门槛。而CV和NLP更像是一个个的基础组件,几十人甚至几人的团队就可在CV或者NLP的某个子任务上做出开创性工作然后将其推广至各个不同的应用场景下。比如CV里鼎鼎大名的YOLO系列,其作者凭一人之力一次次帮助各相关厂商主动升级各家的应用SDK...

资源整理

模型 论文链接 作者 发表时间 工业应用举例
LR \ 过于经典没考证 过于经典没考证 基础模块 应用广泛
FM Factorization Machines 阪大 2010 基础模块 应用广泛
FFM Field-aware Factorization Machines for CTR Prediction 某广告公司 2016 美团DSP(广告平台)
WDL Wide & Deep Learning for Recommender Systems 谷歌 2016 谷歌应用商店app推荐
DeepFM DeepFM: A Factorization-Machine based Neural Network for CTR Prediction 哈工大/华为 2017 美团预计送达时间
DCN Deep & Cross Network for Ad Click Predictions 斯坦福/谷歌 2017 \
xDeepFM xDeepFM: Combining Explicit and Implicit Feature Interactions for Recommender Systems 中科大/北邮/微软 2018 字节短视频推荐

相关文章
|
4月前
|
存储 监控 JavaScript
基于布隆过滤器的 Node.js 算法在局域网电脑桌面监控设备快速校验中的应用研究
本文探讨了布隆过滤器在局域网电脑桌面监控中的应用,分析其高效空间利用率、快速查询性能及动态扩容优势,并设计了基于MAC地址的校验模型,提供Node.js实现代码,适用于设备准入控制与重复数据过滤场景。
217 0
|
3月前
|
机器学习/深度学习 人工智能 JSON
微软rStar2-Agent:新的GRPO-RoC算法让14B模型在复杂推理时超越了前沿大模型
Microsoft Research最新推出的rStar2-Agent在AIME24数学基准测试中以80.6%的准确率超越超大规模模型DeepSeek-R1,展现“思考更聪明”而非“更长”的AI推理新方向。
179 8
微软rStar2-Agent:新的GRPO-RoC算法让14B模型在复杂推理时超越了前沿大模型
|
3月前
|
机器学习/深度学习 传感器 算法
【无人车路径跟踪】基于神经网络的数据驱动迭代学习控制(ILC)算法,用于具有未知模型和重复任务的非线性单输入单输出(SISO)离散时间系统的无人车的路径跟踪(Matlab代码实现)
【无人车路径跟踪】基于神经网络的数据驱动迭代学习控制(ILC)算法,用于具有未知模型和重复任务的非线性单输入单输出(SISO)离散时间系统的无人车的路径跟踪(Matlab代码实现)
244 2
|
3月前
|
运维 监控 JavaScript
基于 Node.js 图结构的局域网设备拓扑分析算法在局域网内监控软件中的应用研究
本文探讨图结构在局域网监控系统中的应用,通过Node.js实现设备拓扑建模、路径分析与故障定位,提升网络可视化、可追溯性与运维效率,结合模拟实验验证其高效性与准确性。
260 3
|
3月前
|
机器学习/深度学习 并行计算 算法
【CPOBP-NSWOA】基于豪冠猪优化BP神经网络模型的多目标鲸鱼寻优算法研究(Matlab代码实现)
【CPOBP-NSWOA】基于豪冠猪优化BP神经网络模型的多目标鲸鱼寻优算法研究(Matlab代码实现)
|
3月前
|
机器学习/深度学习 资源调度 算法
遗传算法模型深度解析与实战应用
摘要 遗传算法(GA)作为一种受生物进化启发的优化算法,在复杂问题求解中展现出独特优势。本文系统介绍了GA的核心理论、实现细节和应用经验。算法通过模拟自然选择机制,利用选择、交叉、变异三大操作在解空间中进行全局搜索。与梯度下降等传统方法相比,GA不依赖目标函数的连续性或可微性,特别适合处理离散优化、多目标优化等复杂问题。文中详细阐述了染色体编码、适应度函数设计、遗传操作实现等关键技术,并提供了Python代码实现示例。实践表明,GA的成功应用关键在于平衡探索与开发,通过精心调参维持种群多样性同时确保收敛效率
|
3月前
|
机器学习/深度学习 边缘计算 人工智能
粒子群算法模型深度解析与实战应用
蒋星熠Jaxonic是一位深耕智能优化算法领域多年的技术探索者,专注于粒子群优化(PSO)算法的研究与应用。他深入剖析了PSO的数学模型、核心公式及实现方法,并通过大量实践验证了其在神经网络优化、工程设计等复杂问题上的卓越性能。本文全面展示了PSO的理论基础、改进策略与前沿发展方向,为读者提供了一份详尽的技术指南。
粒子群算法模型深度解析与实战应用
|
3月前
|
机器学习/深度学习 运维 算法
基于粒子群优化算法的配电网光伏储能双层优化配置模型[IEEE33节点](选址定容)(Matlab代码实现)
基于粒子群优化算法的配电网光伏储能双层优化配置模型[IEEE33节点](选址定容)(Matlab代码实现)
230 0
|
3月前
|
机器学习/深度学习 数据采集 传感器
【WOA-CNN-LSTM】基于鲸鱼算法优化深度学习预测模型的超参数研究(Matlab代码实现)
【WOA-CNN-LSTM】基于鲸鱼算法优化深度学习预测模型的超参数研究(Matlab代码实现)
247 0
|
4月前
|
传感器 算法 定位技术
KF,EKF,IEKF 算法的基本原理并构建推导出四轮前驱自主移动机器人的运动学模型和观测模型(Matlab代码实现)
KF,EKF,IEKF 算法的基本原理并构建推导出四轮前驱自主移动机器人的运动学模型和观测模型(Matlab代码实现)
158 2

热门文章

最新文章