Press "Enter" to skip to content

使用神经协同过滤掌握推荐引擎

使用神经协同过滤掌握推荐引擎 四海 第1张

本文是关于使用神经协作过滤(NCF)构建推荐引擎的指南。我们将从推荐引擎的简介开始,详细介绍它们的不同类型,重点关注基于模型的协作过滤,一直到神经推荐引擎的工作原理。为了更加吸引人,我们最后还将通过一个实际的例子来总结。请系好安全带,因为这篇文章很酷。

免责声明 — 本文假设读者已经熟悉推荐引擎和协作过滤。

大纲 —

  1. 推荐引擎及其类型是什么?
  2. 基于模型的协作过滤和NCF
  3. 纯NCF模型的工作算法
  4. 使用NCF创建推荐引擎
  5. 结论

1. 推荐引擎及其类型是什么?

推荐引擎,也被称为推荐系统,是一种为我们提供最有可能观看、购买和消费的内容的引擎或算法等。这些系统在各种在线平台上具有重要的意义,包括电子商务网站、流媒体服务以及社交媒体和内容平台。它们的主要目标是分析用户的偏好和行为,提供定制化的推荐,最终提高用户参与度和满意度。最常见的例子就是像Netflix、Amazon Prime等在线流媒体服务,我们常常在首页上看到“您可能还喜欢”的内容推荐。

推荐引擎的类型:

  • 基于内容的过滤
  • 协作过滤
  • 混合模型

让我们简要了解一下它们:

基于内容的过滤分析用户过去的互动或搜索的项目的特征和特点。通过关注项目属性,这些系统推荐具有类似属性的项目。这种方法主要用于用户基数较少、需要服务的产品较多的情况,即冷启动问题。

协作过滤(CF)通过检查一组用户的偏好和行为来推荐项目。它可以是基于用户的和基于项目的。基于用户的CF识别相似的用户并推荐这些相似用户喜欢的项目,而基于项目的CF则推荐类似于用户之前喜欢的项目。

混合推荐引擎采用集成技术,常常融合基于内容和协作过滤的特点。通过整合各种方法,这些模型旨在克服各自的局限性,提供更准确和多样的推荐。

协作过滤推荐引擎也可以进一步分为基于内存基于模型两种类型。

这两种方法的主要区别在于它们如何确定用户对项目的评级。

  1. 基于内存的协作过滤使用传统方法,通过测量用户/项目之间的相似性(例如,皮尔逊相关系数)然后对评级取加权平均生成用户对项目的评级。
  2. 基于模型的协作过滤使用机器学习或统计模型来学习数据中的模式和关系,然后用于确定用户对项目的评级。

尽管这两种方法都很有趣,但在本文中我们将更深入地研究基于模型的协作过滤,以证明其标题的价值!

2. 基于模型的协作过滤和NCF

简单来说,基于模型的协作过滤是通过基于用户-项目交互来创建模型来进行预测。它使用机器学习或统计模型来学习数据中的模式和关系。让我们深入了解一下。

基于模型的CF倾向于创建用户特征矩阵和物品特征矩阵,这些矩阵是随机初始化的,通过点积和加权生成用户-物品交互评分。这可以在下面的图像中可视化

使用神经协同过滤掌握推荐引擎 四海 第2张

如上图所示,矩阵U和V是用户特征矩阵和物品特征矩阵。这些矩阵是随机初始化的。

  • 用户-物品交互矩阵(R)通常是稀疏的,因为大多数物品未被用户评级。
  • 矩阵U和V进行点积运算,生成用户-物品交互矩阵的预测值。这些预测值将是两个随机矩阵(U和V)的点积的一些随机值。让我们称这个具有随机值的矩阵为R`。
  • 就像我们在传统机器学习中使用优化算法(例如梯度下降)来更新w和b的值以最小化实际输出和预测输出之间的损失一样,在这里也采用类似的方法来通过梯度下降更新矩阵U和V中的值,以最小化R和R`之间的差异。

梯度下降调整这些随机权重的最优值,以最小化预测评分和实际评分之间的差异。

模型学习将权重分配给矩阵U和V中的潜在特征。这些权重捕捉了用户-物品交互数据中的模式和偏好。直到模型收敛为止,这些权重进行优化。然后,学到的矩阵U和V用于预测原始矩阵中的缺失项,并为用户提供个性化推荐。

我们还可以使用用户和物品特征的嵌入层,通过梯度下降在模型训练中学习。

将稀疏用户-物品交互矩阵分解为两个低秩矩阵(U和V)的方法称为矩阵分解。还有其他几种基于模型的CF方法,如:

  • 奇异值分解(SVD)
  • 概率矩阵分解(PMF)
  • 非负矩阵分解(NMF)
  • 分解机(Factorization Machines)
  • 神经协同过滤(NCF)
  • 用于推荐的深度学习模型 – RNN、CNN、Transformer等。

所有这些基于模型的CF方法的要点是学习用户和物品交互的潜在特征模式。其中一些方法只能捕捉线性模式,如矩阵分解、SVD等,而其他方法可以捕捉非线性模式。NCF就是其中之一!

神经协同过滤

