协同过滤CF

news2024/10/5 16:20:47

算法提出

如果让推荐系统领域的从业者选出业界影响力最大、应用最广泛的模型,那么笔者认为90%的从业者会首选协同过滤。1992年, Xerox的研究中心开发了一种基于协同过滤的邮件筛选系统,用以过滤一些用户不感兴趣的无用邮件。2003 年,Amazon 发表论文 Amazon.com Recommenders Item-to-Item Collaborative Filtering,这让Amazon的推荐系统成为今后很长时间的研究热点和界主流的推荐模型。

算法的主要思想

一言以蔽之。协同过滤算法的核心思想就是物以类聚、人以群分。
那么关键问题就是我们怎么知道哪些人是同类的,哪些物品是同类的呢?
协同过滤算法说:我们可以给每个用户生成一个向量表示,在向量空间中距离相近的向量我们就认为他们是同一类的。物品同理。
那么问题又来了,我们如何为每个用户生成向量表示呢?
协同过滤算法说:这就是共现矩阵的艺术了。
详细步骤如下:

UserCF(人以群分)

1、构建共现矩阵,矩阵的每一行代表一个用户,每一列代表一个物品。矩阵元素[i,j]表示用户i对物品j的评价。如下图所示
在这里插入图片描述
2、 在计算用户相似度,这里我们将共现矩阵数值化,即将矩阵中“点赞”的值设为1,将“踩”的值设为-1,“没有数据”置为0。之前说过矩阵的每一行代表一个用户,每一列代表一个物品。所以我们可以将共现矩阵中的行作为该用户的向量表示,列作为物品的向量表示。
UserCF的核心思想是人以群分,现在我们得到了用户的向量表示,那么计算用户i和用户j的相似度问题,就是计算用户向量i和用户向量y之间的相似度,两个向量之间常用的相似度计算方法有余弦相似度、皮尔逊相关系数、欧氏距离等。在相似用户的计算过程中,理论上,任何合理的“向量相似度定义方式”都 可以作为相似用户计算的标准。

3、最终结果排序,
在获得Top n相似用户之后,利用Top n用户生成最终推荐结果的过程如下。 假设“目标用户与其相似用户的喜好是相似的”,可根据相似用户的已有评价对目标用户的偏好进行预测。这里最常用的方式是利用用户相似度和相似用户的评价的加权平均获得目标用户的评价预测,如下所示。
在这里插入图片描述
其中,wu,s是用户u和用户s的相似度,Rs,p是用户s对物品p的评分。
在获得用户U对不同物品的评价预测后,最终的推荐列表根据预测得分进行排序即可得到。至此,完成协同过滤的全部推荐过程。

UserCF的优缺点

以上介绍的协同过滤算法基于用户相似度进行推荐,因此也被称为基于用户的协同过滤(UserCF ),它符合人们直觉上的“兴趣相似的朋友喜欢的物品, 也喜欢”的思想,但从技术的角度,它也存在一些缺点,主要包括以下两点。
(1)在互联网应用的场景下,用户数往往远大于物品数,而UserCF需要维 护用户相似度矩阵以便快速找出Top w相似用户。该用户相似度矩阵的存储开销 非常大,而且随着业务的发展,用户数的增长会导致用户相似度矩阵的存储空间 以m2的速度快速增长,这是在线存储系统难以承受的扩展速度。
(2 )用户的历史数据向量往往非常稀疏,对于只有几次购买或者点击行为的 用户来说,找到相似用户的准确度是非常低的,这导致UserCF不适用于那些正反馈获取较困难的应用场景(如酒店预定、大件商品购买等低频应用)。

ItemCF(物理类聚)

