基于协同过滤算法的电影推荐系统设计
基于协同过滤算法的电影推荐系统设计与实现

基于协同过滤算法的电影推荐系统设计与实现近年来,随着互联网技术和智能化设备的不断发展,人们的娱乐方式也变得多样化和普遍化。
特别是在影视娱乐领域,许多平台不断涌现,提供丰富的视频内容并与用户产生交互,形成了一个庞大的网络影视社区。
而如何根据用户个性化的需求和喜好,为其推荐最合适的电影资源,成为了一个亟待解决的问题。
在这样的背景下,基于协同过滤算法的电影推荐系统得以出现,成为了目前使用最为广泛的一种影视推荐系统。
协同过滤算法是一种通过统计用户和物品之间的共现性来自动发现用户兴趣和建立关联的算法,具有简单、易实现的优点。
本文将从算法原理、系统设计和实现三个方面分析基于协同过滤算法的电影推荐系统。
一、算法原理协同过滤算法是一种基于用户历史行为的算法,可以通过分析用户对物品的评分记录,得到用户对这些物品的偏好,并借助物品之间的相似性,找到最具代表性的物品,为用户群体推荐哪些物品最为符合其需求。
针对电影推荐系统,我们可以采用两种协同过滤算法:基于用户的协同过滤算法和基于物品的协同过滤算法。
基于用户的协同过滤算法,即根据用户的浏览记录来分析用户的偏好,找到相似用户,并提供给用户个性化的推荐。
这种算法的优点是能够针对用户的个性化偏好进行推荐,缺点是需要大量的用户行为数据。
一般地,我们首先将用户行为数据存储在一个用户-电影评分矩阵中。
其中每一行代表一个用户,每一列代表一个电影。
该矩阵中的元素记录了该用户对某个电影的评分,未评分的设置为0。
接下来,我们将每个用户都看成一个向量,将该矩阵拆分成多个向量进行处理,并计算用户之间的相似度。
常用的相似度计算方法有欧几里得距离法、余弦相似度和皮尔森相关系数等。
当我们需要为某个用户推荐电影时,我们就可以找到和该用户相似度最高的前K个用户,并将这些用户看过并打过高分的电影进行推荐。
基于物品的协同过滤算法则是通过分析每个电影本身的特点和相似性,找到用户喜欢的电影并进行推荐,这种算法的优点是不需要用户的行为数据,较为灵活,能适应新颖物品的推荐。
《2024年基于协同过滤算法的个性化电影推荐系统的实现》范文

《基于协同过滤算法的个性化电影推荐系统的实现》篇一一、引言随着互联网的迅猛发展,电影资源的不断丰富,人们面临着众多的电影选择。
然而,如何在众多的电影资源中寻找到真正符合个人口味的电影成为了人们迫切需要解决的问题。
因此,个性化电影推荐系统应运而生。
本文将介绍一种基于协同过滤算法的个性化电影推荐系统的实现。
二、协同过滤算法概述协同过滤算法是一种常用的推荐系统算法,其基本思想是利用用户的历史行为数据,寻找与目标用户兴趣相似的其他用户,然后根据这些相似用户的喜好进行推荐。
协同过滤算法主要包括用户之间的协同过滤和基于项目的协同过滤。
三、系统设计(一)数据预处理首先,我们需要收集用户的观影历史数据,包括用户观看的电影、评分等信息。
然后对这些数据进行清洗、去重、归一化等预处理操作,以便后续的算法处理。
(二)用户相似度计算在协同过滤算法中,用户相似度的计算是关键。
我们可以采用余弦相似度、皮尔逊相关系数等方法来计算用户之间的相似度。
系统将计算所有用户之间的相似度,并存储在相似度矩阵中。
(三)推荐算法实现基于用户相似度,我们可以采用最近邻法、基于矩阵分解的方法等来实现推荐算法。
系统将根据目标用户的相似用户及其喜欢的电影,为目标用户推荐相似的电影。
(四)推荐结果输出系统将根据推荐算法计算出的结果,将推荐的电影按照一定顺序(如评分高低、更新时间等)输出给用户。
同时,系统还将提供一些额外的功能,如电影详情查看、电影评价等。
四、系统实现(一)技术选型系统采用Python语言进行开发,使用pandas、numpy等数据科学库进行数据处理和计算,使用Flask等Web框架进行Web服务开发。
同时,为了加速数据处理和计算,系统还采用了分布式计算框架Hadoop和Spark。
(二)数据库设计系统采用MySQL数据库进行数据存储。
数据库包括用户表、电影表、评分表等。
其中,用户表存储用户的基本信息;电影表存储电影的基本信息;评分表存储用户对电影的评分信息。
基于协同过滤算法的个性化电影推荐平台的设计与实现

