一、协同过滤算法描述
推荐系统应用数据分析技术,找出用户最可能喜欢的东西推荐给用户,现在很多电子商务网站都有这个应用。目前用的比较多、比较成熟的推荐算法是协同过滤(Collaborative Filtering,简称CF)推荐算法,CF的基本思想是根据用户之前的喜好以及其他兴趣相近的用户的选择来给用户推荐物品。
如图1所示,在CF中,用m×n的矩阵表示用户对物品的喜好情况,一般用打分表示用户对物品的喜好程度,分数越高表示越喜欢这个物品,0表示没有买过该物品。图中行表示一个用户,列表示一个物品,Uij表示用户i对物品j的打分情况。CF分为两个过程,一个为预测过程,另一个为推荐过程。预测过程是预测用户对没有购买过的物品的可能打分值,推荐是根据预测阶段的结果推荐用户最可能喜欢的一个或Top-N个物品。
二、User-based算法与Item-based算法对比
CF算法分为两大类,一类为基于memory的(Memory-based),也叫基于用户的(User-based),另一类为基于Model的(Model-based),也叫基于物品的(Item-based)。
User-based的基本思想是如果用户A喜欢物品a,用户B喜欢物品a、b、c,用户C喜欢a和c,那么认为用户A与用户B和C相似,因为他们都喜欢a,而喜欢a的用户同时也喜欢c,所以把c推荐给用户A。该算法用最近邻居(nearest-neighbor)算法找出一个用户的邻居集合,该集合的用户和该用户有相似的喜好,算法根据邻居的偏好对该用户进行预测。
User-based算法存在两个重大问题:
1. 数据稀疏性。一个大型的电子商务推荐系统一般有非常多的物品,用户可能买的其中不到1%的物品,不同用户之间买的物品重叠性较低,导致算法无法找到一个用户的邻居,即偏好相似的用户。
2. 算法扩展性。最近邻居算法的计算量随着用户和物品数量的增加而增加,不适合数据量大的情况使用。
Iterm-based的基本思想是预先根据所有用户的历史偏好数据计算物品之间的相似性,然后把与用户喜欢的物品相类似的物品推荐给用户。还是以之前的例子为例,可以知道物品a和c非常相似,因为喜欢a的用户同时也喜欢c,而用户A喜欢a,所以把c推荐给用户A。
因为物品直接的相似性相对比较固定,所以可以预先在线下计算好不同物品之间的相似度,把结果存在表中,当推荐时进行查表,计算用户可能的打分值,可以同时解决上面两个问题。
三、Item-based算法详细过程
(1)相似度计算
Item-based算法首选计算物品之间的相似度,计算相似度的方法有以下几种:
1. 基于余弦(Cosine-based)的相似度计算,通过计算两个向量之间的夹角余弦值来计算物品之间的相似性,公式如下:
其中分子为两个向量的内积,即两个向量相同位置的数字相乘。
2. 基于关联(Correlation-based)的相似度计算,计算两个向量之间的Pearson-r关联度,公式如下:
其中表示用户u对物品i的打分,表示第i个物品打分的平均值。
3. 调整的余弦(Adjusted Cosine)相似度计算,由于基于余弦的相似度计算没有考虑不同用户的打分情况,可能有的用户偏向于给高分,而有的用户偏向于给低分,该方法通过减去用户打分的平均值消除不同用户打分习惯的影响,公式如下:
其中表示用户u打分的平均值。
(2)预测值计算
根据之前算好的物品之间的相似度,接下来对用户未打分的物品进行预测,有两种预测方法:
1. 加权求和。
用过对用户u已打分的物品的分数进行加权求和,权值为各个物品与物品i的相似度,然后对所有物品相似度的和求平均,计算得到用户u对物品i打分,公式如下:
其中为物品i与物品N的相似度,为用户u对物品N的打分。
2. 回归。
和上面加权求和的方法类似,但回归的方法不直接使用相似物品N的打分值,因为用余弦法或Pearson关联法计算相似度时存在一个误区,即两个打分向量可能相距比较远(欧氏距离),但有可能有很高的相似度。因为不同用户的打分习惯不同,有的偏向打高分,有的偏向打低分。如果两个用户都喜欢一样的物品,因为打分习惯不同,他们的欧式距离可能比较远,但他们应该有较高的相似度。在这种情况下用户原始的相似物品的打分值进行计算会造成糟糕的预测结果。通过用线性回归的方式重新估算一个新的值,运用上面同样的方法进行预测。重新计算的方法如下:
其中物品N是物品i的相似物品,和通过对物品N和i的打分向量进行线性回归计算得到,为回归模型的误差。具体怎么进行线性回归文章里面没有说明,需要查阅另外的相关文献。
四、结论
作者通过实验对比结果得出结论:1. Item-based算法的预测结果比User-based算法的质量要高一点。2. 由于Item-based算法可以预先计算好物品的相似度,所以在线的预测性能要比User-based算法的高。3. 用物品的一个小部分子集也可以得到高质量的预测结果。
转载请注明出处,原文地址:http://blog.csdn.net/huagong_adu/article/details/7362908
分享到:
相关推荐
### 基于协同过滤算法的商品推荐系统设计与实现 #### 一、绪论 - **选题动因**:随着互联网技术的发展和电子商务平台的兴起,如何在海量的商品信息中帮助用户找到他们真正感兴趣的商品成为了商家面临的一个重大...
协同过滤算法(Collaborative Filtering)是一种经典的推荐算法,其基本原理是“协同大家的反馈、评价和意见,一起对海量的信息进行过滤,从中筛选出用户可能感兴趣的信息”。它主要依赖于用户和物品之间的行为关系...
基于协同过滤算法的商品推荐系统是一种常见的推荐系统,它利用用户行为数据来预测用户可能喜欢的商品。协同过滤算法主要基于两个原则:用户-用户协同过滤和物品-物品协同过滤。 在Spring Boot中构建基于协同过滤...
协同过滤算法作为推荐系统的重要技术之一,它通过分析和比较用户之间的偏好关系,对用户进行分组或对物品进行推荐,已广泛应用于电子商务领域,包括电商、视频网站、音乐平台等。 协同过滤算法主要分为两类:基于...
协同过滤算法 java源码 协同过滤常常被用于分辨某位特定顾客可能感兴趣的东西,这些结论来自于对其他相似顾客对哪些产品感兴趣的分析。协同过滤以其出色的速度和健壮性,在全球互联网领域炙手可热。
《基于物品的协同过滤算法在MapReduce框架下的实现与应用》 协同过滤(Collaborative Filtering,简称CF)是推荐系统中最常用的一种算法,它基于用户的行为数据来预测他们可能感兴趣但尚未接触过的物品。而基于物品...
电影推荐系统中运用的推荐算法是基于协同过滤算法(Collaborative Filtering Recommendation)。协同过滤是在信息过滤和信息系统中正迅速成为一项很受欢迎的技术。与传统的基于内容过滤直接分析内容进行推荐不同,...
Java毕业设计基于用户的协同过滤算法实现的商品推荐系统源码+数据库(高分项目).zip该项目是个人高分毕业设计项目源码,已获导师指导认可通过,都经过严格调试,确保可以运行!放心下载使用。 Java毕业设计基于用户...
### 基于协同过滤算法的个性化推荐技术的研究 #### 一、研究背景与意义 在互联网信息爆炸的时代背景下,用户面临着海量的信息选择难题。如何从海量数据中筛选出最符合用户兴趣的内容成为了一个亟待解决的问题。...
在这个数据集中,我们重点探讨基于用户的协同过滤算法,这是一种利用用户之间的相似性来做出推荐的方法。 首先,我们需要理解算法的基本原理。基于用户的协同过滤(User-Based Collaborative Filtering,UBCF)假设...
基于SSM(Spring+SpringMVC+MyBatis)和Vue.js的协同过滤算法电影推荐系统是一个利用用户历史观影记录和评分数据,通过协同过滤算法来预测用户可能喜欢的电影的系统。该系统主要由以下几个模块组成: 用户管理模块:...
协同过滤算法的图书推荐系统-协同过滤算法的图书推荐系统的设计与实现代码-java-ssm-基于ssm的协同过滤算法的图书推荐系统项目-代码-源码-项目-系统-毕设-网站 1、技术栈:java,s sm,vue,ajax,maven,mysql,...
《基于协同过滤算法的旅游推荐系统开发详解》 在当今信息爆炸的时代,个性化推荐系统已成为提升用户体验、提高用户满意度的重要工具。本项目“基于协同过滤算法的旅游推荐系统”正是以此为目标,结合Java、JSP和...
协同过滤算法代码 VS下运行 数据集采用MovieLens
协同过滤算法是推荐系统中的一种重要技术,它利用用户或物品之间的相似性来预测未知评分或偏好,并以此生成推荐。在文档“基于Python的协同过滤算法的设计与实现.pdf”中,介绍了如何使用Python语言设计和实现协同...
《基于Python与协同过滤算法的图书推荐系统设计与实现》 在当今信息爆炸的时代,个性化推荐系统已经成为各类在线服务不可或缺的一部分,特别是在图书推荐领域。本项目聚焦于利用Python编程语言和协同过滤算法来构建...
1. **协同过滤算法原理**: - **用户-用户协同过滤**:这种算法通过寻找与目标用户有相似购买历史或评分行为的其他用户,然后推荐他们喜欢但目标用户尚未接触的图书。 - **物品-物品协同过滤**:这种方法是找到与...
此网站是一个全品类的购物商城系统,然后在传统的购物商城的基础上面加入了协同过滤算法,包括了基于用户的协同过滤算法和基于商品的协同过滤算法。用户协同过滤算法的核心思想在于根据用户评分矩阵计算用户余弦...
协同过滤算法是推荐系统中常用的一种技术,尤其在电影推荐领域有着广泛的应用。协同过滤的基本思想是通过分析用户的历史行为,如对电影的评分,来推测用户未来可能的兴趣。它分为基于用户(User-Based)和基于物品...