1、本 科 毕 业 论 文个性化电影推荐系统的设计及实现协同过滤算法分析Design and Implementation of Personalized Movie Recommender SystemCollaborative Filtering Analysis姓 名: 学 号:学 院:软件学院系:软件工程专 业:软件工程年 级:指导教师: 年 月I摘 要随着网络技术的应用和普及、电子商务的迅猛发展,越来越多的信息充斥在网络之上。如何在众多的资源中找到适合自己需求的信息,成为众多学者、专家和网络用户关心的核心问题之一。推荐系统根据用户访问项目的历史记录以及项目之间的相关信息可以构建用户的兴趣
2、模型,对繁杂的信息进行过滤,并向用户推荐其可能感兴趣的项目。推荐系统已经成为目前解决信息过载最有效的工具之一。协同过滤技术是推荐系统最为核心的技术之一,也是目前应用最为广泛和成功的技术。协同过滤算法可以分为基于全局的算法和基于模型的算法两种,其中基于全局的算法主要依赖最近邻算法,又可以分为基于用户的全局算法和基于项目的全局算法。 基于模型的方法则有贝叶斯网络方法、奇异值分解的方法等。本文以推荐系统的协同过滤算法为研究目标,基于 MovieLens 数据集,通过对算法 MAE 值的计算,比较了基于全局的协同过滤算法中不同相似度算法的准确性,以及特征向量维度和迭代次数的对奇异值分解方法的协同过滤算
3、法的影响。关键词:个性化推荐;协同过滤;MAE 值IIAbstract As the increasing popularity of the network technology and the rapid development of e-commerce, more and more information is flooding in the network. How to find information adapted to their needs in huge resources has become the core issue of concern of many scho
4、lars, experts and Internet users. Recommender system builds the users interest model based on the history of user accesses and related information, filters the complex information, provides recommendations users may be interested in. Recommender system has become one of the most effective tool to so
5、lve information overload.Collaborative filtering is one of the most core technology in recommendation system, and currently the most widely used and successful technique in this field as well. Collaborative filtering algorithms can be classified as the neighbourhood based algorithm and the model-bas
6、ed algorithm. The neighbourhood based filtering relied on the global nearest neighbour algorithm can be divided into user-based filtering and item-based filtering. Model-based methods have Bayesian network method, singular value decomposition methods, etc.In this paper, the collaborative filtering a
7、lgorithm in recommendation system is our mainly research objectives. We use MovieLens data set, calculate the MAE value of algorithms, compare the accuracy of different collaborative filtering algorithms for similarity, and analyse the influence of the feature vector dimension and the number of init
8、ial steps on the singular value decomposition on collaborative filtering algorithms. Key words: Personalized Recommendation; Collaborative Filtering; MAEIII目录第 l 章 绪论 .11.1 研究背景与意义 11.2 问题现状 1第 2 章 个性化推荐系统 .42.1 个性化推荐系统概述 42.2 个性化推荐系统结构 42.3 个性化推荐系统技术 5第 3 章 协同过滤算法综述 .83.1 协同过滤算法步骤 83.2 协同过滤算法分类 83.
9、2.1 基于全局的协同过滤算法 .93.2.2 基于模型的协同过滤算法 103.3 协同过滤算法的优势 .123.4 存在问题 .12第 4 章 推荐模块及算法分析 144.1 推荐模块 .144.2 Taste 工具简介 174.3 算法分析 .194.3.1 基于全局的协同过滤算法 194.3.2 基于模型的协同过滤算法 254.4 实验与结果 .294.4.1 实验数据 294.4.2 评价标准 294.4.3 实验过程与结果分析 33第 5 章 结论 395.1 总结 .395.2 展望 .39致谢 .43参考文献 .41IVContentsChapter 1 Introduction
10、 11.1 Background and Purpose 11.2 History 1Chapter 2 Personalized Recommender System.42.1 Outline 42.2 Architecture .42.3 Techiques5Chapter 3 Summary of Collaborative Filtering Algorithms 83.1 Procedure of Algorithms.83.2 Classification83.2.1 Neighborhood-based Collaborative Filtering93.2.1 Model-ba
11、sed Collaborative Filtering.103.3 Advantages .123.4 Problems.12Chapter 4 Recommender Module and Algorithm Analysis .144.1 Recommender Module 144.2 Introduction of Taste.174.3 Algorithm Analysis194.3.1 Neighborhood-based Collaborative Filtering194.3.2 Model-based Collaborative Filtering.254.4 Experim
12、ents and Results 294.4.1 Experimental Data.294.4.2 Evaluation Criterias.294.4.3 Experimental Procedures and Results Analysis.33Chapter 5 Conclusion.395.1 Summary 395.2 Prospect 39Acknowledge .43References41个性化电影推荐系统的设计及实现协同过滤算法分析1第 l 章 绪论1.1 研究背景与意义随着信息高速公路的发展和普及,信息量以指数规律迅猛地增长和扩展,因而形成了“信息过载” 1。对于普通的
13、用户来说,信息过载己经成为日益严重的问题。信息过载是由于互联网提供的信息的复杂性和广泛性,并且限于浏览者的知识水平与认识能力,造成浏览者无法正确理解和使用信息。解决这些问题关键在于将互联网从被动接受浏览者的请求转化为主动感知浏览者的信息需求,实现互联网系统对浏览者的主动信息服务。新一代的信息服务将是个性化主动信息服务,如何从海量的数据和信息中高效地获取有用知识,如何从迅速爆炸的信息中及时地获取最新信息,如何提高信息检索与推送的智能水平,以及如何满足各种用户不同的个性化需求等,都是新的信息服务系统面临的挑战性课题。推荐系统就是在这种背景下,应运而生。它可以为浏览者提供个性化的信息推荐服务。这同传
14、统的“一对多”式的搜索引擎信息服务完全不同,返回的结果质量更高、用户参与程度更低,大大降低了用户寻找信息的成本。协同过滤是目前各种推荐系统中应用最为广泛和成功的技术。它解决问题的思路是:既然机器自动内容分析不完全、不精确,那么可以用人类自身的评价过滤掉那些杂乱、低质量的信息。协同过滤通过相似性计算找到相似用户群,根据兴趣相似用户的评价,产生对某些事物的预测评价。同传统的基于内容的过滤相比,协同过滤可以发现用户本身没有发现的新的兴趣;由于共享了他人的评价和经验,因此推荐质量较高。1.2 问题现状协同过滤推荐技术是推荐系统中应用最早和最为成功的技术之一。它一般采用最近邻技术,利用用户的历史喜好信息
15、计算用户之间的距离,然后利用目标用户的最近邻居用户对商品评价的加权评价值来预测目标用户对特定商品的喜好程度,系统从而根据这一喜好程度来对目标用户进行推荐。协同过滤最大优点是对个性化电影推荐系统的设计及实现协同过滤算法分析2推荐对象没有特殊的要求,能处理非结构化的复杂对象,如音乐、电影。协同过滤推荐技术也存在自身的不足,主要表现在用户评分数据比较少的时候推荐质量比较低。因此多种数据多种技术的有效集成得到研究者的重视。Balabanovi 等人提出通过基于内容的过滤和协同过滤的复合型推荐系统提高推荐质量。文中提出基于 Web 使用挖掘和 Web 内容挖掘的推荐系统。近几年电子商务的快速发展推动了推
16、荐系统的发展,其商业应用不断的扩大,诸如互联网上最大的书店 Amazoncorn,Web 上最大的 CD 商店 CDNowcorn,全球最大的 C2C 网站淘宝网等等。由微软研究院开发的协同过滤工具己被集成在微软的 Commerce Server 产品中,并被许多站点使用。协同过滤技术作为在线购物网站的一部分越来越流行,国际上著名的个性化推荐系统也很多,一些典型推荐系统的开发情况如表 1-1 所示。表 1-1 典型推荐系统及开发人员和时间 2Ringo 是由麻省理工学院的研究人员设计的一个音乐推荐系统。这个系统会要求用户首先对音乐家作出评比,再依据评比的结果计算用户的相似度,然后将系统名称 开
17、发设计人员与时间 应用领域Tapestry Goldberg 1992 邮件过滤Grouplens Resnick 1994 网络新闻推荐Ringo Shardanand 1995 音乐推荐PSUN Sorenson 1995 网络新闻过滤InfoFinder Kruwilch 1996 信息推荐LifeStyle Finder Krulwich 1997 购物向导、旅游推荐Personal WebWatcher Mladenic 1998 网页和网站的推荐Movielens Good 1999 电影推荐ACR New Mobasher 2000 网络新闻过滤WebSell Cunningha
18、m 2001 购物推荐Amazon Amazon 2003 电子商务领域,书籍推荐个性化电影推荐系统的设计及实现协同过滤算法分析3用户分群,最后再由同一族群的用户互相推荐音乐 3。GroupLens 是由 Minnesota 大学开发的自动协同过滤推荐系统,用于新闻组信息推荐。GroupLens 系统通过用户的评分信息自动搜索用户的最近邻,然后根据最近邻居的评分信息产生最终的推荐结果 4。MovieLens 也是由 Minnesota 大学开发的研究型自动协同过滤推荐系统,用于推荐电影。与 GroupLens 不同,MovieLens 系统是一个基于 Web 的荐系统,系统通过浏览器的方式收集
19、用户评分数据和展示推荐结果。个性化电影推荐系统的设计及实现协同过滤算法分析4第 2 章 个性化推荐系统2.1 个性化推荐系统概述个性化推荐系统正式的定义是 Resnick 是该类中的抽象方法,子类EuclideanDistanceSimilarity和PearsonCorrelationSimilarity通过对该方法的实现,提供了不同相似度的计算方法。(1)Euclidean 距离相似度欧氏距离是一个通常采用的距离定义,它是在 m 维空间中两个点之间的真实距离。n 维欧氏空间是一个点集,它的每个点可以表示为( ),其中 是实nx,.21i数,称为 的第 i 个坐标,两个点 x 和 y( )之
20、间的距离 d(x,y)定义为公x ny,.21式(5) 。(5)欧式距离在这里用来表示用户或项之间的相似程度,我们将根据用户评分计算出的相似距离处理为(0,1之间的数值,即取(6))1/(ddsimlarty主要实现代码如下所示。Overridedouble computeResult(int n, double sumXY, double sumX2, double sumY2, double sumXYdiff2) if (n = 0) return Double.NaN; double denominator = Math.sqrt(sumX2) + Math.sqrt(sumY2);i
21、f (denominator = 0.0) return Double.NaN; /数量上标准化sumXYdiff2 /= denominator;/ 除以n以避免自动为用户提供重复的相似度return 1.0 / (1.0 + (Math.sqrt(sumXYdiff2) / (double) niiyxyxd12)(),(个性化电影推荐系统的设计及实现协同过滤算法分析21n); (2)Pearson 相关系数Person 相关系数表示的用户 a 和用户 b 之间的相关性的计算公式如下:(1)bababaIjbjIjj jbIjajab vvcor , 2,2, , )()(其中 代表用户
22、i 对项目 j 所作的评分, , 分别是用户 a 和用户 b 所有打过ijv a分的项目的平均得分。该系数的中心平均值为 0,可以看作两个用户评分向量之间的夹角余弦。主要实现代码如下所示。Overridedouble computeResult(int n, double sumXY, double sumX2, double sumY2, double sumXYdiff2) if (n = 0) return Double.NaN; double xTerm = Math.sqrt(sumX2);double yTerm = Math.sqrt(sumY2);double denomina
23、tor = xTerm * yTerm;if (denominator = 0.0) /如果一个或两个部分的值完全一样,这样的测量方式并不能解释它们之间的相似度return Double.NaN; return sumXY / denominator; (3)Spearman 相关系数Spearman 相关系数和 Person 相关系数类似,但该系数比较的是用户评分的相对排序,而不是评分本身值的大小。每个用户的评分被分类后,根据评分值被赋予一个排序,比如,评分为 1 的项目被排为最不被选择的项目。个性化电影推荐系统的设计及实现协同过滤算法分析22主要实现代码如下所示。/ 根据用户对项目的评分,
24、为项目分配排序float nextRank = 1.0f;for (int i = 0; i yIndex ? 1 : 0;if (compare = 0) double diff = xPrefs.getValue(xPrefIndex) - yPrefs.getValue (yPrefIndex);sumXYRankDiff2 += diff * diff;count+; if (compare = xLength) break; xIndex = xPrefs.getItemID(xPrefIndex); if (compare = 0) if (+yPrefIndex = yLengt
25、h) break; yIndex = yPrefs.getItemID(yPrefIndex); if (count = 1) return Double.NaN; return 1.0 - (6.0 * sumXYRankDiff2 / (count * 个性化电影推荐系统的设计及实现协同过滤算法分析23(count*count - 1); (4)Tanimoto 相关系数 21我们将关于用户 a 和用户 b 的记录看作是两个向量,可用向量之间夹角的余弦值来表示用户的相似度,如公式(2)所示。(2)|b*|,)cos(由于向量 与向量 之间的夹角在0, 之间,相似度-1 表示完全相反,0 表
26、示ab相互独立,1 表示完全相同,之间的数值则表示中等的相似性或不相关。余弦相关性的方法还可以扩展到二进制属性的情况。Tanimoto 相关系数 如公式)(BA,T(3)所示。(3)222|B|A|), (T这是为二进制数据集设计的相关性算法,其中用户对项目的偏好只简单表示为“是”或没有偏好。实际的评分值在这里并没有起作用,只取决于评分是否存在。主要实现代码如下所示。Overridepublic double userSimilarity(long userID1, long userID2) throws TasteException FastIDSet xPrefs = dataModel
27、.getItemIDsFromUser(userID1);FastIDSet yPrefs = dataModel.getItemIDsFromUser(userID2);/比较排序值并计算相似度if (xPrefs.isEmpty() if (xPrefs.isEmpty() | yPrefs.isEmpty() 个性化电影推荐系统的设计及实现协同过滤算法分析24return 0.0; /计算xPrefs与yPrefs 中交集数目int intersectionSize = xPrefs.intersectionSize(yPrefs);if (intersectionSize = 0) r
28、eturn Double.NaN; int unionSize = xPrefs.size() + yPrefs.size() - intersectionSize;return (double) intersectionSize / (double) unionSize; (5)LogLikelihood 相似度 22我们可以使用极大似然估计法来估计文字之间出现的频率,并基于这样的分析结果预测用户的偏好。图 4-6:文字关联可能性分析图 22图 4-6 给出了对文字出现的排列组合分析,其中AB 表示第一个出现的字是A 而第二个出现的字是 B,依此类推。根据训练集中提供的文本信息,我们可以计算
29、出在 B 出现的条件下 A 出现的概率分布。最大似然估计方法如下所示。 ),(log),(log),(log),(log2l 2121 nkpLnkpLnkpLnkpL , ,1nkp221nkp主要代码实现如下所示。double logLikelihood = twoLogLambda(intersectionSize,prefs1Size - intersectionSize, prefs2Size, numItems - prefs2Size);return 1.0 - 1.0 / (1.0 + logLikelihood);个性化电影推荐系统的设计及实现协同过滤算法分析25static
30、 double twoLogLambda(double k1, double k2, double n1, double n2) double p = (k1 + k2) / (n1 + n2);return 2.0 * (logL(k1 / n1, k1, n1) + logL(k2 / n2, k2, n2) - logL(p, k1, n1) - logL(p, k2, n2); private static double logL(double p, double k, double n) return k * safeLog(p) + (n - k) * safeLog(1.0 -
31、p); private static double safeLog(double d) return d = 0.0 ? 0.0 : Math.log(d); 4.3.2 基于模型的协同过滤算法基于模型的协同过滤算法有很多种,这里我们主要针对基于奇异值分解的协同过滤算法进行分析比较。奇异值分解是一种矩阵分解技术,它是一种有效的代数特征提取方法,深刻揭露了矩阵的内部结构。奇异值分解可以将一个 m n 的矩阵 R 分解为 U,S,V。其中 R=US ,其中 U 是 mm 的正交矩阵( =I),V 是一个 nn 的正交TVTU矩阵( =I),S 是一个 mn 矩阵,它的非对角线上的元素全为 O,而对
32、角线上的元素满足 (假设 m n)23。021n所有的 大于 0 且由大到小排序,称为奇异值,通常 U,S,V 必须是满秩的。nSVD 允许存在一个简化的近似矩阵。对于 S,保留 k 个最大的奇异值,将其余的用 0 代替,这样我们就可以将 S 进行维数简化为仅有 k 个奇异值的矩阵(kn)。可以将 S 中的值为 0 的行和列删除,得到一个新的对角矩阵 ,同理矩阵 U 和 VkS也可以简化为矩阵 和 ,重构得到的矩阵 ,RkR。kUVTkkVURSarwar 等人使用奇异值分解的方法将用户评分分解为不同的特征及这些特征对应的重要程度,这种方法利用了用户与项目之间的潜在关系,用初始评价矩阵的奇异值分解去抽取一些本质的特征。