Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >python演示推荐系统里的协同过滤算法

python演示推荐系统里的协同过滤算法

原创
作者头像
mariolu
发布于 2024-03-07 23:45:39
发布于 2024-03-07 23:45:39
24701
代码可运行
举报
运行总次数:1
代码可运行

一、推荐系统快速入门

推荐系统是属于信息过滤领域的一个范畴,目标在预测用户对某个项目(例如产品、电影、歌曲等)的“评分”或“偏好”。

推荐系统通过与用户交互的痕迹来了解用户的兴趣,从而提供个性化信息。与其他机器学习算法非常相似,推荐系统根据用户过去的行为进行预测。具体来说,它在根据经验预测用户对一组项目的偏好。

从数学上讲,推荐任务设置为:

  • 用户集 (U)
  • 要推荐给 用户集(U)的一组项目 (I)
  • 学习一个基于用户过去交互数据的函数,预测项目 I 到 U 的可能性

根据用于推理的数据,推荐系统大致分为两类:

  1. 基于内容的过滤,使用项目属性。
  2. 协同过滤,除了项目属性之外还使用用户行为(交互)。

推荐系统的一些重要应用包括渗透在我们生活里面的方方面面:

  • 购物网站上的产品推荐
  • 流媒体网站的电影和电视节目推荐
  • 新闻网站上的文章推荐

二、什么是协同过滤?

协作过滤通过使用系统从其他用户收集的交互和数据来过滤信息。它基于这样的想法:对某些项目的评估达成一致的人将来可能会再次达成一致。

这个概念很简单:当我们想找一部新电影观看时,我们经常会向朋友寻求推荐。当然,我们更相信那些与我们有相似品味的朋友的推荐。

大多数协同过滤系统应用所谓的基于相似性索引的技术。在基于邻域的方法中,根据用户与活动用户的相似性来选择多个用户。通过计算所选用户评分的加权平均值来推断活跃用户。

协同过滤系统关注用户和项目之间的关系。项目的相似度由对这两个项目进行评分的用户对这些项目的评分的相似度来确定。

协同过滤有两类: 

  • 基于用户,衡量目标用户与其他用户的相似度。
  • 基于项目,衡量目标用户评分或交互的项目与其他项目之间的相似度。

三、使用 Python 进行协同过滤 

协作方法通常使用效用矩阵来制定。推荐模型的任务是学习一个函数来预测每个用户的拟合度或相似度。矩阵通常是非常稀疏、就是维度巨大但里面大多数矩阵元素删除了值。

在下面的矩阵中,每行代表一个用户,而列对应不同电影。余弦相似度是查找向量相似度所需的最简单算法。矩阵中,每一行代表一个用户,而每一列对应不同的电影,每个单元格代表用户对该电影的评分。

余弦相似度(p, q) = pq

____

|p|.|q|

比如说我们有以下数据

那么我们用Python描述余弦相似度

代码语言:python
代码运行次数:1
运行
AI代码解释
复制
import math

def consine_similarity(v1, v2):
#computer consine_similarity of v1 and v2: (v1 dot v2)/(||v1||*||v2||)
    sumxx, sumxy, sumyy = 0,0,0
    for i in range(len(v1)):
        x = v1[i]; y = v2[i]
        sumxx += x*x
        sumxy += x*y
        sumyy += y*y
    return sumxy/math.sqrt(sumxx*sumyy)
    
#cosine_similarity(joe, beck) =
v1,v2=[4,4,4,3,2],[5,5,2,2,3]
print (v1, v2, consine_similarity(v1,v2))
    

当新用户加入平台时,我们应用最简单的算法来计算行(用户)或列(电影)的余弦或相关相似度,并推荐 k 最近邻居的项目。在这个例子中,我们得到Wall-e和

最后一个是第一个矩阵之后的效用矩阵,仅包含部分数据,需要这些数据来通过用户给出的“根”来预测预期评级的可能性。除了最后一个记录该用户与目标用户之间的相似度。

CF表2
CF表2

