推荐算法(基于用户/物品的协同过滤算法)

news2025/1/11 2:37:52

1.1 推荐算法概述

        信息过载的时代。信息消费者面临的问题是如何收集到自己感兴趣的信息。对于信息生产者来说,高效地把信息推送给感兴趣的信息消费者,而不是淹没在信息互联网的海洋之中,也非常困难。 如何从大量的数据信息中获取有价值的信息成为关键问题。 由此,推荐系统便应运而生,得到了广泛的应用。

推荐流程示意:

推荐系统首先收集、处理客户的数据,通过分析客户的特征,为客户推荐最合适的商品。

1.1.1常见评价指标

  1. 用户信任度
  2. 预测准确度
  3. 覆盖率
  4. 多样性  
  5. 实时性

1.1.3 推荐系统面临的挑战

1.冷启动问题

冷启动问题主要分为三类:

  • 用户冷启动:指新用户情况下,如何给新用户做个性化推荐的问题。
  • 系统冷启动: 指新系统情况下,只有物品的信息没有用户及行为,如何进行推荐。
  • 物品冷启动:指新物品情况下,如何将新推出的物品推荐给可能的感兴趣用户。
2.多目标优化问题

        影响推荐系统性能的因素非常多,因此推荐系统可以看作一个多目标优化问题。怎样能综合考虑这些繁杂的影响因素,达到理想的推荐效果,也是一个有挑战的问题。

3.多源的异构数据

        推荐系统的数据来自于各种数据源、各种格式,例如用户信息、物品信息、用户和用户的关系,以及用户和物品的关系。数据源还经常是异构的,存在文字、网页、图片、声音、视频等丰富的格式。内容的多源和异构性都是需要解决的问题。

4.时效问题 

        像新闻这样的产品,有时效性要求。另一方面,用户的兴趣会改变,要进行跟踪更新。

1.1.4 常见的推荐算法

        随着推荐系统的广泛应用,推荐算法也不断发展。目前来说,推荐算法可以粗略分为几个大类:

  1. 协同过滤推荐算法
  2. 基于内容的推荐算法
  3. 基于图结构的推荐算法
  4. 混合推荐算法。

1.2 协同过滤推荐算法

        协同过滤(Collaborative Filtering,CF)概念是1992年提出的,并被GroupLens在1994年应用在新闻过滤中。 目前的协同过滤推荐算法可以按数据维度分为两类:

  1. 基于用户的协同过滤算法。
  2. 基于物品的协同过滤算法。

1.2.1基于用户的(user-based)协同过滤算法

        在日常交往中,可以观察一个人的朋友们的喜好,借此推测这个人的兴趣偏好,从而为他推荐他可能喜欢的内容。基于协同过滤的算法就是基于这个想法。首先使用特定的方式找到与一个用户相似的用户集合,即他的“朋友们”。分析这些相似用户的喜好,将这些“朋友们”喜欢的东西推荐给该用户。

        算法流程如图所示:

        下面对算法流程进行详细介绍。

        首先,系统需要采集用户、项目的相关数据,构建一个用户-物品评分矩阵,例如如下表所示的信息矩阵。

        接下来,要计算用户和用户之间的相似度。相似度根据距离计算,如欧式距离、余弦距离等。假设用户数据为N维的,则用户U和用户V 两个向量的欧式距离为:

        欧式距离得到的结果是一个非负数,最大值是正无穷。显然,距离越大相似度越小,即相似度与距离负相关。另外,为方便使用,通常希望相似度值是在某个具体范围内。所以,可以将上面的欧氏距离进行变换,转换到(0,1]。

        余弦相似度也是经常使用的相似度度量方法,它计算的是两个向量之间夹角的余弦值。余弦相似度的结果范围为[一1,1]。仍然使用上面假设的N维的用户数据,则用户U和用户v 两个向量的余弦相似度如下。

        对于每个候选物品i,用户U对它感兴趣的程度f(u,i)可以通过其他用户的喜欢程度与用户间的相似度来计算,公式如下。

其中:

  • P(u,k):与用户U最相似的前k个用户的集合。
  • N(i):喜欢物品i的用户集合(i一般为用户U未喜欢过的物品)。
  • v:与用户U最相似的前k个用户集合中,喜欢过物品i的用户。
  • sim_uv:用户U和用户V的相似度。
  • r_vi:用户V对物品i的喜欢程度。

        下面使用例子进行详细讲解。在某个电子商务平台上,收集到的用户对物品的评价结果数据如表所示。下面对用户 U1,提取两个相邻用户(k=2)的历史偏好,预测用户U1对12物品的评分。

 1.2.2基于物品的(item-based)协同过滤算法

        算法基于以下假设,同一个用户对相似项目的评分存在相似性。当测算用户对某不项目的评分时,可以根据用户对若干相似项目的评分进行估计。
        例如,喜欢看电影的小明,对影片《少林寺》《醉拳》和《一代宗师》的评价比较高,由于电影《叶间》与上述电影的相似度较高,那么影片《时间》很可能是他感兴趣的。
        基于物品的协同过滤算法的想法本质上与基于用户的协同过滤算法类似,可以使用前文介绍的用户相似度公式计算项目间的相似度。相似度与预测的计算过程都类似。 预测某个用户U对某个项目i的评分r_ui的计算如下:

