IUG-CF论文精读

Neural collaborative filtering with ideal user group labels

(具有理想用户组标签的神经协同过滤)

论文地址:https://www.sciencedirect.com/science/article/pii/S0957417423023898

摘要:

       人口统计信息是推荐系统(RSs)的关键信息。大多数现有的基于人口统计的RSs关注用户肖像之间的相似性。然而,他们很少结合人口统计数据来描述一个项目,并建立项目和用户之间的联系。在本文中,我们提出了理想用户组(IUG)的概念,作为项目的动态标签。此标签根据其历史客户的人口统计数据指示最适合某项商品的用户。与一般标签(如类型或语言)不同,IUG是随着历史用户人口统计数据的分布而动态变化的,并且是基于经历分裂-组合过程的人口统计信息构建的。为了验证我们方法的有效性,我们提出了一个基于iug的神经协同过滤(IUG-CF)模型。在三个真实数据集上的实验结果表明,IUG是提高推荐性能的有效方法。

关键词:

协同过滤,人口统计信息,理想用户组,神经网络,推荐系统

传统的推荐系统:

基于内容的推荐系统(Content-based RS):

这种方法依据项目的内容特征来生成推荐。它假设用户会喜欢与他们过去喜欢的项目在内容上相似的项目。

例如,如果一个用户喜欢动作电影,基于内容的推荐系统会推荐其他动作电影给这个用户。

内容特征可能包括项目的描述、关键词、类别、导演、演员等。

基于人口统计信息的推荐系统(Demographic-based RS,简称 DRS):

这种方法使用用户的人口统计信息,如年龄、性别、职业、教育水平等,来预测用户的喜好。

它基于一个假设,即具有相似人口统计特征的用户可能有相似的偏好。

例如,年轻用户可能更喜欢流行音乐,而年长用户可能更倾向于古典音乐。

协同过滤(Collaborative Filtering,简称 CF):

协同过滤技术依据用户之间的相似性和项目之间的相似性来生成推荐。

用户基协同过滤发现与目标用户有相似喜好的其他用户,并推荐这些用户喜欢但目标用户尚未发现的项目。

项目基协同过滤则是寻找与用户过去喜欢的项目相似的项目,并推荐给用户。

协同过滤面临的一个主要问题是冷启动问题,即新用户或新项目缺乏足够的交互数据。

混合推荐系统(Hybrid RS):

混合推荐系统结合了以上提到的多种推荐技术,以提高推荐的准确性和覆盖范围。

它可以同时考虑用户的内容偏好、人口统计信息、以及其他用户的交互数据。

通过整合不同方法的优势,混合推荐系统能够提供更全面和个性化的推荐,同时减少单一方法可能带来的偏差和局限性。

IUG-CF

虽然年龄、性别和职业等人口统计信息有助于做出个性化的推荐,但重要的是要认识到,仅仅依靠人口统计信息可能导致有偏见的推荐,并使陈规定型观念长期存在。大多数现有的方法侧重于利用用户和项目标签之间的关系来进行预测。这种预测通常基于这样的假设:如果用户过去喜欢过带有类似标签的物品,那么他们很可能会喜欢当前的物品。相比之下,我们采用不同的方法,使用用户信息来描述项目。

传统方法vs我们的方法

在 (a) 中,电影通过类型(genre)、语言(language)和其他信息来描述。而在 (b) 中,电影被描述为最适合具有某些人口统计特征的用户组。这表明作者的方法侧重于使用用户信息来描述项目(如电影),并根据用户与理想用户组(IUG)的匹配程度来确定用户行为,而不是仅仅基于用户对项目的偏好。

IUG的动态构建

为了构建IUG,我们首先根据每个人口统计属性(如性别、职业等)分离用户组。接下来,我们根据历史评分记录计算每个组的平均评分,并使用贝叶斯平均来解决某些用户组成员较少但偏好较强的问题。然后,我们比较每个项目在不同人口统计数据中的受欢迎程度,并将该组对应的人口统计值与每个属性的最大平均评级相结合,以获得IUG的人口统计数据。我们强调IUG是“构建的”和“动态的”。