基于协同过滤算法的个性化电影推荐平台的设计与实现设计与实现个性化电影推荐平台需要考虑以下几个方面:数据收集与
处理、协同过滤算法、用户界面设计和系统测试。
首先,数据收集与处理是个性化电影推荐平台设计的基础。
可以通过
爬虫技术从电影网站收集电影信息,包括电影题目、导演、演员、类型、
描述和评分等。
然后,将收集到的数据进行清洗和预处理,例如去重、标
准化电影名称等。
此外,还可以添加用户评分数据,包括用户对电影的评
分和评论,以便后续的协同过滤算法。
协同过滤算法是个性化电影推荐平台核心的推荐算法。
可以采用基于
用户的协同过滤算法或基于物品的协同过滤算法。
基于用户的协同过滤算
法利用用户之间的相似度进行推荐,通过计算用户之间的相似度,找到相
似用户看过的电影,并推荐给目标用户。
基于物品的协同过滤算法则是通
过计算电影之间的相似度,找到用户喜欢的电影相似的电影,并推荐给目
标用户。
可以结合两种算法进行综合推荐,提高推荐的准确性。
最后,需要对个性化电影推荐平台进行系统测试,包括功能测试和性
能测试。
功能测试主要是验证平台的各项功能是否正常运行,例如用户登录、电影、电影推荐等。
性能测试主要是验证平台的稳定性和响应速度,
例如并发用户数和系统负载等。
综上所述,设计与实现个性化电影推荐平台需要考虑数据收集与处理、协同过滤算法、用户界面设计和系统测试等方面的问题。
通过合理的设计
和实现,可以提供给用户更好的个性化推荐体验。
基于协同过滤的电影推荐系统设计

基于协同过滤的电影推荐系统设计第一章:引言1.1 研究背景随着互联网的快速发展,电影产业也进入了新的发展阶段。
电影推荐系统成为电影产业的重要组成部分,能够为用户提供个性化的推荐,帮助用户更好地选择和观看电影。
1.2 研究目的本文旨在设计基于协同过滤的电影推荐系统,通过分析用户的历史电影评分数据,找到相似的用户和电影,从而为用户提供个性化的电影推荐。
1.3 研究方法本文采用协同过滤算法设计电影推荐系统,首先分析用户历史评分数据,然后通过计算用户之间的相似度和电影之间的相似度,找到相似的用户和电影,最后根据相似用户的评分数据为用户进行电影推荐。
第二章:电影推荐系统概述2.1 电影推荐系统的分类基于内容的推荐系统和协同过滤推荐系统是目前最为常见的电影推荐系统。
基于内容的推荐系统通过分析电影的属性,如导演、演员、类型等,为用户推荐相似的电影。
而协同过滤推荐系统则通过分析用户的历史行为数据,找到相似的用户和电影,为用户推荐电影。
2.2 协同过滤推荐系统的优势协同过滤推荐系统具有以下优势:(1)个性化推荐:协同过滤推荐系统能够根据用户的偏好为其提供个性化的推荐,提高用户体验;(2)无需事先了解电影的属性:与基于内容的推荐系统不同,协同过滤推荐系统只需要用户的历史评分数据,无需事先了解电影的具体属性,对于新上线的电影也能够进行准确推荐;(3)离线计算:协同过滤推荐系统的计算工作可以在离线进行,提高实时推荐的性能。
第三章:协同过滤算法原理3.1 用户相似度计算协同过滤算法首先需要计算用户之间的相似度。
常用的相似度计算方法有欧几里得距离、皮尔逊相关系数等。
通过计算用户之间历史评分的相似度,可以找到相似的用户。
3.2 电影相似度计算在找到相似的用户后,需要计算电影之间的相似度。
常用的相似度计算方法有余弦相似度、皮尔逊相关系数等。
通过计算电影评分的相似度,可以找到相似的电影。
3.3 推荐算法在计算出用户和电影的相似度后,可以根据相似用户的评分数据来为用户进行电影推荐。
基于协同过滤的电影推荐系统设计与实现

