推荐系统总结(交替最小二乘法、LightFM、神经网络矩阵分解和神经协同过滤)

简介: 在社交媒体网络上,有大量的半结构化数据。该任务的数据集是从在线照片共享社交媒体网络 Flickr 收集的。Flickr 允许用户分享照片并相互交流(朋友)。目标是向访问此社交媒体平台的大量数据的每个用户推荐对象(图片)列表。训练数据集包含一组用于构建推荐系统的用户和项目(照片)之间的交互,包含评分基本事实的验证数据用于决定最终模型。除测试数据外,其余数据集不用于分析。

image.png

一、简介

在社交媒体网络上,有大量的半结构化数据。该任务的数据集是从在线照片共享社交媒体网络 Flickr 收集的。Flickr 允许用户分享照片并相互交流(朋友)。目标是向访问此社交媒体平台的大量数据的每个用户推荐对象(图片)列表。训练数据集包含一组用于构建推荐系统的用户和项目(照片)之间的交互,包含评分基本事实的验证数据用于决定最终模型。除测试数据外,其余数据集不用于分析。

2.推荐系统

明确的反馈是在特定范围内排名的评级。大多数尺度范围从 1 到 5。隐式反馈以不同的形式收集,例如,浏览、屏幕时间、点击、反应、查看等,而显式反馈是评级。当用户对一件事的评价高于另一件事时,它表达了他们的偏好。另一方面,隐式反馈隐含在用户的行为中。“如果用户频繁地点击/查看/花时间/对某个项目做出反应,则表明他/她感兴趣”,这是隐式反馈的基本思想。

显式反馈很简单,因为用户的评价可以很容易地理解为用户的偏好,从而使系统的预测更具相关性。然而,它远不如隐式反馈常见,因为用户不方便对与他们交互的所有内容进行评分(他们很少这样做)。大量的隐式输入很容易收集。在这种情况下,评级列可以被视为隐式反馈,因为它表示用户是否与该项目进行了交互。训练数据仅包含 1,表示所有可能的用户和项目组合都有交互。因此,我们将使用基于隐式的推荐系统作为初始模型。

2.1 矩阵分解

矩阵分解将一个大矩阵分解为两个较小的矩阵,其乘积等于原始矩阵。交替最小二乘法是一种矩阵分解,可将此用户-项目矩阵的维数减少到相当少的潜在或隐藏属性。它以一种非常有效的计算方式这样做。

2.1.1 交替最小二乘法(ALS)

备用最小二乘法是一种迭代优化过程,其中每次迭代旨在创建原始数据的良好分解表示。让我们考虑一个大小为uxi的矩阵R,其中u代表用户,i代表一个项目。这个想法是生成一个表示为ux f的矩阵 U,其中f表示隐藏的特征,以及一个表示为fx i的矩阵V。矩阵U和V包含用户和项目与每个特征的关联方式的权重。因此,如上所述,想法是计算 UV使得 (Victor, 2018)。

UV中的值是使用最小二乘法随机分配的,并且经过几次迭代,实现了产生 R 最佳近似值的最优化权重。对于交替最小二乘法,使用了类似的想法,但迭代优化 U 保持 V 固定,反之亦然。解决方案是合并对具有置信度c的项目的偏好p ,其中用户u对项目i的偏好定义如下,其中 𝑟ᵤᵢ——用户 𝑢 对项目 𝑖 未观察到的值(Hu et al. 2008)。

image.png

**公式 **1.偏好计算。图片由作者使用 Jupyter 和 Latex 准备。

这些信念与不同的置信水平相关联。𝑝ᵤᵢ 的 0 值与低置信度相关。用户没有对某个项目采取积极的行动可以归因于除他们不喜欢它之外的多种因素。同样,如果一个项目被消费了,它并不一定表明用户对它的偏好。

image.png

**图 1.**说明了用于 ALS 模型的成本函数。图片由作者使用 MS Word 制作。包括围绕成本函数和正则化的讨论快照以表示相关公式。

2.1.2 模型评价指标

Normalized Discounted Cumulative Gain (NDCG) ——使用以下断言衡量推荐质量(Mhaskar,2015):

  • 大多数相关结果比部分相关结果更有用,排名结果独立于归一化
  • 如果相关结果在推荐列表中的位置更高,则相关结果更有用

image.png

公式 2. NDCG 计算。图片由作者使用 Jupyter 和 Latex 准备。

折扣累积增益 (DCG) ——在推荐列表中出现较低的相关文档受到惩罚,因为分级相关值与结果位置呈对数比例降低(Mhaskar,2015)。

image.png

公式 3. DCG 计算。图片由作者使用 Jupyter 和 Latex 准备。