其中:

  • r_vi:用户V对物品i的喜欢程度。
  • G(i,k):与物品i最相似的前k个物品集合。
  • N(u):U喜欢过的物品集合。
  • j:与物品i最相似的前k个物品集合中,用户喜欢过的物品。
  • sim_ij:物品i和物品j的相似度。 

        基于物品的协同过滤推荐算法原理上和基于用户的协同过滤推荐算法类似,只是在计算邻居时采用物品作为对象,而不是从用户的维度。将所有用户对某个物品的喜欢程度作为一个向量,计算物品之间的相似度,得到某物品的相似物品。然后,根据用户历史的评价数据,预测当前用户对没评价过的物品的评分,对物品排序后作为推荐。

        基于下表的数据,使用基于物品的协同过滤推荐算法,计算用户U2对物品I2的评分。

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

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

相关文章

【PCIE常见面试问题-1】

PCIE常见面试问题-1 1 PCIE概述1.1 PCI为何发展开PCIE?1.2 什么是Root Complex(RC)1.3 什么是EP?1.4 什么是Swith1.5 PCIE协议如何组织通信的?1.6 简要介绍一下PCIE的分层结构,为什么需要分层?1.7 PCIE的事务类型有哪些…

Easyexcel(5-自定义列宽)

相关文章链接 Easyexcel(1-注解使用)Easyexcel(2-文件读取)Easyexcel(3-文件导出)Easyexcel(4-模板文件)Easyexcel(5-自定义列宽) 注解 ColumnWidth Data…

C++进阶:哈希表实现

目录 一:哈希表的概念 1.1直接定址法 1.2哈希冲突 1.3负载因子 1.4实现哈希函数的方法 1.4.1除法散列法/除留余数法 1.4.2乘法散列法 1.4.3全域散列法 1.5处理哈希冲突 1.5.1开放地址法 线性探测 二次探测 ​编辑 双重散列 1.5.2链地址法 二.代码实现 2.1开放地址…

汽车资讯新趋势:Spring Boot技术解读

5系统详细实现 5.1 管理员模块的实现 5.1.1 用户信息管理 汽车资讯网站的系统管理员可以管理用户,可以对用户信息修改删除审核以及查询操作。具体界面的展示如图5.1所示。 图5.1 用户信息管理界面 5.1.2 汽车品牌管理 系统管理员可以汽车品牌信息进行添加&#xf…

EdgeNeXt:面向移动视觉应用的高效融合CNN-Transformer架构

摘要 https://arxiv.org/pdf/2206.10589 为了追求更高的准确性,通常会开发大型且复杂的神经网络。这些模型需要高计算资源,因此无法部署在边缘设备上。构建资源高效通用网络在多个应用领域都非常有用,因此备受关注。在本研究中,我…

udp_socket

文章目录 UDP服务器封装系统调用socketbind系统调用bzero结构体清0sin_family端口号ip地址inet_addrrecvfromsendto 新指令 netstat -naup (-nlup)包装器 的两种类型重命名方式包装器使用统一可调用类型 关键字 typedef 类型重命名系统调用popen UDP服务器封装 系统调用socket …

Spring Boot教程之五:在 IntelliJ IDEA 中运行第一个 Spring Boot 应用程序

在 IntelliJ IDEA 中运行第一个 Spring Boot 应用程序 IntelliJ IDEA 是一个用 Java 编写的集成开发环境 (IDE)。它用于开发计算机软件。此 IDE 由 Jetbrains 开发,提供 Apache 2 许可社区版和商业版。它是一种智能的上下文感知 IDE,可用于在各种应用程序…

高效高质量SCI论文撰写及投稿流程及策略丨从论文选题、文献调研、实验设计、数据分析、论文结构及语言规范等重要环节

科学研究的核心在于将复杂的思想和实验成果通过严谨的写作有效地传递给学术界和工业界。对于研究生、青年学者及科研人员,如何高效撰写和发表SCI论文,成为提升学术水平和科研成果的重要环节。本教程旨在帮助学员系统掌握从选题到投稿的全过程&#xff0c…

Mac下的vscode远程ssh免密码登录