基于协同过滤的电影推荐系统设计与实现电影推荐系统是当今互联网平台上广泛应用的一个重要功能。
随着数字化时代的到来,电影产业已经成为人们日常娱乐生活的一部分,电影推荐系统的设计与实现变得越来越重要。
基于协同过滤的电影推荐系统正是其中的一种常用方法。
协同过滤是一种以用户行为数据为基础的推荐算法,它通过分析用户的历史行为以及与其他用户的相似性,来推荐给用户相似兴趣的电影。
首先,在设计电影推荐系统时,我们需要收集用户的历史行为数据。
这些数据可以包括用户的观影记录、评分、收藏和评论等。
通过这些数据,我们可以了解用户的电影偏好,从而进行推荐。
其次,我们需要对用户进行建模,即根据用户的历史行为数据构建用户兴趣模型。
常用的方法是使用矩阵分解技术,将用户行为数据表示为一个稀疏的矩阵,并使用特征提取的方法来降低矩阵的维度。
通过降维后的用户行为矩阵,我们可以获取到用户的兴趣模型。
然后,我们需要根据用户的兴趣模型与其他用户进行相似性计算。
常用的相似性计算方法有余弦相似度和皮尔逊相关系数等。
通过计算用户与其他用户之间的相似性,我们可以找到与用户兴趣相似的其他用户。
接下来,我们可以利用其他相似用户的喜好来为用户进行电影推荐。
这个过程可以通过计算相似用户对某部电影的评分进行加权平均来实现。
例如,对于某个用户,我们可以计算出与他兴趣相似的一组用户,并根据这些用户对某部电影的评分,计算出该用户对这部电影的喜好程度。
然后,将预测的用户喜好程度与用户历史评分进行比较,从而给用户进行电影推荐。
当然,协同过滤算法也存在一些问题。
一方面,当用户行为数据稀疏时,很难找到与用户兴趣相似的其他用户,从而准确地进行推荐。
另一方面,协同过滤算法容易陷入“长尾问题”,即只关注热门电影而忽视冷门电影。
解决这一问题的方法可以是引入混合推荐算法,将协同过滤算法与其他推荐算法相结合。
此外,为了提高电影推荐系统的准确性和个性化程度,我们还可以考虑引入用户标签信息。
基于协同过滤算法的电影推荐系统设计研究