1、构建共现矩阵
2、计算共现矩阵两两列向量间的相似性(相似度的计算方式与用户相似度的计算方式相同),构建物品的相似度矩阵。
3、获得用户历史行为数据中的正反馈物品列表。
4、利用物品相似度矩阵,针对目标用户历史行为中的正反馈物品,找出相似的TopN个物品,组成相似物品集合。对相似物品集合中的物品,利用相似度分值进行排序,生成最终的推荐列表。
如果一个物品与多个用户行为历史中的正反馈物品相似,那么该物品最终的相似度是多个相似度的累加,如下式所示:
在这里插入图片描述
其中H是目标用户的正反馈物品集合,wp,h是物品p与物品h的物品相似度,Ru,h是用户对物品h的已有评分。

ItemCF与UserCF的不同

UserCF基于用户相似度进行推荐,使其具备更强的社交特性, 用户能够快速得知与自己兴趣相似的人最近喜欢的是什么,即使某个兴趣点以前不在自己的兴趣范围内,也有可能通过“朋友”的动态快速更新自己的推荐列表。 这样的特点使其非常适用于发现热点,以及跟踪热点的趋势。
ItemCF更适用于兴趣变化较为稳定的应用,比如电商场景。用户在一个时间段内更倾向于寻找一类商品,这时利用物品相似度为其推荐相关物品是契合用户动机的。在Netflix的视频推荐场景中,用户观看电影、电视剧的兴趣点往往比较稳定,因此利用ItemCF推荐风格、类型相似的视频是更合理的选择。

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

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

相关文章

MySQL数据表的基础知识

目录 一、增 二、查 a、全列查询 b、指定列查询 c、查询字段为表达式 d、别名查询 e、对查询结果进行去重 f、排序 ​g、条件查询 三、改 四、删 以下操作均以student表为基础: 一、增 insert into 表名 values(...); 例如:新增张三同学的…

举个栗子!Tableau 技巧(247):用震波图(Seismogram)查看数据变化

震波图(Seismogram)是一种像地震波或声波的图表,通常用于表达数据的变化。乍一看,它有点像 蝴蝶图(旋风图),数据都分布在轴的零点两侧,但其实两者完全不同。 如下震波图&#xff0c…

Stm32旧版库函数6——ov2640 串口显示图像 串口中断 使用旧版库 模拟IIC