有许多方程可以处理相似性度量的问题,其中一些包括:

  • Pearson similarity
  • Jaccard similarity
  • Spearman rank correlation
  • Mean squared differences
  • Proximity–impact–popularity similarity

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
【干货】基于协同过滤的推荐系统实战(附完整代码)
【导读】本文使用Python实现简单的推荐系统,分别实践了基于用户和基于商品的推荐系统,代码使用sklearn工具包实现。除了代码实现外,还分别从理论上介绍了两种推荐系统原理:User-Based Collaborative Filtering 和 Item-Based Collaborative Filtering,并讲解了几种常见的相似性度量方法及它们分别适用场景,还实现了推荐系统的评估。最终分析两种推荐系统的优劣,说明混合推荐技术可能具有更好的性能。 作者 | Chhavi Saluja 编译 | 专
WZEARW
2018/04/13
14.6K0
【干货】基于协同过滤的推荐系统实战(附完整代码)
协同过滤算法
协同过滤算法是一类常用于推荐系统的算法,它基于用户之间或物品之间的相似性进行推荐。主要分为两种类型:基于用户的协同过滤和基于物品的协同过滤。以下是对这两种协同过滤算法的详细讲解:
人不走空
2024/02/20
6320
【算法】推荐算法--协同过滤
协同过滤推荐(Collaborative Filtering recommendation)是在信息过滤和信息系统中正迅速成为一项很受欢迎的技术。与传统的基于内容过滤直接分析内容进行推荐不同,协同过滤分析用户兴趣,在用户群中找到指定用户的相似(兴趣)用户,综合这些相似用户对某一信息的评价,形成系统对该指定用户对此信息的喜好程度预测。
陆勤_数据人网
2018/07/30
6.8K0
【算法】推荐算法--协同过滤
JAVA协同过滤推荐算法
在推荐系统众多方法中,基于用户的协同过滤推荐算法是最早诞生的,原理也较为简单。该算法1992年提出并用于邮件过滤系统,两年后1994年被 GroupLens 用于新闻过滤。一直到2000年,该算法都是推荐系统领域最著名的算法。 在一个在线个性化推荐系统中,当一个用户A需要个性化推荐时,可以先找到和他有相似兴趣的其他用户,然后把那些用户喜欢的、而用户A没有听说过的物品推荐给A。 以看电影这个例子来说,如果你喜欢《蝙蝠侠》、《碟中谍》、《星际穿越》、《源代码》等电影,另外有个人也都喜欢这些电影,而且他还喜欢《钢铁侠》,则很有可能你也喜欢《钢铁侠》这部电影。
全栈程序员站长
2022/07/23
2.2K0
JAVA协同过滤推荐算法
基于协同过滤的电影推荐系统的设计与实现(协同过滤推荐算法伪代码)
Apache Mahout 是 Apache Software Foundation(ASF) 旗下的一个开源项目,提供一些可扩展的机器学习领域经典算法的实现,旨在帮助开发人员更加方便快捷地创建智能应用程序。经典算法包括聚类、分类、协同过滤、进化编程等等,并且,在 Mahout 中还加入了对Apache Hadoop的支持,使这些算法可以更高效的运行在云计算环境中。
全栈程序员站长
2022/07/28
2.7K0
基于协同过滤的电影推荐系统的设计与实现(协同过滤推荐算法伪代码)
每周学点大数据 | No.58协同过滤模型(上)
NO.58 协同过滤模型(上) Mr. 王:为了能够有效地利用其他用户的评价来进行更有效的推荐,人们提出了协同过滤的推荐模型。 小可:那什么是协同过滤模型呢?它又有哪些优势呢? Mr. 王:先说说协同过滤的思想。既然认为他人对一个项目的评价是有一定价值的,我们就要尝试去利用他人对一个项目的评分来考察该项目的好坏。但是这里存在一个问题,就是他人认为不好的项目不一定是我们认为不好的,或者说他人的评价标准不一定符合我们的评价标准。我们要去考虑,如何能够让那些和某个用户评价标准相似的人来评价该用户没有评价过的东西。
灯塔大数据
2018/04/04
6990
每周学点大数据 | No.58协同过滤模型(上)
用9行python代码演示推荐系统里的协同过滤算法
推荐系统是属于信息过滤领域的一个范畴,目标在预测用户对某个项目(例如产品、电影、歌曲等)的“评分”或“偏好”。
mariolu
2024/03/08
9110
近邻推荐之基于用户的协同过滤
提到推荐系统,很多人第一反应就是协同过滤,由此可见协同过滤与推荐系统的关系是有多么紧密。这里介绍下基于用户的协同过滤。
abs_zero
2018/04/11
1.9K0
近邻推荐之基于用户的协同过滤
推荐算法的介绍,第一部分——协同过滤与奇异值分解
推荐系统是指能够预测用户未来偏好项目(item)并推荐最优先项目的系统。现代社会之所以需要推荐系统,是由于互联网的普及,人们有太多的选择可供使用。过去,人们习惯于在实体店里购物,而在实体店里商品是有限
AiTechYun
2018/03/02
1.4K0
推荐算法的介绍,第一部分——协同过滤与奇异值分解
【推荐系统算法实战】协同过滤 CF 算法(Collaborative Filtering)
仅仅基于用户行为数据设计的推荐算法一般称为协同过滤算法。学术界对协同过滤算法 进行了深入研究,提出了很多方法,比如基于邻域的方法(neighborhood-based)、隐语义模型 (latent factor model)、基于图的随机游走算法(random walk on graph)等。在这些方法中, 最著名的、在业界得到最广泛应用的算法是基于邻域的方法。
一个会写诗的程序员
2019/12/24
7.2K1
【推荐系统算法实战】协同过滤 CF 算法(Collaborative Filtering)
协同过滤推荐算法
相信大家对推荐系统已经很熟悉了,它通过分析用户的历史行为,挖掘用户的兴趣爱好,预测并推荐给用户其接下来有可能感兴趣的事物,例如商品推荐、音乐推荐、新闻以及最近很火的短视频推荐等等。
小萌哥
2020/07/21
1.5K0
协同过滤推荐算法
协同过滤算法概述与python 实现协同过滤算法基于内容(usr-item,item-item)
协调过滤推荐概述   协同过滤(Collaborative Filtering)作为推荐算法中最经典的类型,包括在线的协同和离线的过滤两部分。所谓在线协同,就是通过在线数据找到用户可能喜欢的物品,而离线过滤,则是过滤掉一些不值得推荐的数据,比比如推荐值评分低的数据,或者虽然推荐值高但是用户已经购买的数据。   协同过滤的模型一般为m个物品,m个用户的数据,只有部分用户和部分数据之间是有评分数据的,其它部分评分是空白,此时我们要用已有的部分稀疏数据来预测那些空白的物品和数据之间的评分关系,找到最
学到老
2018/04/18
7.8K0
协同过滤算法概述与python 实现协同过滤算法基于内容(usr-item,item-item)
简单易学的机器学习算法——协同过滤推荐算法(2)
一、基于协同过滤的推荐系统     协同过滤(Collaborative Filtering)的推荐系统的原理是通过将用户和其他用户的数据进行比对来实现推荐的。比对的具体方法就是通过计算两个用户数据之间的相似性,通过相似性的计算来说明两个用户数据之间的相似程度。相似度函数的设计必须满足度量空间的三点要求,即非负性,对称性和三角不等性。常用的相似度的计算方法有:欧式距离法、皮尔逊相关系数法和夹角余弦相似度法。具体的可以参见上一篇文章“协同过滤推荐算法(1) ”。 二、面临的问题     在基本的协同过滤的推荐
felixzhao
2018/03/15
6220
简单易学的机器学习算法——协同过滤推荐算法(2)
基于协同过滤(CF)算法的推荐系统
         随着计算机领域技术的高速发展,电子商务时代的普及,个性化的推荐系统深入生活应用的各个方面。个性化推荐算法是推荐系统中最核心的技术,在很大程度上决定了电子商务推荐系统性能的优劣。而协同过滤推荐是个性化推荐系统应用最为广泛的技术,协同过滤推荐主要分为基于用户的协同过滤推荐、基于项目的协同过滤推荐和基于模型的协同过滤推荐。
