文档库 最新最全的文档下载
当前位置:文档库 › 基于Hadoop的协同过滤推荐算法的设计与实现

基于Hadoop的协同过滤推荐算法的设计与实现

单位代码:10293 密级:

专业学位硕士论文

论文题目:基于Hadoop的协同过滤推荐算法的

设计与实现

The Design and Implementation of Colaborative Filtering Recommendation System

Based on Hadoop

Thesis Submitted to Nanjing University of Posts and

Telecommunications for the Degree of

Master of Engineering

By

Li Zhuang

Supervisor: Prof. Wang Xiaojun

February 2016

南京邮电大学学位论文原创性声明

本人声明所呈交的学位论文是我个人在导师指导下进行的研究工作及取得的研究成果。尽我所知,除了文中特别加以标注和致谢的地方外,论文中不包含其他人已经发表或撰写过的研究成果,也不包含为获得南京邮电大学或其它教育机构的学位或证书而使用过的材料。与我一同工作的同志对本研究所做的任何贡献均已在论文中作了明确的说明并表示了谢意。

本人学位论文及涉及相关资料若有不实,愿意承担一切相关的法律责任。

研究生签名:_____________ 日期:____________

南京邮电大学学位论文使用授权声明

本人授权南京邮电大学可以保留并向国家有关部门或机构送交论文的复印件和电子文档;允许论文被查阅和借阅;可以将学位论文的全部或部分内容编入有关数据库进行检索;可以采用影印、缩印或扫描等复制手段保存、汇编本学位论文。本文电子文档的内容和纸质论文的内容相一致。论文的公布(包括刊登)授权南京邮电大学研究生院办理。

涉密学位论文在解密后适用本授权书。

研究生签名:____________ 导师签名:____________ 日期:_____________

摘要

互联网技术的发展与普及满足了互联网用户在信息时代的需求,但是信息数据的海量增长又使用户面临信息超载问题,个性化推荐系统应运而生。其中协同过滤推荐算法是目前个性化推荐技术中应用比较成功的算法之一。但是传统的协同过滤推荐存在数据稀疏性、冷启动和可扩展性等问题。论文对协同过滤算法进行深入研究,对传统的协同过滤算法提出了一些改进方案。主要的工作内容如下:

(1)论文提出在传统协同过滤算法计算项目相似度的过程中,加入项目特征因素。首先根据项目特征信息计算出项目在特征方面的相似度,接着计算项目在用户评分方面的相似度,然后将项目特征相似度和项目评分相似度相结合得到项目的综合相似度。论文改进的算法缓解了数据稀疏性问题。在改进项目相似度计算中加入了项目特征因素时,项目特征相似度与传统的项目评分相似度两者按照一定权值结合。合理的权值选取才能保证最优的推荐结果,因此在训练模块中通过训练数据集去训练权值,然后比较各权值下的MAE值,从中选取最优权值为用户产生推荐。

(2)基于Hadoop平台实现推荐。面对不断涌入的用户和项目,系统负荷及其开销增大时,Hadoop平台系统强大的分布式运算能力可提高对大数据处理的效率。在综合项目相似度模块,通过Hadoop平台与Mahout框架的交互,项目特征相似度的计算、项目评分相似度的计算和综合项目相似度的计算都可以进行离线处理,这样就提高了线上给用户推荐项目的效率。在推荐模块中,Hadoop平台结合了Map-Reduce编程框架对最近邻选取和产生推荐等各个阶段作业进行分布式计算,减少了在数据量庞大情况下计算的运行时间,缩短了生成推荐的时间轴,提高了推荐的整体效率。

关键词: 推荐系统,协同过滤,Hadoop,MapReduce,项目特征相似度

Abstract

The development of Internet Technology fulfills the demand of Internet Users in the era of information. However, users have to face the huge amount of information which leads to the problem of information overload, and thus, personal recommendation system was invented to deal with it. Collaborative filtering algorithm is one of the most successful personal recommendation technologies. But traditional Collaborative filtering algorithm has its defects such as data sparsity, cold start and scalability. This thesis conducts an intensive research on collaborative filtering algorithm and proposes some improved schemes based on traditional collaborative filtering. The main work of this thesis is as follows:

