推荐系统中的相似度度量

简介: 推荐系统中的相似度度量

效用矩阵

协同过滤的重要部分是识别出具有相似偏好的观众。尽管Netflix采用多种方式来收集有关用户喜好的信息,但为简单起见,我们假设它已要求观众以1-5的评分来评价电影。我们进一步假设只有7部电影需要考虑(哈利·波特三部曲,《暮光之城》和《星球大战》三部曲),并且只有四名观众被要求对其评分。

1显示了四个精选观众提供的评分。这样的表(每一种产品的评分按列排列,每一位用户的评分按行排列)被称为效用矩阵。空格表示某些用户未对某些电影进行评分。

image.png


1:一个实用矩阵,捕获四个用户对七部电影的评分。每一种电影的评分按列排列。

实际上,Netflix每天都有成千上万的节目供数百万观众使用。相应地,它的实际效用矩阵将具有数百万行,跨越数千列。此外,随着系统不断收集有关用户行为的信息,矩阵会动态更新。

通过查看图1中的效用矩阵,我们可以得出一些显而易见的结论:

·    观众A喜欢《哈利·波特1》和《暮光之城》,但不喜欢《星际大战1

·    观众B喜欢《哈利·波特》三部曲的所有电影,但她不喜欢什么似乎是一个秘密

·    观众C喜欢《星球大战1》和《星球大战2》,但不喜欢《暮光之城》

·    观众D不介意在无聊的日子里观看《哈利·波特2》和《星球大战2》但他们都不是她的最佳选择。

 

总之,观众AB的口味相似,就像他们都喜欢《哈利·波特1》。相反,观众AC的口味不同,因为观众A喜欢暮光之城,但观众C根本不喜欢。同样,A不喜欢《星球大战》,但C喜欢。推荐系统需要用一种方法来比较不同观众的评分,并告诉我们他们的口味有多接近。

量化相似度

有很多不同的指标可以比较两个观众提供的评分,并判断他们是否具有相似的品味。在本文中,我们将学习其中两个:Jaccard距离和余弦距离,具有相似品味的观众距离更近。

Jaccard距离

Jaccard距离是另一个量的函数,这个量被称为Jaccard相似度。根据定义,集合STJaccard相似度是ST的交集大小与它们的并集大小之比。从数学上讲,它可以写成:

image.png


集合AB之间的Jaccard距离d (x, y)由下式给出:

image.png


余弦距离

两个向量AB之间的余弦距离是角度d (AB),由下式给出:

image.png


其中

image.png


分别是向量AB范数,n是要考虑的产品(在这种情况下为电影)的数量。余弦距离在0180度之间变化。

计算效用矩阵的距离度量

为了更好地理解这些距离度量,让我们使用效用矩阵(1)中显示的数据来计算距离。

计算Jaccard距离

计算Jaccard距离的第一步是以集合的形式写出用户评过分的电影。与观众AB对应的集合是:

A = {HP1, TW, SW1}

B = {HP1, HP2, HP3}

集合A和集合B的交集是这两个集合共有的元素集。AB的并集是AB中所有元素的集合。因此,

AB= {HP1}

AB= {HP1,HP2, HP3, TW, SW1}.

AB之间的Jaccard距离为:

image.png


类似地,AC之间的Jaccard距离。根据此度量,与观众AB相比,观众AC之间有更多相似之处。这与通过效用表直观分析所揭示的完全相反。因此,Jaccard 距离不适用于我们正在考虑的数据类型。

计算余弦距离:

现在让我们计算观众AB之间以及观众AC之间的余弦距离。为此,我们首先创建一个代表其评分的向量。为简单起见,我们假定空格等于零评分。这是一个值得商榷的选择,因为评分为零也可能表示观众给出的较差的评分。与观众ABC对应的向量为:

A=[4,0,0,5, 1,0,0]

B=[5,5,4,0,0,0,0]

C=[0,0,0,2,4,5, 0] .

AB之间的余弦距离为:

image.png


类似地,AC之间的余弦距离为:

image.png


这是合理的,因为它表明A稍微靠近B比于与C的距离。

评分转换

通过对矩阵中的每个元素应用定义明确的规则,我们还可以转换效用矩阵中捕获的数据。在本文中,我们将学习两个转换:舍入和标准化。

输入数据

观众通常会对相似的电影给予类似的评分。例如,观众B对所有哈利.波特电影都给予了很高的评分,而观众C对“星球大战1”和“星球大战2”给予了很高的评价,可以通过将规则四舍五入来消除评分的相似性。例如,我们可以设置一个规则,将评分345舍入为1,并将等级12视为空白。应用此规则后,我们的效用矩阵变为:      

image.png


在评分舍入的情况下,观众AC对应的集合的交集为空集合。这会将Jaccard相似度降低到最小值零,并且将Jaccard距离升高到最大值1。而且,与观众AB对应的集合之间的Jaccard距离小于1,这使AB更接近C。请注意,当使用原始用户评分来计算距离时,Jaccard距离度量无法提供这种对用户行为的了解。找到具有舍入值的余弦距离会得出相同的结论。

标准化评级

转换原始观众评分的另一种方法是对其进行标准化。通过标准化,我们的意思是从每个评分中减去该对应观众的平均评分。例如,让我们找到平均评分为10/3的观众A的标准化评分。因此,她的标准化评分为

image.png