/******************************************************************************* // // 使用单片机STM32F100C8T6 8 // 晶振:8.00M // 编译环境 Keil uVision4 // 在3.3V的供电环境下,就能运行 // 波特率 115200 // 使用:STM32F100C…

SpringCloud Config 分布式配置中心

分步式系统面临配置问题: 微服务意味着要将单体应用中的业务拆分成一个个子服务,每个服务的粒度相对较小,因此系统中会出现大量的服务。由于每个服务都需要必要的配置信息才能运行,所以一套集中式的、动态的配置管理设施是必不…

浅谈电气火灾监控系统在煤矿高层公寓中的应用分析

摘要: 煤矿高层公寓做为人员高度密集场所,使用的电器种类繁多,一旦发生电气火灾事故, 其严重性和危害性远高于其它场所。文章通过对煤矿公寓电气线路火灾主要形式的分析,对电气火灾监 控系统在煤矿公寓电气火灾预防及…

NLG解码策略

NLG解码策略 自然语言生成(Natural Language Generation,简称NLG),是自然语言处理领域的一个重要分支,在文本摘要生成任务中,另一个重要的分支是自然语言理解(Natural Language Understanding&…

传奇GOM引擎版本架设

传奇GOM引擎版本架设 传奇GOM引擎版本我们架设游戏需要用到的工具: 版本(游戏类型服务端)、DBC2000(游戏数据库)、RAR(解压工具)、传奇客户端、服务器、网盘 先把这些架设工具准备好&#xff…

性能测试——

目录 测试的分类 性能测试的指标 性能测试需求分析 ​编辑 性能测试计划及方案 ​编辑​编辑 测试用例设计及执行 梳理系统架构 压力测试报告 测试的分类 性能测试的指标 性能测试需求分析 性能测试计划及方案 测试用例设计及执行 估算系统的qps要了解什么: 系…

Hot100-最小路径和

1 前言 1.1 题目描述 给定一个包含非负整数的 m x n 网格 grid ,请找出一条从左上角到右下角的路径,使得路径上的数字总和为最小。 说明:每次只能向下或者向右移动一步。 如下图所示: 输入:grid [[1,3,1],[1,5,1…

ConversionService转换服务使用

前言 在最近分析和写的SpringBoot源码分析(面试官:你说说Springboot的启动过程吧(5万字分析启动过程))中,给自己留了一个关于ConversionService的使用的作业,这不就来补作业了。 使用出处 这个转换服务我这里的例子很简单,就是…

计算机研究生就业方向之去大厂做架构师

我一直跟学生们说你考计算机的研究生之前一定要想好你想干什么,如果你只是转码,那么你不一定要考研,至少以下几个职位研究生是没有啥优势的: 1,软件测试工程师(培训一下就行) 2,前…

RocketMQ详解及开发用例

概念 Apache RocketMQ作为阿里开源的一款高性能、高吞吐量的分布式消息中间件。 支持Broker和Consumer端消息过滤,支持发布订阅模型和点对点,支持拉pull和推push两种消息模式,单一队列百万消息、亿级消息堆积,支持单master节点&a…

力扣202.快乐数(java语言HashSet方法,类双指针方法)

前言:此题被分类到散列表算法题目中,但乍一看此题实在想不到如何去使用散列表,直到看了官方给的答案。。。。。。 题目描述: 编写一个算法来判断一个数 n 是不是快乐数。 「快乐数」 定义为: 对于一个正整数&#…

C++ 基本语法

📒博客主页: ​​开心档博客主页​​ 🎉欢迎关注🔎点赞👍收藏⭐留言📝 📌本文由开心档原创! 📆51CTO首发时间:🌴2022年12月12日🌴 ✉…

Python40个自动化办公实战案例,终于实现下班自由啦~

拿来就能用,这么爽的吗?! 今天我想聊聊,如何通过Python自动化工具,解决工作中常见的办公效率低下的问题。 你有没有想过,下班晚,加班,可能是因为自己工作比较低效? 回…

wireshark 分析理解DHCP流程

DHCP概念: 动态主机配置协议 DHCP(Dynamic Host Configuration Protocol,动态主机配置协议),是一个应用层协议。该协议允许服务器向客户端动态分配 IP 地址和配置信息。 知识补充: BOOTP(Boots…

PVE使用cloud-init快速启动虚拟机

这里写目录标题关于cloud-init云镜像(cloud image)下载创建虚拟机模板,可反复使用DebianUbuntuCentOS使用模板关于cloud-init 传统ISO镜像装机时,需要一步一步规定虚拟机,比如系统盘安装在哪个磁盘里,ip是…

Vue Material - 基于谷歌 Material Design 打造的前端组件库,用 Vue 开发海外应用的绝佳选择

一位朋友问我用 vue 开发 APP 在谷歌商店上架,有什么简单的 UI 组件库,我推荐了这款,同样推荐给各位。 关于 Vue Material Vue Material 是一款简单、轻量级的 Vue 组件,组件的设计完全按照 Google Material Design 规范构建&am…

氟尿嘧啶/琥珀酰化壳聚糖偶联载药体(SUCS-5-FuOH)

氟尿嘧啶/琥珀酰化壳聚糖偶联载药体(SUCS-5-FuOH) 产品描述:以自制的琥珀酰化壳聚糖 (SUCS)和羟甲基-5-氟尿嘧啶(5-FuOH)为原料,制备了壳聚糖偶联载药体(SUCS-5-FuOH).结果表明,SUCS和5-FuOH间通过酯键化学键合,接枝率(载药率)为18.7%,在模拟体液和酶存在条件下均有…

Redis高可用全景一览

前言 前几天我在知乎看到一个问题:如何建立自己的知识体系和观点?[1] 在一篇高赞回答中讲述了建立“外脑”是关键,文章观点认为:大脑是用来思考的,不是用来记忆的。 我很认同这样的看法,我的账号名为“杨同…