(1) It puts forward to add item feature into traditional collaborative recommendation algorithm in the process of calculating the similarity of items. Firstly, Get out the item feature similarity based on the item feature information, and then accroding to item ratings to compute the item similarity. At last, the item feature similarity and item ratings similarity are combnined to produce the integrated item similarity. The improvement of algorithm relieves the data sparsity. Improved algorithm by adding item feature factor is based on using item rating and item feature to calculate similarity, which are combined by a certain weight. Reasonable weight value is the key to get the optimal recommendation results, so it is trained with training dataset in training module. And then recommendation is generated with optimal weights, selected by comparing the values of MAE.

(2) Implement recommendation with Hadoop platform. Facing with the increasing number of users and items which lead to higher workload and expenses, Hadoop platform could use of its powerful ability of distributed calculation to improve processing efficiency for big data. Through the interaction between Hadoop Platform and Mahout Framwork, the calculation of item feature similarity, item rating similarity and integrated item similarity can be handled offline in the module of integrated item similarity. It improves the recommendation efficiency for users online. Through the interaction between Hadoop Platform and MapReduce Programming Framework, integrated recommendation efficiency is further improved when the selection of nearest neighbor and recommendation generation are computed distributed in the module of recommendation.

Key words: Recommendation System, Collaborative Filtering, Hadoop, MapReduce, Similarity of Item Feature

目录

第一章绪论 (1)

1.1 课题研究背景及意义 (1)

1.2 协同过滤算法的研究现状 (2)

1.2.1 推荐算法介绍 (2)

1.2.2 协同过滤算法的研究现状 (3)

1.2.3 协同过滤算法与Hadoop的现状 (3)

1.2.4 协同过滤算法与Mahout的现状 (4)

1.3 论文研究内容 (4)

1.4 论文组织结构 (5)

第二章基于Hadoop的协同过滤算法相关技术综述 (7)

2.1 协同过滤算法简介 (7)

2.1.1 基于项目的协同过滤推荐(IBCF) (7)

2.1.2 基于用户的协同过滤推荐(UBCF) (7)

2.1.3 基于项目的协同过滤算法的推荐流程 (8)

2.2 Hadoop平台及其框架 (9)

2.2.1 Hadoop平台基本架构 (9)

2.2.2 分布式文件管理系统HDFS (10)

2.2.3 MapReduce (10)

2.3 Mahout框架 (11)

2.3.1 Mahout与Hadoop的联系 (13)

2.3.2 Mahout中推荐器各作业的活动 (14)

2.3.3 Mahout中基于项目的协同过滤推荐算法 (16)

2.4 算法评价指标 (18)

2.5 本章小结 (18)

第三章综合项目相似度的计算 (19)

3.1 综合项目特征相似度的算法 (19)

3.2 项目特征相似度模块分析与设计 (20)

3.3 项目评分相似度模块分析与设计 (22)

3.4 综合项目相似度模块分析与设计 (24)

3.4.1 综合项目相似度计算的Map函数 (25)

3.4.2 综合项目相似度计算的Reduce函数 (26)

3.5 本章小结 (27)

第四章训练模块与推荐模块分析与设计 (28)

4.1 训练模块 (28)

4.1.1 设置项目评分相似度权重 (28)

4.1.2 建立项目评分、项目特征矩阵和计算综合相似度 (28)

4.1.3 预测评分前的向量相乘预处理 (29)

4.1.4 预测评分并评估MAE (30)

4.2 推荐模块 (33)

4.2.1 向量相乘预处理 (33)

4.2.2 生成推荐 (33)

4.3 本章小结 (35)

第五章原型实现 (36)

5.1 实验环境 (36)

5.2 实验数据 (36)

5.2.1 用户-项目评分数据 (36)

5.2.2 项目特征数据 (37)

5.3 MAE评估实验界面展示 (38)

5.4 推荐界面展示 (39)

5.5 本章小结 (39)

第六章总结与展望 (40)

6.1 总结 (40)

6.2 展望 (40)

参考文献 (41)

附录程序清单 (44)

致谢 (46)

第一章绪论

1.1课题研究背景及意义

随着互联网的迅速发展和普及,网络信息量变得越来越大并呈现出爆炸性增长趋势。信息的快速传播和获取虽然满足了广大用户在信息时代的需求,但过量信息的呈现反而降低了他们对信息的使用效率,用户将迷失在复杂的海量信息中,无法迅速有效地获取自己真正需求的信息,这便是信息超载问题(Information Overload)[1]。