神经协同过滤(NCF)利用神经网络的表达能力来建模用户与物品交互中的复杂和非线性关系。尽管传统的协同过滤方法可以捕捉线性模式,但NCF可以使用ReLU等激活函数来捕捉非线性关系。将神经网络结合到协同过滤层中有效地将推荐问题转化为一个使用神经结构的机器学习任务,通常涉及多层感知机(MLP)或深度神经网络。

让我们深入了解NCF模型的构建方式

纯NCF模型的工作算法

在构建传统的协同过滤模型(如矩阵分解)时,我们通常从稀疏的用户-物品交互矩阵开始,然后制作单独的用户和物品潜在特征矩阵U和V,这些矩阵是随机初始化的或通过嵌入创建的。然后,这些特征矩阵进行点积运算生成矩阵R`,然后用于更新矩阵U和V中的值。NCF将MF模型的结构与神经网络结合起来。

典型的NCF模型利用嵌入。该架构可以分解为3层:

  1. 矩阵分解(MF)层 – 为用户和物品嵌入生成点积输出 – R`。矩阵R`捕获用户和物品之间的线性交互。
  2. 神经网络(NN)层 – 通过MLP将连接的用户和物品嵌入生成。MLP层用于捕捉用户和物品之间的非线性交互。
  3. NCF输出层 – 将MF层和NN层的输出合并以生成最终输出。从MF层获得的输出R`与NN层的输出连接起来。这个连接的向量通过一个Dense层传递,生成模型的最终输出。
NCF模型架构

使用多层感知机(MLP)进行训练的唯一目的是捕捉用户和物品的潜在特征之间的非线性交互

这些模型可以进行各种调整,如批归一化、dropout层、Adam优化器等。

现在让我们看一个真实世界的问题陈述,以便更加亲身体验。

4. 使用NCF进行推荐引擎

4.1 问题陈述

我们将使用NCF而不是传统的CF模型来解决通常的电影推荐问题集。类似的问题陈述可在Kaggle、UCI机器学习库等网站上找到。

4.2 数据集

经过过滤和预处理后,数据集如下所示:

使用神经协同过滤掌握推荐引擎 四海 第4张

我们拥有用户ID、电影ID和用户对电影的评分。协同过滤方法只需要用户和物品之间的交互,因为它们不考虑其他用户和物品特征的情况下学习这些交互的模式。因此,对于CF模型或从CF派生的模型(如NCF)来说,我们只需要用户和物品之间的交互,无需其他任何信息。

4.3 用户-电影交互矩阵

使用神经协同过滤掌握推荐引擎 四海 第5张

用户-电影交互矩阵表示用户对电影的评分。由于用户未看过所有电影,因此这是一个稀疏矩阵。

4.4 为建模准备数据

使用神经协同过滤掌握推荐引擎 四海 第6张

由于神经网络仅接受数字输入,我们使用用户ID和电影ID创建了索引。如果用户ID和电影ID以非整数格式或其他格式存在,则这将很有帮助。接下来,我们将数据随机分成80-20比例,生成训练集和验证集。

4.5 模型架构

我们将逐步介绍模型架构:

  1. 定义超参数,如迭代轮数、批大小、学习率和嵌入大小。
  2. 使用Keras层定义模型的输入层。Input
  3. 使用用户和电影嵌入定义MF层。对嵌入进行扁平化处理,并进行点乘以生成相似度得分(传统MF架构)。
  4. 使用用户和电影嵌入定义NN层,对嵌入进行扁平化处理并连接起来,通过多层感知机(MLP)将其作为输入来生成输出。可添加和调整修改,如神经元数量、批归一化和dropout层。
  5. 通过连接来自MF和NN层的输出,定义NCF层。将连接的向量传递给具有单个神经元的稠密层,以生成整个模型的输出。
  6. 使用所选的“MSE”损失和优化器构建和编译模型。

使用神经协同过滤掌握推荐引擎 四海 第7张

4.6 模型训练和评估

使用所需的迭代轮数和批大小训练模型。尝试多种迭代轮数和批大小的组合,以生成最佳结果。

使用神经协同过滤掌握推荐引擎 四海 第8张

使用神经协同过滤掌握推荐引擎 四海 第9张

4.7 进行预测

在成功训练和评估模型之后,对整个数据集进行预测,以获取未评级电影的评分。

使用神经协同过滤掌握推荐引擎 四海 第10张

5. 结论

踏上推荐引擎的旅程,我们将探索一个科技比我们自己更了解我们的世界。神经协同过滤(NCF)不仅仅是一种算法,它是为每个用户量身打造的精心设计之旅。借助NCF的强大能力,推荐不仅仅是建议 – 它们是个性化的邀请,揭示新的激情和体验。在我们告别的时候,让我们拥抱技术进步的喜悦,知道每一个推荐都是在我们数字冒险中引发喜悦的微小火花。

还可以查看以下内容 –

点击概率预测的力量

CPP-推动现代推荐系统、在线广告商等算法的引擎。 这个…

VoAGI.com

逻辑回归的一站式

pub.towardsai.net

支持向量机的一站式

支持向量?机器?为什么奥斯瓦尔德·莫斯利还没有死?

VoAGI.com

Leave a Reply

Your email address will not be published. Required fields are marked *