下面给出了所有值均经过标准化的效用矩阵。请注意,这会将较高的评分值转换为正值,而将较低的评分转换为负值。


image.png


3:具有标准化值的效用矩阵

由于效用矩阵中的各个值都发生了变化,因此我们预期余弦距离会发生变化。但是,Jaccard 距离保持不变,因为它仅取决于两个用户都评价的电影数量,而不取决于给定的评价。

使用标准化值,对应于观众ABC的向量为:


 

image.png

AB之间以及AC之间的余弦距离为:

image.png


虽然针对标准化评分的余弦距离计算不会改变原始结论(A更接近B,而不是C),但确实会放大向量之间的距离。向量AC似乎在标准化评分之下,距离特别远,尽管两者(BCA的距离)都不是很接近。

总结

推荐系统是互联网经济的核心。它们是使我们迷上社交媒体以及在线购物和娱乐平台的计算机程序。推荐系统的工作是预测特定用户可能会购买或消费的东西。做出预测所依赖的两种广泛方法之一是查看其他人(尤其是那些与所讨论的用户具有相似偏好的人)购买或消费的东西。该方法的关键部分是量化用户之间的相似性。

计算Jaccard和余弦距离是用来量化用户之间相似度的各种方法中的两种。Jaccard距离考虑了用户评分的产品数量,但未考虑评分本身的实际值。相反地,余弦距离会考虑评分的实际值,但不会考虑两个用户都评价的产品数量。由于在计算距离方面存在这种差异,因此,Jaccard 和余弦距离度量有时会导致相互矛盾的预测。在某些情况下,我们可以通过根据明确定义的舍入规则来避免此类冲突。

也可以从用户给出的每个评分中减去该用户给出的平均评分来转换评分,这个过程称为标准化,不会影响Jaccard距离,但是会放大余弦距离。

目录
相关文章
|
3月前
|
搜索推荐 前端开发 数据可视化
【优秀python web毕设案例】基于协同过滤算法的酒店推荐系统,django框架+bootstrap前端+echarts可视化,有后台有爬虫
本文介绍了一个基于Django框架、协同过滤算法、ECharts数据可视化以及Bootstrap前端技术的酒店推荐系统,该系统通过用户行为分析和推荐算法优化,提供个性化的酒店推荐和直观的数据展示,以提升用户体验。
146 1
|
5月前
|
搜索推荐 算法 小程序
基于Java协同过滤算法的电影推荐系统设计和实现(源码+LW+调试文档+讲解等)
基于Java协同过滤算法的电影推荐系统设计和实现(源码+LW+调试文档+讲解等)
|
5月前
|
搜索推荐 算法 小程序
基于Java协同过滤算法的图书推荐系统设计和实现(源码+LW+调试文档+讲解等)
基于Java协同过滤算法的图书推荐系统设计和实现(源码+LW+调试文档+讲解等)
|
3月前
|
搜索推荐 前端开发 数据可视化
基于Python协同过滤的旅游景点推荐系统,采用Django框架,MySQL数据存储,Bootstrap前端,echarts可视化实现
本文介绍了一个基于Python协同过滤算法的旅游景点推荐系统,该系统采用Django框架、MySQL数据库、Bootstrap前端和echarts数据可视化技术,旨在为用户提供个性化的旅游推荐服务,提升用户体验和旅游市场增长。
267 9
基于Python协同过滤的旅游景点推荐系统,采用Django框架,MySQL数据存储,Bootstrap前端,echarts可视化实现
|
3月前
|
搜索推荐 前端开发 算法
基于用户画像及协同过滤算法的音乐推荐系统,采用Django框架、bootstrap前端,MySQL数据库
本文介绍了一个基于用户画像和协同过滤算法的音乐推荐系统,使用Django框架、Bootstrap前端和MySQL数据库构建,旨在为用户提供个性化的音乐推荐服务,提高推荐准确性和用户满意度。
239 7
基于用户画像及协同过滤算法的音乐推荐系统,采用Django框架、bootstrap前端,MySQL数据库
|
6月前
|
搜索推荐 算法 前端开发
美食物管理与推荐系统Python+Django网站开发+协同过滤推荐算法应用【计算机课设项目推荐】
美食物管理与推荐系统Python+Django网站开发+协同过滤推荐算法应用【计算机课设项目推荐】
189 4
美食物管理与推荐系统Python+Django网站开发+协同过滤推荐算法应用【计算机课设项目推荐】
|
5月前
|
机器学习/深度学习 搜索推荐 算法
基于深度学习神经网络协同过滤模型(NCF)的图书推荐系统
登录注册 热门图书 图书分类 图书推荐 借阅图书 购物图书 个人中心 可视化大屏 后台管理
13124 2
基于深度学习神经网络协同过滤模型(NCF)的图书推荐系统
|
4月前
|
JavaScript Java 测试技术
基于springboot+vue.js+uniapp小程序的协同过滤电影推荐系统附带文章源码部署视频讲解等
基于springboot+vue.js+uniapp小程序的协同过滤电影推荐系统附带文章源码部署视频讲解等
45 0
|
6月前
|
机器学习/深度学习 搜索推荐 算法
推荐系统算法的研究与实践:协同过滤、基于内容的推荐和深度学习推荐模型
推荐系统算法的研究与实践:协同过滤、基于内容的推荐和深度学习推荐模型
614 1
下一篇
无影云桌面