推荐流程示例

这张图是一个简化的示例,用于说明如何为用户生成个性化的推荐列表。

1.用户人口统计信息:系统首先考虑用户的人口统计信息,如年龄、性别、职业等。

2.构建理想用户组 (IUG):根据历史上与项目互动的用户群体的人口统计数据,构建一个理想的用户组,代表最适合推荐该项目的典型用户特征。

3.用户与 IUG 的匹配:系统将用户的人口统计特征与项目的 IUG 进行比较,以评估用户可能对该项目的偏好。

4.生成推荐列表:系统根据用户与各个项目 IUG 的匹配程度,计算出一个偏好分数,并基于这些分数为用户生成一个排序的推荐列表。

IUG-CF模型

IUG-CF 模型的流程可能包括以下几个关键步骤:

1.用户-项目交互数据:模型使用用户与项目的交互数据,如评分或观看记录,作为输入。

2.构建 IUGs:对于每个项目,基于历史用户数据中的人口统计信息,构建一个理想用户组(IUG),IUG 描述了最适合推荐该项目的用户群体特征。

构建 IUGs(理想用户组)
  1. 用户组的划分:基于每个人口统计属性(如性别、职业等),将用户分成不同的组。

  2. 计算平均评分:对每个组别,根据历史评分记录计算该项目的平均评分。

  3. 应用贝叶斯平均:为了解决某些用户组可能成员较少但偏好较强的问题,使用贝叶斯平均方法来调整平均评分,确保每个人口统计属性的评分更加公平和有代表性。

  4. 确定最受欢迎的人口统计属性:通过比较不同人口统计属性下项目的平均评分,找出对应于每个属性的最大平均评分对应的人口统计值。

  5. 构建 IUG:将这些最受欢迎的人口统计值组合起来,形成该项目的 IUG。IUG 代表了对该项目最感兴趣的理想用户群体的特征。

3.用户和项目的嵌入表示:使用嵌入技术将用户和项目映射到低维空间,以捕捉它们的特征和交互关系。

4.计算偏好分数:通过嵌入表示和神经网络,模型计算用户对项目的偏好分数。

计算偏好分数
  1. 嵌入技术:使用嵌入技术将用户和项目映射到低维空间中,以表示它们的特征。每个用户和项目的人口统计信息也被编码为嵌入向量。

  2. 元素级乘积和激活函数:对用户和 IUG 的嵌入向量执行元素级乘积,并通过 sigmoid 激活函数来累加结果,以模拟用户和 IUG 之间的潜在关系。

  3. 多层感知器(MLP):为了捕捉用户和项目之间的非线性交互,使用一个标准的 MLP 网络来学习它们之间的复杂关系。MLP 通过隐藏层中的 ReLU 激活函数和输出层的 sigmoid 函数来计算用户对项目的偏好分数。

  4. 调整偏好分数:通过计算用户与 IUG 之间的相似度(例如,使用曼哈顿距离),并根据相似度调整偏好分数,使得与 IUG 更匹配的用户获得更高的偏好分数。

  5. 损失函数和优化:定义一个损失函数,用于在训练过程中最小化模型预测的偏好分数与实际交互之间的差异。使用优化算法(如 Adam)来更新模型参数,以提高预测的准确性。

5.生成推荐列表:根据计算出的偏好分数,为每个用户生成个性化的推荐列表。