Validation Items Classified correctly in Top 15 Recommendations - 验证数据的想法是检查 ALS 模型推荐的前 15 个项目(在训练数据上训练)在使用用户和项目 ID 来自验证数据时是否包含以下项目用户与来自验证数据的基本事实进行交互。在验证数据中,每个用户至少与一个项目有一次交互。因此,对于每个用户 ID,我们取推荐项目 ID 和真实值 = 1 的项目 ID 的交集,然后计算交集不为 0 的用户数量。我们可以考虑一个具有更高正确率的模型从验证数据预测交互作为最佳模型。

2.1.3 ALS 的超参数调整和输出

在模型训练中使用不同的因素组合(5、10、12、15、20)正则化(0.1)和 alpha(10、15、20 和 25)值,然后在验证数据上进行测试以分析 NDCG 和校正物品的分类。结果在下面的图 1 和图 2 中提供。测试了 24 种不同的超参数组合(例如,下图中的 x 轴表示因子 - 正则化 - alpha)。

image.png

图 2。从超参数的验证数据中正确推荐得分最高的 15 个项目。NDCG 得分最高的前三个参数用于生成测试建议并在 Kaggle 上进行验证。

image.png

图 3。来自具有前 15 个分数的超参数的验证数据的推荐项目的 NDCG 分数。

2.2 光调频

Light FM 是一个用于隐式和显式反馈的开源推荐系统。使用 LightFM 创建的嵌入可以对有关特征的有用语义信息进行编码,这些信息可用于推荐任务。LightFM 模型的结构考虑了以下因素:

该模型能够使用交互数据学习用户和项目表示。如果用户喜欢不止一种物品,例如薯片和可乐,模型必须知道这两种物品是相似的。针对新用户和项目的模型扫描计算建议(Maciej & Lyst,2015)

欢迎使用 LightFM 的文档!- LightFM 1.16 文档OSX 和 Windows 用户注意事项:LightFM 默认情况下不会在 OSX 和 Windows 上使用 OpenMP,因此所有模型拟合...making.lyst.com

image.png

**图 4.**说明了用于 LightFM 模型的目标函数。图片由作者使用 MS Word 制作。包括围绕优化目标函数的讨论快照以表示相关公式。

LightFM 有四种损失函数;Logistic 损失函数、BPR 或贝叶斯个性化排名成对损失。WARP 或加权近似秩成对损失和 k-OS WARP 或 k 阶统计损失。

下表 1 给出了 LightFM 模型在训练数据上的输出(Kula,2016)。

image.png

**表 1.**在训练数据上使用 BPR、WARP 和 k-OS WARP 的模型验证指标和相应分数。

2.3 神经网络矩阵分解

矩阵分解将用户和项目描述为潜在特征的向量。这些特征被投射到一个共享的特征空间中,并从项目评级模式中推断出来。如果项目和用户之间的对应关系很高,则考虑向量qᵢ ε Rᶠ 。对于给定的项目i , qᵢ的元素衡量项目使用这些因素的程度和程度。如果我们考虑用户u,则pᵤ衡量用户对相应因素高的项目的兴趣程度。qᵢᵗ.pᵤ的点积捕获了用户和物品的交互——用户对物品特征的整体兴趣。用户u对项目i的评分由rᵤ __表示,它等于qᵢᵗ.pᵤ。为了学习因子向量 ( pᵤ & q ᵢ),已知评级集上的正则化平方误差被最小化 (Koren et al., 2009)。

image.png

**公式 4.**误差函数。图片由作者使用 Jupyter 和 Latex 准备。

image.png

**图 5.**说明了使用神经网络的矩阵分解模型的训练函数。图片由作者使用 MS Word 制作。包括围绕优化目标函数的讨论快照以表示相关公式。

2.4 神经协同过滤

神经协同过滤 (NCF) 捕获用户和项目之间的交互。NCF使用多层模型来学习用户和物品的交互功能。输入由用户u (vᵤ)和项目i (vᵢ)的稀疏特征向量组成,输出表示为(yᵤ )=f(pᵤ,q ). 输入向量可以包括分类变量,例如属性或上下文,而不仅仅是用户或项目。嵌入层由用户和项目潜在向量组成。神经协同过滤层由多个隐藏层组成,其中连接了用户和项目潜在向量。这遵循以 ReLU 作为激活函数的多层感知器层,最后是输出层。多层感知器使用非线性函数来学习其中潜在因素不是独立的交互,并且交互函数是使用具有更好表示能力的数据来学习的。

image.png

图 6. NCF 框架示例。该图摘自何湘南的介绍,并由作者重新设计。