Flaneur
2020/03/25
5.1K0
协同过滤推荐算法在python上的实现
信息大爆炸时代来临,用户在面对大量的信息时无法从中迅速获得对自己真正有用的信息。传统的搜索系统需要用户提供明确需求,从用户提供的需求信息出发,继而给用户展现信息,无法针对不同用户的兴趣爱好提供相应的信息反馈服务。推荐系统相比于搜索系统,不需要提供明确需求,便可以为每个用户实现个性化推荐结果,让每个用户更便捷地获取信息。它是根据用户的兴趣特点和购买行为,向用户推荐用户感兴趣的信息和商品。
全栈程序员站长
2022/07/22
1.4K0
协同过滤推荐算法在python上的实现
如何用深度学习推荐电影?教你做自己的推荐系统!
简介 几乎所有人都喜欢与家人、朋友一起观看电影度过闲暇时光。大家可能都有过这样的体验:本想在接下来的两个小时里看一个电影,却坐在沙发上坐了20分钟不知道看什么,选择困难症又犯了,结果好心情也变得沮丧。所以,我们很需要一个电脑代理,在做挑选电影的时候提供推荐。 现在,电影智能推荐系统已经成为日常生活中的一部分。 Data Science Central 曾表示: “虽然硬数据很难获得,但知情人士估计,对亚马逊和Netflix这样的大型电商平台,推荐系统为它们带来高达10%至25%的收入增长”。 在这个项
AI研习社
2018/03/28
1.7K0
如何用深度学习推荐电影?教你做自己的推荐系统!
MATLAB模糊C均值聚类FCM改进的推荐系统协同过滤算法分析MovieLens电影数据集
在当今信息爆炸的时代,电影作为人们生活中不可或缺的娱乐方式,受到了越来越多的关注。而为了让观众能够更好地选择适合自己口味的电影,推荐系统成为了一个备受关注的研究领域。协同过滤算法是其中一种被广泛使用的方法。
拓端
2023/05/29
3400
少数人的智慧:基于专家意见的协同过滤
基于最近邻算法的协同过滤(nearest-neighbor collaborative filtering)是一种十分成功的推荐方法。然而,这种方法存在一些缺点,比如数据稀疏性、脏数据、冷启动问题以及可扩展性。
木东居士
2019/02/28
7420
推荐算法之协同过滤
刘建银
2017/07/20
5K0
推荐算法之协同过滤
简单易学的机器学习算法——协同过滤推荐算法(1)
一、推荐系统的概念     推荐系统(Recommendation System, RS),简单来说就是根据用户的日常行为,自动预测用户的喜好,为用户提供更多完善的服务。举个简单的例子,在京东商城,我
felixzhao
2018/03/15
1K0
简单易学的机器学习算法——协同过滤推荐算法(1)
推荐阅读
相关推荐
【干货】基于协同过滤的推荐系统实战(附完整代码)
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验