Mac下的vscode远程ssh免密码登录(同理可迁移至windows及linux系统) 在日常开发中,使用远程服务器进行开发是非常常见的,而通过 SSH 免密码登录可以显著提高效率,避免每次连接时都需要输入密码。本文将介绍如何在 macOS…

记录eslint报错的情况

这几天在调试vue的eslint,害,我领导说eslint要打开规范代码,顺带看了一下eslint的规则,并且研究一下报错。切记每次修改了.eslintrc配置文件,需要重启项目再查看控制台,否则之前的报错会一直存在。 第一个…

汽车软件DevOps解决方案

汽车软件DevOps解决方案是专为现代汽车行业设计的一套集成化需求、开发、测试、部署、OTA与监控,旨在加速软件开发流程,提高软件质量和安全性,同时确保整个生命周期的高效性和灵活性。以下是经纬恒润汽车软件DevOps解决方案的关键组成部分和优…

openCV与eigen两种方法---旋转向量转旋转矩阵

#include <Eigen/Dense> #include <opencv2/core/eigen.hpp> #include <opencv2/opencv.hpp> using namespace cv; using namespace std; int main() {// opencv 旋转向量cv::Vec3d rvec(1.0, 2.0, 3.0);cv::Mat rotation_matrix;cv::Rodrigues(rvec, rotati…

Vue项目搭建-2-组合式API

入口-setup 在组件渲染时会优先执行 setup 中代码&#xff0c;执行时机为 beforeCreate 之前 setup 方法中的对象若想要在 template 中使用&#xff0c;需要将方法 return 出去: <script> export default {setup() {console.log(setup had run)const msg "hello…

国产linux系统(银河麒麟,统信uos)使用 PageOffice 动态生成word文件

PageOffice 国产版 &#xff1a;支持信创系统&#xff0c;支持银河麒麟V10和统信UOS&#xff0c;支持X86&#xff08;intel、兆芯、海光等&#xff09;、ARM&#xff08;飞腾、鲲鹏、麒麟等&#xff09;、龙芯&#xff08;LoogArch&#xff09;芯片架构。 数据区域填充文本 数…

H.265流媒体播放器EasyPlayer.js H5流媒体播放器关于如何查看手机端的日志信息并保存下来

现今流媒体播放器的发展趋势将更加多元化和个性化。人工智能的应用将深入内容创作、用户体验优化等多个方面&#xff0c;带来前所未有的个性化体验。 EasyPlayer.js H.265流媒体播放器属于一款高效、精炼、稳定且免费的流媒体播放器&#xff0c;可支持多种流媒体协议播放&#…

【软考】系统架构设计师-信息系统基础

#信息系统基础核心知识点 信息系统5个基本功能&#xff1a;输入、存储、处理、输出和控制 诺兰模型&#xff1a;信息系统计划的阶段模型&#xff0c;6阶段 初始阶段&#xff0c;传播阶段&#xff0c;控制阶段&#xff0c;集成阶段&#xff0c;数据管理阶段&#xff0c;成熟阶…

【论文笔记】Large Brain Model (LaBraM, ICLR 2024)

Code: https://github.com/935963004/LaBraM Data: 无 目录 AbstractIntroductionMethodNeural tokenizer training&#xff1a;Pre-training LaBraM&#xff1a; ResultsExperimental setup&#xff1a;Pre-training result&#xff1a;Comparison with SOTA&#xff1a;Pre-t…

瀚海微SD NAND之SD 协议(34)1.8V信号的时序

固定数据窗口输出时序(SDR12、SDR25、SDR50) 固定数据窗口插卡输出时序如下图所示&#xff0c;SDR12、SDR25、SDR50的输出时序 有效窗口由输出延迟(topy)的最小值和最大值指定。 无论温度和电压如何变化&#xff0c;与SDCLK同步的有效数据窗口都是可用的。 输出有效窗口由t…

web——sqliabs靶场——第十三关——报错注入+布尔盲注

发现是单引号加括号闭合的 尝试联合注入 发现不太行&#xff0c;那尝试报错注入。 测试报错注入 unameadmin) and updatexml(1,0x7e,3) -- &passwdadmin&submitSubmit 爆数据库 unameadmin) and updatexml(1,concat(0x7e,database(),0x7e),3) -- &passwdadmin&a…

5、AI测试辅助-生成测试用例思维导图

AI测试辅助-生成测试用例思维导图 创建测试用例两种方式1、Plantuml思维导图版本 (不推荐&#xff09;2、Markdown思维导图版本&#xff08;推荐&#xff09; 创建测试用例两种方式 完整的测试用例通常需要包含以下的元素&#xff1a; 1、测试模块 2、测试标题 3、前置条件 4、…