基于协同过滤算法的电影推荐系统设计研究近年来,电影产业飞速发展,人们的观影需求也是越来越高。
然而,面对海量的电影资源,如何从中找到自己感兴趣的电影,成为了一个问题。
这时候,电影推荐系统应运而生。
电影推荐系统是基于用户的历史行为,分析用户的兴趣和行为,对用户进行个性化的推荐,提高用户的使用体验。
其中,协同过滤算法是一种比较常用的推荐算法。
一、协同过滤算法介绍协同过滤算法是一种利用用户对电影评分等行为,计算电影之间相似性的方法。
通过用户对电影进行评分,电影的相似性可以通过计算电影之间的相似性矩阵得到。
最终根据用户的历史评分,为用户推荐最有可能感兴趣的电影。
协同过滤算法主要分为两种:基于用户的协同过滤和基于物品的协同过滤。
基于用户的协同过滤算法是将用户看电影的历史记录进行比较,找到有相似观影记录的用户群,然后根据这个用户群的观影偏好,为当前用户进行电影推荐。
基于物品的协同过滤算法是通过比较电影之间的相似度,找到用户喜欢的电影,然后根据用户对这些电影的评分进行推荐。
基于用户和基于物品的协同过滤算法各有优缺点。
基于用户的协同过滤算法计算量大,但是比基于物品的协同过滤算法更能够表现用户的兴趣;而基于物品的协同过滤算法适合计算电影间相似度的场合,用时间更快。
二、电影推荐系统的设计与实现电影推荐系统的设计与实现分为四个步骤:1.用户数据预处理用户数据预处理是电影推荐系统的第一步。
对于每个用户,我们需要记录他的userid和电影评分等数据。
2.电影相似度矩阵计算电影相似度矩阵的计算是电影推荐系统的核心环节。
我们需要基于用户评分数据,计算出电影之间的相似度。
计算电影之间相似度的方式主要有两种:欧几里得距离和余弦相似度。
3.用户电影倾向性分析用户电影倾向性分析是针对每个用户的个性化推荐的环节。
我们需要给每个用户计算出一个电影倾向性矩阵,用于计算用户对新电影的兴趣。
4.推荐算法实现推荐算法实现是电影推荐系统的最后一步。
基于协同过滤算法的电影推荐系统设计

基于协同过滤算法的电影推荐系统设计随着互联网技术的进步和普及,电影成为了人们消费休闲娱乐的重要方式之一。
越来越多的人喜欢在家里观看电影,但是如何选择一部好的电影却成为了一个不小的问题。
在此背景下,电影推荐系统逐渐流行并应用于各大在线电影平台。
本文将探讨基于协同过滤算法的电影推荐系统设计。
一、系统需求1.1 系统功能电影推荐系统的主要功能是根据用户的历史观看记录和评论进行电影推荐,并推荐用户感兴趣的电影。
1.2 系统目标该系统的目标是提高用户观看电影的体验,减少用户的选择困难,促进平台用户的留存。
二、系统架构2.1 系统流程基于协同过滤算法的电影推荐系统流程如下:1)获取用户数据:获取用户历史观看记录和评论数据;2)数据预处理:对用户历史观看记录进行预处理,包括数据清洗、特征提取等;3)相似度计算:通过计算电影之间的相似度,为用户推荐相似电影;4)矩阵分解:通过将用户-电影评分矩阵分解为用户-主题矩阵和电影-主题矩阵,提高系统的性能;5)推荐算法:在用户-主题矩阵和电影-主题矩阵的基础上,采用基于邻域的推荐算法为用户推荐电影。
2.2 系统架构图电影推荐系统的架构如下:三、系统设计3.1 数据预处理数据预处理是为了提高电影推荐系统的准确度和性能,包括数据清洗、特征提取等。
3.1.1 数据清洗电影推荐系统的数据清洗主要包括去重、缺失值填充等。
为了提高数据的质量,需要对原始数据进行清洗和处理。
3.1.2 特征提取特征提取是对数据进行分析和处理的关键环节。
可以通过用户的历史观看记录和评分信息,提取用户的兴趣特征,通过分析电影的属性,提取电影的特征。
3.2 相似度计算相似度计算是电影推荐系统的核心算法。
常用的相似度计算方法有欧式距离、余弦相似度、皮尔逊相关系数等。
在相似度计算时,需要考虑多个因素,如电影类型、导演、演员等因素,以及用户的历史观看记录和评分信息。
3.3 矩阵分解矩阵分解是优化电影推荐系统的一种方式。
基于协同过滤算法的电影推荐系统设计与实现