针对信息超载问题,学者们提出了很多解决方法,其中之一就是个性化推荐系统(Recommendation System,RS)[2-5]。传统推荐搜索引擎提供的是面向公众的通用性信息服务,但是它自身具有一定的局限性,如在当某门户网站用户数量和信息数量逐渐增多时,传统推荐引擎在计算效率上将逐渐变慢,为用户推荐有效信息带来了巨大困难,不能更有效的为用户进行推荐。而个性化推荐系统利用挖掘用户喜好的特点,通过一定的算法规则进行计算后,由系统预测用户偏好的信息并为之提供推荐,从而满足用户对信息的个性化需求。在个性化推荐之中,推荐算法的选择成为该领域内学者们研究的热点,这样推荐算法就成为了推荐系统的核心,其性能的优劣将直接影响到推荐系统的品质,因此追求更准确、更高效的推荐算法成为了推荐系统发展的关键。协同过滤(Collaborative Filtering,CF)是最为成功的个性化推荐算法之一[6,7],目前已在众多领域(如电子商务领域,媒体门户网站等)得到广泛的应用,且仍有更广阔的发展空间和应用前景。

自1992年协同过滤概念的首次提出至今已有二十余年的成长历史。目前针对协同过滤算法的研究和在推荐系统中的应用研究都取得了很多成果,但协同过滤推荐系统仍然存在很多缺陷。一方面,传统协同过滤推荐算法的研究主要侧重于单机模式下的运行,然而面临大数据时代的来临,不仅信息在海量增长,而且用户的数量也在不断壮大,使得数据存储和计算速度的负荷不断加重。单机模式的协同过滤逐渐难以满足推荐的高效性需求,可扩展性成为传统算法面临的难题[8] ,推荐过程实现分布式计算已成为算法研究势在必行的趋势,论文将就基于Hadoop平台分布式计算特性的协同过滤推荐算法实现展开研究[9,10]。另一方面,传统协同过滤推荐算法还存在评分数据稀疏性问题[8],在项目信息逐渐增多时,将会出现越来越多的项目未被用户评分的情况,当项目与项目之间的共同评分越来越少时,用户-项目评分矩阵将会变的稀疏,项目与项目之间的相似度计算效果随之也变差,使得推荐结果也变差,造成了数据稀疏性问题,因此针对传统算法自身存在的缺陷,论文将在项目数据中考虑加入项

目特征的因素,从而在一定程度上缓解上述协同过滤技术存在的数据稀疏问题。

1.2协同过滤算法的研究现状

1.2.1推荐算法介绍

推荐算法是推荐系统的核心,针对不同特点的推荐系统,会选取不同的推荐算法,可以说推荐算法的选取决定了整个推荐系统品质的优劣。目前国内外针对推荐算法的研究已经取得了一定的成果。当前被学者们研究的主要推荐算法有:基于内容的推荐、协同过滤推荐、基于关联规则推荐以及基于效用的推荐等。其中基于内容的推荐和协同过滤推荐最为常用。

基于内容的推荐算法(Content-Based Recommendation,CBR)最初应用于信息检索领域,主要依据项目的特征信息进行推荐[11]。该推荐算法通过机器学习的方式挖掘用户评价过的项目历史资料,找出用户感兴趣的项目的共同特性,然后将欲推荐项目集合中的各个项目与用户喜好的项目进行匹配,通过这种方法得到匹配度最高的项目后推荐给用户。例如在电影推荐系统中,首先分析用户以前观看过电影中评分较高的电影的共性,挖掘出用户的喜好,然后再从影视库中选取和用户喜好相似的电影推荐给用户。该算法的关键点在于选择何种方法去计算推荐项目模型中的项目特征和用户模型中用户的偏好的相似性。常用的技术有决策树、神经网络和基于向量的表示方法等[12]。

协同过滤推荐算法(Collaborative Filtering Recommendation,CFR)是目前应用于各领域比较成功的推荐算法之一,它的推荐方向非常广泛:音乐,电影,图片等都可以进行推荐。协同过滤推荐算法利用用户评分过的项目的历史数据向目标用户进行潜在的项目推荐。它依据的原则是:项目偏好相似的用户可能会对其他同样的项目感兴趣,例如有两个用户都喜欢听某一首歌曲,那么这两个用户有可能也同样对另一首歌曲感兴趣。因此,Schafer将协同过滤推荐成为―人与人的相关性推荐‖[13]。协同过滤推荐算法首先计算出目标用户与其他用户之间的相似度,然后利用相似度在目前拥有的用户群数据当中找到目标用户(即待预测用户)的相似用户,最后通过计算相似用户的偏好完成对该目标用户对某项目在喜好程度上的预测。