伪代码

  1. 初始化模型参数集合 𝛩: 这一步是算法开始之前进行的,确保所有的模型参数都被正确地设置为初始值,这些值可以是随机的,也可以是预先设定的。

  2. 循环遍历所有项目: 这一步意味着对数据集中的每个项目进行处理,以便为它们构建 IUG。

  3. 循环遍历项目的每个人口统计属性: 这一步是针对每个项目,遍历所有可能的人人口统计属性(例如性别、年龄、职业等)。

  4. 循环遍历属性的所有可能值: 这一步是针对每个属性,遍历该属性下所有可能的值(例如性别属性下的“男”和“女”)。

  5. 使用贝叶斯平均公式和给定的参数计算项目在属性值下的平均评分: 这一步通过贝叶斯平均来计算每个项目在特定人口统计属性值下的平均用户评分,这有助于处理数据稀疏性问题。

  6. 结束对属性值的循环: 这一步结束了对当前人口统计属性的所有值的遍历。

  7. 结束对人口统计属性的循环: 这一步结束了对项目的所有人口统计属性的遍历。

  8. 通过公式 (3) 到 (6) 来生成项目的 IUG: 在这些步骤中,计算每个属性的平均评分向量,并基于这些评分向量来识别最受欢迎的属性值集合,即 IUG。

  9. 结束对项目的循环: 这一步结束了对所有项目的遍历,此时所有项目的 IUG 都应该已经生成完毕。

  10. 创建一个包含所有项目 IUG 的集合 V′: 这一步创建了一个集合,其中包含了数据集中所有项目的 IUG。

  11. 开始训练循环,迭代 Epochs 次: 训练循环是模型学习过程中的核心,通常迭代一定的次数或直到模型收敛。

  12. 使用调整后的偏好分数公式(公式 7 到 10)和 IUG 集合 V′ 以及用户的人口统计信息来计算用户对项目的偏好分数: 这一步计算用户对每个项目的偏好分数,这是基于用户和项目的人口统计信息以及项目的 IUG。

  13. 使用正则化项公式(公式 14)和 IUG 集合 V′ 以及用户的人口统计信息 D 来计算用户的正则化项: 正则化项用于鼓励模型生成与 IUG 更接近的用户嵌入,提高推荐的准确性。

  14. 使用损失函数公式(公式 15)和计算出的偏好分数、正则化项以及学习率来计算损失: 损失函数衡量了模型预测的偏好分数与实际交互数据之间的差异,并通过正则化项来防止过拟合。

  15. 使用 Adam 优化器和学习率 𝜁 来更新模型参数,以最小化损失函数: Adam 优化器是一种流行的梯度下降算法,用于根据损失函数的梯度来更新模型参数。

  16. 结束训练循环: 这一步结束了模型的训练过程。

  17. 在训练完成后,返回模型的所有参数: 训练完成后,返回模型参数集合 𝛩,这些参数包含了模型的所有学习到的知识。

相关推荐

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-04-23 10:38:04       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-04-23 10:38:04       100 阅读
  3. 在Django里面运行非项目文件

    2024-04-23 10:38:04       82 阅读
  4. Python语言-面向对象

    2024-04-23 10:38:04       91 阅读

热门阅读

  1. 面试经典150题——加油站

    2024-04-23 10:38:04       35 阅读
  2. RabbitMQ:消息队列的卓越之选

    2024-04-23 10:38:04       34 阅读
  3. kubernetes中的静态POD

    2024-04-23 10:38:04       43 阅读
  4. kitti2bag,py 报错

    2024-04-23 10:38:04       59 阅读
  5. P8739 [蓝桥杯 2020 国 C] 重复字符串

    2024-04-23 10:38:04       32 阅读
  6. hive通过正则过滤其他字段

    2024-04-23 10:38:04       39 阅读
  7. 数学分析复习:洛必达法则、泰勒公式

    2024-04-23 10:38:04       40 阅读
  8. AntD上传文件 结合Axios 服务端由Spring MVC接收

    2024-04-23 10:38:04       31 阅读
  9. Hive第二篇HQL

    2024-04-23 10:38:04       37 阅读
  10. Hive第一篇简介

    2024-04-23 10:38:04       30 阅读
  11. 7、docker 集群

    2024-04-23 10:38:04       36 阅读
  12. 数仓建模—维度建模之维度表

    2024-04-23 10:38:04       39 阅读