image.png

**公式 5.**神经网络架构。图片由作者使用 Jupyter 和 Latex 准备。

image.png

图 7 使用 NN 的不同模型训练损失 20 个时期。

对于使用 Pytorch 的神经网络模型,使用不同的权重值、学习率、时期和权重衰减来检查模型性能的改进。

17.6. 用于个性化排名的神经协同过滤 - 深入学习......本节超越显式反馈,介绍神经协同过滤(NCF)框架......d2l.ai

3.模型比较

下表(表 2)提供了不同模型及其推荐准确性的概要。

image.png

**表 2.**说明了实施的模型、它们的用例和验证指标。

4。结论

从分析中可以得出以下结论:

  1. 具有超参数因子、alpha、正则化为 10、20 和 0.1 的隐式 ALS 模型为验证和测试数据生成最佳 NDCG
  2. 使用神经网络 (NN) 和神经协同过滤的矩阵分解 (MF) 的输出被认为很差
  3. NN 模型容易受到初始权重、正则化、学习率和权重衰减的影响,需要更多微调才能获得更好的输出
  4. 使用 NN 向 MF 添加偏差可提高模型性能。这可以归因于模型更好的泛化能力,使其能够捕获观察到的信号。有偏见的 MF 可以受益于对用户行为的洞察
  5. MF 的内积函数选择会限制模型的表达能力,较高的潜在因子会降低泛化能力
  6. He 等人在 2017 年进行的一项研究表明,如果堆叠更多的非线性层,更深的网络模型可以产生良好的性能。然而,当添加太多层时,优化困难会减少改进
  7. Neural Collaborative Filter 模型观察到由于线性层的堆叠导致性能下降

具有最高 NDCG 验证分数的隐式 ALS 模型在训练和验证数据上一起重新训练。用户和交互项从验证数据中保留下来,并添加回训练数据中。然后使用上述参数的 ALS 模型(隐式 ALS — 因子 = 10,reg = 0.1,alpha = 20)用于生成最终推荐。更多的数据会带来更好的测试集性能。

目录
相关文章
|
5月前
|
数据采集 搜索推荐 算法
实战基于矩阵分解的推荐系统
实战基于矩阵分解的推荐系统
|
6月前
|
搜索推荐 算法 前端开发
旅游管理与推荐系统Python+Django网页平台+协同过滤推荐算法
旅游管理与推荐系统Python+Django网页平台+协同过滤推荐算法
149 0
|
4月前
|
搜索推荐 算法 前端开发
美食物管理与推荐系统Python+Django网站开发+协同过滤推荐算法应用【计算机课设项目推荐】
美食物管理与推荐系统Python+Django网站开发+协同过滤推荐算法应用【计算机课设项目推荐】
106 4
美食物管理与推荐系统Python+Django网站开发+协同过滤推荐算法应用【计算机课设项目推荐】
|
4月前
|
机器学习/深度学习 搜索推荐 算法
推荐系统算法的研究与实践:协同过滤、基于内容的推荐和深度学习推荐模型
推荐系统算法的研究与实践:协同过滤、基于内容的推荐和深度学习推荐模型
237 1
|
5月前
|
搜索推荐 算法 前端开发
商品购物管理与推荐系统Python+Django网页界面+协同过滤推荐算法
商品购物管理与推荐系统Python+Django网页界面+协同过滤推荐算法
67 0
|
5月前
|
搜索推荐 算法
音乐推荐系统协同过滤算法解释
音乐推荐系统协同过滤算法解释
59 1
|
5月前
|
机器学习/深度学习 搜索推荐 数据可视化
PyTorch搭建基于图神经网络(GCN)的天气推荐系统(附源码和数据集)
PyTorch搭建基于图神经网络(GCN)的天气推荐系统(附源码和数据集)
94 0
|
5月前
|
搜索推荐 算法 前端开发
职位招聘管理与推荐系统Python+Django网页界面+协同过滤推荐算法
职位招聘管理与推荐系统Python+Django网页界面+协同过滤推荐算法
112 0
|
5月前
|
搜索推荐 算法 前端开发
汽车租聘管理与推荐系统Python+Django网页界面+协同过滤推荐算法
汽车租聘管理与推荐系统Python+Django网页界面+协同过滤推荐算法
53 2
汽车租聘管理与推荐系统Python+Django网页界面+协同过滤推荐算法
|
7月前
|
搜索推荐 算法 前端开发
果蔬购物商城管理与推荐系统Python+Django网页界面+协同过滤推荐算法
果蔬购物商城管理与推荐系统Python+Django网页界面+协同过滤推荐算法
82 0

热门文章

最新文章