基于关联规则推荐算法(Association Rule-Based Recommendation,ARBR)是以关联规则为基础的推荐算法,其中关联规则挖掘是一种用于发现数据集中数据项之间相互关系的数据挖掘技术[14]。该算法的思想可以理解为用户在购买某一类商品的时候有多大程度的倾向会去购买其他类商品。例如购买牛奶的人很有可能同时会购买面包。关联规则挖掘具有发现不同商品在销售过程中的相关性的特点,因此它在零售业中已经得到了广泛的应用。

基于效用推荐算法(Utility-based Recommendation,UBR)是以建立在用户使用项目的效用基础上实施推荐的推荐算法[15],该算法的关键点在于怎样为每一个用户创建一个效用函数,用户资料模型的大小由系统所采用的效用函数决定。基于效用推荐的优点在于它能把非产品的属性,如提供商的可靠性和产品的可得性等因素添加到效用函数中计算以作为推荐的参考。

由于各种算法都存在其优势和不足,所以在实际应用中,通常采用组合推荐的方法[16]。组合推荐可以依据具体场景和具体需求,通过将不同推荐算法有机结合在一起的方式实施推荐。因此,在解决实际推荐问题中,使用组合推荐可以起到扬长避短的效果。目前在多种组合推荐中,基于内容的推荐和协同过滤推荐结合的应用最多。

1.2.2协同过滤算法的研究现状

协同过滤推荐算法从第一次提出到现今在众多领域的广泛应用已有二十余年,经过学者们的研究与开发,目前将该算法归纳为两大分支——基于用户的协同过滤推荐算法(User-Based Collaborative Filtering,UBCF)和基于项目的协同过滤推荐算法(Item-Based Collaborative Filtering,IBCF)。前者利用目标用户以及其他用户对部分项目已有的偏好评分对目标用户未给予过评分项目的潜在偏好进行预测。后者则是通过部分用户对目标项目以及其他项目的已有偏好评分预测其他用户对目标项目的潜在偏好。随着算法的发展后期出现了其它的同过滤推荐算法,如基于模型的协同过滤(Model-based Collaborative Filtering)[17]。基于用户的协同过滤推荐算法和基于项目的协同过滤推荐算法都可以表现出较好的推荐性能。但随着站点结构的变化、内容复杂度的上升以及用户和项目数量的不断增加,传统的协同过滤推荐算法就会逐渐暴露出其自身原因所导致的一些问题。如可扩展性(Scalability)[8]问题、数据稀疏性(Sparsity)[8]问题和冷启动(Cold-Start)[18]问题等等。这些潜在性的问题都严重影响了推荐系统的性能,同时为用户和商家的使用带来诸多不便。针对这些问题,学者们对传统的协同过滤推荐算法进行了研究并改进,提出了多种解决方案,例如采用聚类技术[19,20]解决可扩展性问题,利用基于内容的最近邻查找技术[21,22]解决冷启动问题以及通过使用BP 神经网络[23]方法来缓解数据稀疏性问题等。

1.2.3协同过滤算法与Hadoop的现状

当前对协同过滤算法的研究主要侧重于单机模式的设计。然而随着海量数据的获取,大数据时代的来临[24,25],社区用户信息数据量不断增长,数以亿计的信息给数据的存储和计算的速度带来极大的挑战。单机模式的推荐算法逐渐难以满足推送的即时性需求。因此,分布

式推荐算法成为推荐算法研究中一个新的研究方向。本文将协同过滤推荐算法与Hadoop 的分布式计算特性相结合,探索协同过滤推荐算法在Hadoop平台上的实现。Hadoop 平台基于主从式架构,可以运行在几十台乃至几千台计算机上,能够充分利用集群节点巨大的存储和计算资源,大大缓解传统协同过滤算法在数据量增大时带来的计算负荷问题。此外Hadoop 集群支持三种运行模式:单机模式,伪分布式模式和完全分布式模式。通过修改Hadoop配置文件以及调节集群的大小以达到不同的运行模式。在Hadoop的单机模式中,协同过滤算法可以进行基础调试,如算法中的基本BUG;在伪分布式模式下,将数据量适当减少,可以调试算法运行在平台上的BUG,或者完成一些简单的性能测试;而在大集群的完全分布式模式下,则是投入实际使用的实现分布式计算任务的模式。

1.2.4协同过滤算法与Mahout的现状