基于协同过滤算法的电影推荐系统设计与实现随着大数据时代的到来,电影推荐系统的设计和实现变得愈发重要。
用户在面对庞大电影库时,如何迅速找到自己感兴趣的电影成为了一项挑战。
基于协同过滤算法的电影推荐系统便是一种解决方案,它能够根据用户的兴趣和行为历史,向用户推荐最相关的电影。
一、协同过滤算法简介1.1 用户行为基础协同过滤算法的基础是用户行为数据,包括用户对电影的评分、点击、收藏等行为记录。
这些数据反映了用户的喜好和兴趣,是推荐系统的重要依据。
1.2 基于用户的协同过滤算法基于用户的协同过滤算法通过计算用户之间的相似性,找到与目标用户兴趣最相近的邻居用户,然后根据邻居用户的行为记录向目标用户进行推荐。
这种算法的优势是简单直观,容易理解和解释。
1.3 基于物品的协同过滤算法基于物品的协同过滤算法则是通过计算电影之间的相似性,找到与目标电影最相似的邻居电影,然后根据邻居电影的评分记录向目标用户进行推荐。
这种算法的优势是能够避免用户之间的数据稀疏问题,且计算复杂度相对较低。
二、电影推荐系统设计与实现2.1 数据获取与预处理构建一个有效的电影推荐系统首先需要收集和整理足够数量的电影数据,包括电影信息、用户评分等。
同时,需要对数据进行清洗和预处理,去除异常值和缺失值。
2.2 用户兴趣建模用户兴趣的建模是推荐系统的核心任务之一。
可以采用用户行为矩阵来表示,矩阵的行代表用户,列代表电影,矩阵的值代表用户对电影的评分或行为记录。
2.3 计算用户之间的相似度在基于用户的协同过滤算法中,计算用户之间的相似度是关键步骤。
常用的相似度度量方法有欧几里得距离、余弦相似度等。
根据相似度计算结果,可以找到与目标用户最相近的邻居用户。
2.4 计算电影之间的相似度基于物品的协同过滤算法中,计算电影之间的相似度同样是重要的一步。
可以采用基于内容的方法,通过计算电影的特征向量之间的相似度来衡量电影之间的相似性。
2.5 生成推荐列表根据用户之间的相似度或者电影之间的相似度,可以得到用户或者电影的近邻列表。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
高级数据挖掘期末大作业基于协同过滤算法的电影推荐系统本电影推荐系统中运用的推荐算法是基于协同过滤算法(Collaborative Filtering Recommendation)。
协同过滤是在信息过滤和信息系统中正迅速成为一项很受欢迎的技术。
与传统的基于内容过滤直接分析内容进行推荐不同,协同过滤分析用户兴趣,在用户群中找到指定用户的相似(兴趣)用户,综合这些相似用户对某一信息的评价,形成系统对该指定用户对此信息的喜好程度预测。
电影推荐系统中引用了Apache Mahout提供的一个协同过滤算法的推荐引擎Taste,它实现了最基本的基于用户和基于内容的推荐算法,并提供了扩展接口,使用户方便的定义和实现自己的推荐算法。
电影推荐系统是基于用户的推荐系统,即当用户对某些电影评分之后,系统根据用户对电影评分的分值,判断用户的兴趣,先运用UserSimilarity计算用户间的相似度.UserNeighborhood根据用户相似度找到与该用户口味相似的邻居,最后由Recommender提供推荐个该用户可能感兴趣的电影详细信息。
将用户评过分的电影信息和推荐给该用户的电影信息显示在网页结果页中,推荐完成。
一、Taste 介绍Taste是Apache Mahout 提供的一个个性化推荐引擎的高效实现,该引擎基于java实现,可扩展性强,同时在mahout中对一些推荐算法进行了MapReduce 编程模式转化,从而可以利用hadoop的分布式架构,提高推荐算法的性能。
在Mahout0.5版本中的Taste,实现了多种推荐算法,其中有最基本的基于用户的和基于内容的推荐算法,也有比较高效的SlopeOne算法,以及处于研究阶段的基于SVD和线性插值的算法,同时Taste还提供了扩展接口,用于定制化开发基于内容或基于模型的个性化推荐算法。
Taste 不仅仅适用于Java 应用程序,还可以作为内部服务器的一个组件以HTTP 和Web Service 的形式向外界提供推荐的逻辑。
Taste 的设计使它能满足企业对推荐引擎在性能、灵活性和可扩展性等方面的要求。
下图展示了构成Taste的核心组件:从上图可见,Taste由以下几个主要组件组成:DataModel:DataModel是用户喜好信息的抽象接口,它的具体实现支持从指定类型的数据源抽取用户喜好信息。
在Mahout0.5中,Taste 提供JDBCDataModel 和FileDataModel两种类的实现,分别支持从数据库和文件文件系统中读取用户的喜好信息。
对于数据库的读取支持,在Mahout 0.5中只提供了对MySQL和PostgreSQL的支持,如果数据存储在其他数据库,或者是把数据导入到这两个数据库中,或者是自行编程实现相应的类。
UserSimilarit和ItemSimilarity:前者用于定义两个用户间的相似度,后者用于定义两个项目之间的相似度。
Mahout支持大部分驻留的相似度或相关度计算方法,针对不同的数据源,需要合理选择相似度计算方法。
UserNeighborhood:在基于用户的推荐方法中,推荐的内容是基于找到与当前用户喜好相似的“邻居用户”的方式产生的,该组件就是用来定义与目标用户相邻的“邻居用户”。
所以,该组件只有在基于用户的推荐算法中才会被使用。
Recommender:Recommender是推荐引擎的抽象接口,Taste 中的核心组件。
利用该组件就可以为指定用户生成项目推荐列表。
二、相似性度量本章节将系统中用到的几个相似性度量函数作以介绍,taste中已经具体实现了各相似性度量类。
User CF 和Item CF 都依赖于相似度的计算,因为只有通过衡量用户之间或物品之间的相似度,才能找到用户的“邻居”,才能完成推荐。
下面就对常用的相似度计算方法进行详细的介绍:1. 基于皮尔森相关性的相似度—— Pearson correlation-based similarity皮尔森相关系数反应了两个变量之间的线性相关程度,它的取值在[-1, 1]之间。
当两个变量的线性关系增强时,相关系数趋于1或-1;当一个变量增大,另一个变量也增大时,表明它们之间是正相关的,相关系数大于0;如果一个变量增大,另一个变量却减小,表明它们之间是负相关的,相关系数小于0;如果相关系数等于0,表明它们之间不存在线性相关关系。
用数学公式表示,皮尔森相关系数等于两个变量的协方差除于两个变量的标准差。
Pearson correlation-based similarity协方差(Covariance):在概率论和统计学中用于衡量两个变量的总体误差。
如果两个变量的变化趋于一致,也就是说如果其中一个大于自身的期望值,另一个也大于自身的期望值,那么两个变量之间的协方差就是正值;如果两个变量的变化趋势相反,则协方差为负值。
Covariance其中u表示X的期望E(X), v表示Y的期望E(Y)标准差(Standard Deviation):标准差是方差的平方根Standard Deviation方差(Variance):在概率论和统计学中,一个随机变量的方差表述的是它的离散程度,也就是该变量与期望值的距离。
Variance即方差等于误差的平方和的期望基于皮尔森相关系数的相似度有两个缺点:(1) 没有考虑(take into account)用户间重叠的评分项数量对相似度的影响;(2) 如果两个用户之间只有一个共同的评分项,相似度也不能被计算Table1上表中,行表示用户(1~5)对项目(101~103)的一些评分值。
直观来看,User1和User5用3个共同的评分项,并且给出的评分走差也不大,按理他们之间的相似度应该比User1和User4之间的相似度要高,可是User1和User4有一个更高的相似度1。
同样的场景在现实生活中也经常发生,比如两个用户共同观看了200部电影,虽然不一定给出相同或完全相近的评分,他们之间的相似度也应该比另一位只观看了2部相同电影的相似度高吧!但事实并不如此,如果对这两部电影,两个用户给出的相似度相同或很相近,通过皮尔森相关性计算出的相似度会明显大于观看了相同的200部电影的用户之间的相似度。
Mahout对基于皮尔森相关系数的相似度给出了实现,它依赖一个DataModel 作为输入。
PearsonCorrelationSimilarity同时,Mahout还针对缺点(1)进行了优化,只需要在构造PearsonCorrelationSimilarity时多传入一个Weighting.WEIGHTED参数,就能使有更多相同评分项目的用户之间的相似度更趋近于1或-1。
UserSimilarity similarity1 = new PearsonCorrelationSimilarity(model);double value1 = erSimilarity(1, 5);UserSimilarity similarity2 = new PearsonCorrelationSimilarity(model, Weighting.WEIGHTED);double value2 = erSimilarity(1, 5);结果:Similarity of User1 and User5: 0.944911182523068Similarity of User1 and User5 with weighting: 0.96556948907691752. 基于欧几里德距离的相似度—— Euclidean Distance-based Similarity欧几里德距离计算相似度是所有相似度计算里面最简单、最易理解的方法。
它以经过人们一致评价的物品为坐标轴,然后将参与评价的人绘制到坐标系上,并计算他们彼此之间的直线距离。
Euclidean Distance 2-CoordinateTable2图中用户A和用户B分别对项目X、Y进行了评分。
用户A对项目X的评分为2,对项目Y的评分为4,表示到坐标系中为坐标点A(1.8, 4);同样用户B 对项目X、Y的评分表示为坐标点B(4.5, 2.5),因此他们之间的欧几里德距离(直线距离)为:sqrt((B.x - A.x)^2 + (A.y - B.y)^2)Euclidean Distance计算出来的欧几里德距离是一个大于0的数,为了使其更能体现用户之间的相似度,可以把它规约到(0, 1]之间,具体做法为:1 / (1 + d)。
参见Table2Euclidean Distance-basedSimilarity只要至少有一个共同评分项,就能用欧几里德距离计算相似度;如果没有共同评分项,那么欧几里德距离也就失去了作用。
其实照常理理解,如果没有共同评分项,那么意味着这两个用户或物品根本不相似。
3. 余弦相似度—— Cosine Similarity余弦相似度用向量空间中两个向量夹角的余弦值作为衡量两个个体间差异的大小。
相比距离度量,余弦相似度更加注重两个向量在方向上的差异,而非距离或长度上。
Cosine Similarity与欧几里德距离类似,基于余弦相似度的计算方法也是把用户的喜好作为n-维坐标系中的一个点,通过连接这个点与坐标系的原点构成一条直线(向量),两个用户之间的相似度值就是两条直线(向量)间夹角的余弦值。
因为连接代表用户评分的点与原点的直线都会相交于原点,夹角越小代表两个用户越相似,夹角越大代表两个用户的相似度越小。
同时在三角系数中,角的余弦值是在[-1, 1]之间的,0度角的余弦值是1,180角的余弦值是-1。
借助三维坐标系来看下欧氏距离和余弦相似度的区别:Distance and Cosine 3-Coordinates从图上可以看出距离度量衡量的是空间各点间的绝对距离,跟各个点所在的位置坐标(即个体特征维度的数值)直接相关;而余弦相似度衡量的是空间向量的夹角,更加的是体现在方向上的差异,而不是位置。
如果保持A点的位置不变,B点朝原方向远离坐标轴原点,那么这个时候余弦相似度cosθ是保持不变的,因为夹角不变,而A、B两点的距离显然在发生改变,这就是欧氏距离和余弦相似度的不同之处。
根据欧氏距离和余弦相似度各自的计算方式和衡量特征,分别适用于不同的数据分析模型:欧氏距离能够体现个体数值特征的绝对差异,所以更多的用于需要从维度的数值大小中体现差异的分析,如使用用户行为指标分析用户价值的相似度或差异;而余弦相似度更多的是从方向上区分差异,而对绝对的数值不敏感,更多的用于使用用户对内容评分来区分用户兴趣的相似度和差异,同时修正了用户间可能存在的度量标准不统一的问题(因为余弦相似度对绝对数值不敏感)。