IUG-CF论文精读

news2025/1/15 17:29:24

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. 在训练完成后,返回模型的所有参数: 训练完成后,返回模型参数集合 𝛩,这些参数包含了模型的所有学习到的知识。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1618042.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

机器学习(四)之无监督学习

前言: 前面写了监督学习的几种算法,下面就开始无监督啦! 如果文章有错误之处,小伙伴尽情在评论区指出来(嘿嘿),看到就会回复的。 1.聚类(Clustering) 1.1 概述&#xff…

javaWeb-异常处理和事务管理

异常处理 我们的代码出现异常之后,异常会向上抛出,直到抛给Spring框架,会去响应一个错误结果 我们要想处理异常,可以在Controller的方法中去捕获异常,但这样做很繁琐,常常我们会定义一个全局异常处理器来…

每日两题 / 438. 找到字符串中所有字母异位词 238. 除自身以外数组的乘积(LeetCode热题100)

438. 找到字符串中所有字母异位词 - 力扣&#xff08;LeetCode&#xff09; 记录p串每个字符出现次数 维护与p串等长的滑动窗口&#xff0c;记录其中每个字符的出现次数 每次滑动后将当前次数与p串的次数比较即可 class Solution { public:vector<int> findAnagrams(s…

Java——继承与组合

和继承类似, 组合也是一种表达类之间关系的方式, 也是能够达到代码重用的效果。组合并没有涉及到特殊的语法 (诸如 extends 这样的关键字), 仅仅是将一个类的实例作为另外一个类的字段。 继承表示对象之间是is-a的关系&#xff0c;比如&#xff1a;狗是动物&#xff0c;猫是动…

API接口的用途以及接入示例

API接口的主要用途是允许不同的软件系统之间进行通信和数据交换。具体来说&#xff0c;API接口可以用于以下几个方面&#xff1a; 数据传输和交换&#xff1a;API接口可以用于不同系统之间的数据传输和交换&#xff0c;例如将数据从一个系统传递到另一个系统&#xff0c;或者从…

Modbus转Profinet网关接称重设备与工控机通讯

Modbus转Profinet网关&#xff08;XD-MDPN100&#xff09;是一种能够实现Modbus协议和Profinet协议之间转换的设备。Modbus转Profinet网关可提供单个或多个RS485接口&#xff0c;使得不同设备之间可以顺利进行通信&#xff0c;进一步提升了工业自动化程度。 通过使用Modbus转Pr…

Linux加强篇-Vim编辑器

目录 ⛳️推荐 Vim文本编辑器 编写简单文档 配置主机名称 配置网卡信息 配置软件仓库 ⛳️推荐 前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到网站 Vim文本编辑器 在Linux系统中一切都…

嵌入式面试-回答UART

说明&#xff1a; 此文章是在阅读了一些列面试相关资料之后对于一些常见问题的整理&#xff0c;主要针对的是嵌入式软件面试中涉及到的问答&#xff0c;努力精准的抓住重点进行描述。若有不足非常欢迎指出&#xff0c;感谢&#xff01;在总结过程中有些答案没标记参考来源&…

【Camera Sensor Driver笔记】五、点亮指南之Actuator配置

<slaveInfo> actuatorName dw9714v dirver IC 型号 slaveAddress 0x18 i2c write address i2cFrequencyMode FAST i2c 操作频率(400KHz) actuatorType VCM/BIVCM 马达类型 BIVCM&#xff08;中置马达&#xff…

一个小时学习javaScript

1 简介 1.1 什么是javascript JavaScript 是一种广泛使用的编程语言&#xff0c;最初被设计来增加网页的交互性&#xff0c;让用户能够与网页上的元素进行互动。自从1995年被引入以来&#xff0c;JavaScript已经发展成为Web开发中不可或缺的一部分&#xff0c;并且其用途已经…

qdbus

qdbus ## 一些简单的使用<font color red>(重要)QtDBus编程1、创建服务并创建对象2、通过QDBusMessage访问Service3、通过QDBusInterface 访问Service4、从D-Bus XML自动生成Proxy类5、使用Adapter注册Object6、自动启动Service qdbus是对dbus的进一步封装&#xff0c;d…

MS1000TA超声波测量模拟前端

产品简述 MS1000TA 是一款超声波测量模拟前端芯片&#xff0c;广 泛应用于汽车工业和消费类电子。该芯片具有高度 的灵活性&#xff0c;发射脉冲个数、频率、增益及信号阈值 均可配置。同时&#xff0c;接收通道参数也可以灵活配置&#xff0c; 从而适用于不同尺寸容器、不…

qt;lt;等xml|Html转义字符

在写Android布局文件时&#xff0c;左右尖括号<>&#xff0c;括号在XML中没办法直接使用&#xff0c;需要进行转义&#xff0c;收集一些转义符&#xff0c;以便查询使用。 常用表&#xff1a; **对于文章出现的任何问题请大家批评指出&#xff0c;一定及时修改 **可联系…

DOM4标准的事件监听与滚屏优化

EventTarget.addEventListener() 我们在学习addEventListener()时都只是知道它是用来给事件注册事件处理函数的。但是这种描述并不是很准确&#xff0c;MDN上给我们准确的描述了它的定义。EventTarget.addEventListener()方法将指定的监听器注册到EventTarget上&#xff0c;当…

ROS1 驱动USB摄像头 2024年亲测

安装 查看官网文档A ROS Driver for V4L USB Cameras 里面提供了github链接&#xff0c;链接如下&#xff0c;这里要选择develop分支 将这个文件包放到你的工作空间的src目录下&#xff0c;然后回到工作空间编译catkin_make 此时报错no package libv4l2 found 参考stack ov…

SpringCloud知识01

1、数据库创建选择 2、定时任务的实现方式 3、分片原理 4、框架图 5、XXL-Job报错Logback configuration error detected 解决&#xff1a; &#xff08;1&#xff09; <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-bo…

莫名锁表? --- mysql的事务隔离级别

前言 系统响应超时 系统访问数据库特别慢 莫名提示锁等待超时 数据库锁表 事务长时间等锁&#xff0c;直到超时 以上问题都可能是事务锁表导致的 问题 今天测试反馈系统批量处理莫名提示锁等待超时&#xff0c;再次操作查看数据库事务确实存在等锁情况&#xff0c;甚至死锁。…

SpringMVC请求和响应方式

1. SpringMVC的数据响应 1.1 SpringMVC的数据响应方式 页面跳转&#xff1a; 直接返回字符串通过ModelAndView对象返回 回写数据&#xff1a; 直接返回字符串返回对象或集合 1.2 页面跳转 - 直接返回字符串 1.3 页面跳转 - 通过ModelAndView对象返回 1.4 页面跳转 - 传递参数…

ZNS SSD+F2FS文件系统|如何降低GC开销?---1

ZNS出现的背景是什么&#xff1f;ZNS SSD的原理是把namespace空间划分多个zone空间&#xff0c;zone空间内部执行顺序读写。 在ZNS的场景下&#xff0c;不同应用按照Zone配置信息&#xff0c;相应存放业务数据。由于是Host管理数据的摆放和存取位置&#xff0c;会最大程度减少G…

制作识货的商品购买页面(注释加讲解)

在制作此页面时运用了浮动&#xff0c;绝对定位&#xff0c;固定定位&#xff0c;相对定位。这些可以让页面整洁美观。 商品购买页面里有很多的商品可大家观看最上面的搜索栏里可以打字下面的&#xff0c;首页&#xff0c;优惠&#xff0c;识物&#xff0c;登录注册都可以进行…