Mahout是Apache的项目[26],它是Apache 开源的机器学习库,它在机器学习和数据挖掘领域做了许多实现工作,包括协同过滤推荐、聚类和分类等算法。Mahout具有可扩展性,它致力于成为海量数据的机器学习工具,特别是在当下数据量与日俱增单机已无法处理的情况下。Mahout实现了与Hadoop平台的交互,Mahout提供相关类去封装作业,然后使得这些作业可以在Hadoop平台上运行,并通过Hadoop平台来开启相应的map和reduce任务。而论文中对传统协同过滤算法的研究改进正是在Mahout的现有接口和已有的数据结构基础之上去实现的。

1.3论文研究内容

论文对协同过滤推荐算法进行深入研究,针对传统协同过滤推荐算法的不足,提出了一些改进方法,目的是缓解传统算法存在的问题以及提高算法的推荐精度和执行效率。主要研究内容概括为以下方面:

(1)基于Hadoop平台实现推荐过程。传统协同过滤推荐算法推荐要按照构建项目模型、计算项目相似度、选取项目最近邻、产生推荐的流程来实现推荐,推荐过程中,各阶段任务需要保持紧密联系而拉长了推荐产生的时间轴。通过Hadoop平台,无论是项目相似度的计算,还是最近邻选取和生成推荐,各个阶段中的作业,都将以分布式计算的方式并行执行,通过MapReduce编程框架使得推荐系统在大数据情况下缩短了计算的运行时间,大大提高了推荐过程中的计算效率。

(2)综合项目特征因素的协同过滤推荐算法。在传统的基于项目的协同过滤推荐算法中,

当用户与项目逐渐增多,而用户对项目的评分比较少时,用户-项目评分矩阵将会变的稀疏,项目与项目之间的相似度计算效果随之也变差,使得推荐结果也变差,造成了数据稀疏性问题。因此论文在考虑上述情况下,在传统的协同过滤推荐算法计算项目相似度的过程中加入项目特征相似度因素。在计算项目相似度矩阵时,将其与项目特征相似度相结合并借用权值来平衡项目相似度矩阵。这样就缓解了传统协同过滤算法中数据稀疏的问题,使推荐结果的精度得到了提高。

(3)利用推荐系统的训练模块搜索算法中的最佳权值。论文中提出基于项目评分与项目特征相结合的方法训练出最优权值,通过训练集计算各权值下MAE的值,选择MAE评估取最优值时的权值作为平衡相似度矩阵的最佳参数。这样在推荐模块中便可以利用最佳权值参与为用户推荐项目的计算。这样不仅可以在有新数据加入时去除算法中大量不必要的重复工作,同时也提高了算法产生推荐的计算效率。

总体来说,在充分理解Hadoop平台工作原理条件下以及传统协同过滤推荐算法的调研基础上,论文中的推荐算法将以Mahout作为核心框架,以Hadoop计算平台为依托,通过结合MapReduce 编程模型和Java开发语言,搭建起一个基于Hadoop平台实现的协同过滤推荐系统。

1.4论文组织结构

本论文将分为六个章节,内容概括如下:

第一章:绪论。概括介绍了本课题的研究背景及意义,同时指出了目前国内外推荐系统和推荐算法的研究现状,界定了论文的主要研究工作,最后给出了本文的组织结构安排。

第二章:协同过滤推荐算法和相关技术综述。介绍了协同过滤推荐算法的概念、分类、推荐流程,对Hadoop分布式计算平台和MapReduce编程框架进行了讲解,也对论文中算法应用到的Mahout框架做了详细分析。最后给出算法评价指标。

第三章:综合项目相似度。先给出了项目特征相似度模块的设计与分析,接着讲解了项目评分相似度模块的设计方案,最后通过综合项目相似度模块阐述了如何在算法中加入项目特征因素以实现算法在项目相似度方向上的改进。

第四章:训练模块和推荐模块的设计。先通过设置评分相似度权重、建立训练集项目评分矩阵和项目特征矩阵、计算训练集项目的综合相似度、预测评分前数据预处理和预测评分并评估相似度几个步骤对训练模块进行分析,然后通过向量预处理和生成推荐两个部分对推荐模块进行了讲解。

第五章:评估MAE界面和推荐界面展示。在本章节中先是搭建了实验环境,接着选取了合适的数据集,最后完成实验并将实验结果通过评估MAE界面和推荐界面展示出来。

第六章:总结与展望。对全文进行了总结和回顾,指出了本文的主要创新点、研究的不足以及下一步可进行研究的问题作了简单的探讨和展望。

论文的组织结构如图1.1所示。

图1.1 论文组织结构图

第二章基于Hadoop的协同过滤算法相关技术综述

2.1协同过滤算法简介

协同过滤推荐算法大致分为两种类别:基于项目的协同过滤推荐(Item-Based Collaborative Filtering,以下简称IBCF)和基于用户的协同过滤推荐(User-Based Collaborative Filtering,以下简称UBCF)[27,28]。

2.1.1基于项目的协同过滤推荐(IBCF)

IBCF是协同过滤推荐算法中比较常用的一种推荐方法[29-31],它的主要原则是以已有项目的受用户喜好程度作为推荐依据。IBCF的基本思想是:如果有很多用户对某一个项目的评分相似,那么未接触该项目的用户也有可能对此项目评分与大部分用户相似,通过计算项目与项目之间的相似度来找出项目的最近邻居群,然后根据当前用户对这些邻居群的偏好程度来预测当前用户对未知项目的偏好。

IBCF的优点是:它可以不用考虑用户方面的特征信息,也不需要进行对用户的识别,单纯从对于项目角度来考虑,项目之间的相似性非常的稳定,并且只利用项目信息便可以在离线状态下完成众多的数据训练任务,这就大大提高了项目在线上的推荐效率,这也是论文在后续章节为什么要先计算项目特征相似度的原因之一。IBCF的优势尤其在用户非常多的情况下更加明显。但IBCF的缺陷也因此变得明显:因为在只注重项目关系的前提下,它没有考虑到用户之间的差异性,所以这就导致其失去了用户之间的联系,从而也无法满足用户角度的个性化需求。一方面,IBCF没有解决协同过滤算法的冷启动问题,另一方面在项目数据稀疏时,算法的效率将会大大降低。并且系统的可扩展性较差。

2.1.2基于用户的协同过滤推荐(UBCF)

UBCF的主要思想是:通过采用用户对项目的评价信息来计算用户之间的相似度,然后搜索出目标用户的最近邻居,最后则依据计算出的邻居用户的兴趣或偏好对目标用户进行预测推荐[32-36]。这种通过在用户之间采用协同过滤算法的推荐就是基于用户的协同过滤推荐算法。

UBCF 推荐算法的优势是:在历史信息完善、内容填充度较高的时候,推荐效率比较高,而且能对项目的关联性和用户喜好方面进行隐式透明的挖掘推荐,这样可以避免在项目本身的信息上挖掘。但UBCF 的缺点是:在数据稀疏时,推荐效率就会大打折扣。另一方面,在用户数量逐渐增多的情况下,它的计算时间也会越变越长,新加入用户的问题也将会导致UBCF 算法效率降低,并且系统的可扩展性差。

论文研究的是基于项目的协同过滤算法,所以将以IBCF 为主要研究对象,在下一小节将会以基于项目的协同过滤算法为基础描述协同过滤算法的实现步骤。

2.1.3 基于项目的协同过滤算法的推荐流程

根据IBCF 的基本思想,算法的工作流程一般可以分为三步:

1) 数据表述[37]

输入数据一般被表述为一个m×n 的用户-项目评估矩阵,用户-项目矩阵如图2.1 所示。

111212122212...............

......n n m m mn R R R R R R R R R ??????????????

图2.1 用户-项目评分矩阵

在图2.1中,m 表示用户数, n 表示项目数,矩阵元素R ij 表示第i 个用户对第j 个项目的评估值。

2) 最近邻搜索(Nearest neighbor search, NNS)[38]

通过计算项目与项目之的相似度来找出项目的最近邻居群,得到目标项目的最近邻集合,。首先计算项目i 与其它项目的相似度,然后根据相似度的大小进行排序从而确定目标项目的最近邻,比较常用的相似度度量方法有余弦相似度或者皮尔逊相关系数等,以皮尔逊相关系数为例,它的计算方法如公式(2.1)所示。

,,()()(,)u i i u j j R

R R R sim i j --=∑ (2.1)

在公式(2.1)中,(,)sim i j 表示项目i 和项目j 的相似度,U 表示项目i 和项目j 共同被评过分的用户集合,,u i R 表示用户u 对项目i 的评分,i R 表示用户集合U 中用户对项目i 的平均评分。同理,,u j R 表示用户u 对项目j 的评分,j R 表示用户集合U 中用户对项目j 的平均评分。

相关文档