基于节点结构相似和排序的协同过滤算法1

基于节点结构相似和排序的协同过滤算法1
基于节点结构相似和排序的协同过滤算法1

基于节点结构相似和排序的协同过滤算法1

刘淇,陈恩红

中国科学技术大学计算机科学与技术系,合肥 (230027)

E-mail: cheneh@https://www.360docs.net/doc/1319235982.html,

摘要:本文提出一类基于图中的节点结构相似与带重启动的随机游走相结合的协同过滤推荐算法。该方法不仅具有较高的准确度,且具有良好的可扩展性。另外,该推荐算法可以在所有的用户和项之间产生相似排序,从而避免低覆盖率造成的推荐不准确。文中提出了两类不同的实现方法,分别是基于项协同过滤的项排序算法和基于用户协同过滤的用户排序算法,通过在一个标准数据集MovieLens上的测试表明了算法的有效性。

关键词:推荐算法;协同过滤;结构相似;排序;随机游走

中图分类号: TP31

1.引言

推荐系统根据用户与系统的交互历史以及用户的个人信息等构建用户的兴趣模型,预测用户可能感兴趣的产品或项。推荐系统大致可以分为三类[1]:基于协同过滤的方法(collaborative filtering)[2][4],基于内容的方法(content-based filitering)[5][8]和将二者结合的混合推荐算法(hybrid recommendation)[6][7]。其中,基于协同过滤(CF)的方法在保持较好推荐效果的同时,其实现和维护代价都比较低,因而得到了最广泛的应用。协同过滤算法又分为Memory-based和Model-based两类[1]。

Model-based算法首先利用已有的用户评价数据建立一个模型,然后根据该模型进行评价预测,例如基于贝叶斯网络的方法[11],基于最大熵的方法[10]。但通常Model-based方法的模型建立和更新非常耗时,且模型经常不能像Memory-based方法一样覆盖所有的用户。Memory-based算法是一种启发式的方法,它根据用户以往的所有评价去推荐。该方法一般是先为每个用户寻找相似的用户,再根据相似用户对给定项的评分以及用户相似度对项进行排序[1]。

近来,也提出了一些基于图中顶点相似计算的方法来进行协同推荐[15][17][19]。在其它领域中,[12] 总结和比较了大量的计算图中结点相似的方法用来进行连边预测。[13]也提出了一种新的度量网络中顶点结构相似的方法。

在图结构中,经常用随机游走(Random walk)对节点间的相似度进行衡量[15][16][19],该方法以两个节点间的平均首达时间(ACT,average commute time)为标准。但ACT的问题在于它对图中远离节点i,j的部分有很强的依赖,即使节点是紧密相连的时候也是一样,所以经常会造成计算得到的相似度与实际节点的相似度有较大偏差。作为抵消该依赖的一种方法,可以让节点i到节点j的游走周期性“重启动”,即每一步以一定的概率c返回i重新走步,这样几乎不会走到图中偏远的部分。随机重启也是进行网页排序的PageRank算法[14]的基本思想。[18]用带重启动的随机游走(RWR,random walk with restart)来发现已知多媒体对象中各个媒体属性间的关联,而[21]则用RWR来发现情感与音乐属性的关联从而进行音乐推荐。类似地,[17]也将PageRank算法的思想用到推荐系统中。

实际应用中,推荐算法不仅要求较高的预测准确度,还要具备良好的扩展性,但是目前

1本课题得到国家教育部基于教育部博士点基金项目“中国科技论文在线”模式的科技论文网络发表平台的个性化服务研究(2007105)的资助。

的推荐算法都有其不足之处。例如,基于聚类的方法往往不能有效地覆盖所有的项或者用户,

而基于图的方法虽然可以为所有的用户-项对产生相似排序,但往往消耗大量的空间资源,

可扩展性较差,而且其推荐准确度也有待提高[15][19]。本文提出一种基于图中节点相似和排

序的协同过滤算法SSR(Structural Similarity and Ranking)。首先,根据结构相似寻找

图中节点间的初步相似度,再利用RWR 对图中的节点进行排序,从而产生推荐序列。SSR 算

法实现过程中考虑了几种典型的节点结构相似方法,并比较了基于项和基于用户的协同过

滤,即分别将项作为图中节点为给定用户对所有项进行排序的算法,以及将用户作为图中节

点为给定项进行用户排序的算法。由于图中的结点表示项或者用户,从而有效地缩小了图的

规模,降低空间消耗,使得算法具有良好的可扩展性。在用于推荐的通用数据集上的实验结

果表明,该方法可以得到更高的预测准确度。

本文接下来将首先介绍SSR 算法模型;在第3节,将对SSR 算法与其他方法进行对比实

验,并对实验结果进行分析;最后对全文进行总结。

2.算法描述

协同过滤是为给定用户推荐其可能感兴趣的项,但也可以将给定的项推荐给可能对其感

兴趣的用户。对于前者,SSR 将建立由项组成的关联图,然后用给定用户的用户向量在相应

的项关联矩阵上进行RWR,从而得到所有项的排序,排名靠前即得分较高的项将被推荐给用

户(Item_Rank,因为实验中使用的item 为电影,所以又称Movie_Rank)。而对于后者,SSR

将建立用户组成的关联图,然后用给定项的项向量在相应的用户关联矩阵上进行RWR,得到

所有用户的排序,该项将被推荐给得分较高的用户(User_Rank)。本文,I 表示项的集合,U

表示用户的集合;n,m 分别表示项和用户的个数。

2.1 关联矩阵

将用户与项之间的关系表示为一个二部图G=,其中顶点集X=U∪I,用户U p 如果

对某项I q 表现出兴趣,则为U p 与I q 建立一条连边。然后,将该二部图分别在两个维度(用户,

项)上进行投影,投影后节点i 与j 间的连边权重σ(i,j)表示节点i 与j 的结构相似度。如

下是几种常用的结构相似计算方法:

(,)||unmorm i j i j σ=Γ∩Γ (1) ||

(,)||i j Jaccard i j i j σΓ∩Γ=Γ∪Γ (2)

cos ||

(,)ine i j σΓ∩Γ= (3) min ||

(,)min(||,||)i j i j i j σΓ∩Γ=ΓΓ(4)

其中,i Γ为投影前节点i 的邻居节点集合。σ(i,j)可以分别由公式(1)

(2)(3)(4)得到。

这里的每个投影图就是由项或者用户组成的关联图。相应地,可以得到关联图对应的矩

阵CC,其中当i≠j 时,CC i,j =σ(i,j),且CC i,i =0。再对CC 以列为单位进行归一化得到随机

矩阵C,C 可以视为关联图的关联矩阵,C i,j 表示节点i 对于节点j 的关联系数,即对节点j

而言节点i 的重要程度。这样,关联图中所有节点对间的关联程度都可以用C 中相应的元素

表示。可以看到CC 是一个对称矩阵,而C 则不再具有这个性质。

2.2 SSR算法

SSR 算法的目标是通过排序的方式估计用户与项之间的关系。SSR 算法用向量表示查询

节点,向量中的每一维都代表关联图中的一个节点,其值则表示相应节点与该查询节点的亲

和度。SSR 采用带重启动的随机游走(RWR)方式预测一个节点(或向量)Y 对查询节点(或

向量)X 的重要性或关联程度。考虑从节点向量X 开始的随机游走,每走一步保证如下两点:

首先,如果一个节点Z 与节点P 联系紧密,而P 又是与X 相关联的,则通过P,X 与Z 也会

建立一定的联系。其次,由于Z 是通过间接的方式与X 建立联系的,所以相比较Z 与P 及P

与X,Z 与X 的联系强度会有一定的“衰减”。或者说,X 游走到P 以后会以一定的概率沿P

走向与P 有联系的节点,除此之外,它还有可能返回节点X 重新走步。定义steady-state

概率向量S X (Y)表示从节点X 开始的随机游走到达节点Y 的概率。那么S X (Y)就表示了Y

相对于X 的亲密程度。

定义O q 为查询对象,它可以是一个用户或一个项。如果O q 是一个用户,SSR 算法要得到

与它关系最紧密的项,而如果O q 是项,SSR 算法得到与它关系最紧密的用户。这里若关联图

或关联矩阵C 由k 个节点组成,则O q 对应的steady-state 概率向量S q =(S q (1),...S q (k))即

为所求。定义归一化向量V Oq 是根据O q 在训练集中的记录而建立的节点向量,在归一化V Oq

之前向量V oq ’第j 维的元素定义如下:

q q 'O 1O is user and O ,V 0j j q q j q if rated I or if O is item and U rated O otherwise

??=??? (5) 本文设计的推荐算法SSR 如图1

所示:

图1 SSR 算法流程

在推荐算法SSR 中,可调参数c 为随机游走重启动的概率,(1-c)为衰减因子,用来衡

量信息的衰减程度。实际应用中,平均情况下,t=20时,S Oq 即可收敛。

2.3 评价标准

本文采用DOA(degree of agreement)[20]为标准对实验结果进行评价。根据使用对象

的不同将其扩展为用户的DOA(U_DOA)和项的DOA(I_DOA),其思想是:

对于U_DOA,先定义NW ui =n/(L ui ∪T ui ),其中n 为所有项的个数,L ui 为用户U i 在训练集

中评价过的项集合,T ui 为U i 在测试集中评价的项集合。

1,(__)_(,)0,Ij Ik Ui j k if predict rank prdict rank check order I I otherwise

≥?=?? 从而对于用户Ui,其DOA 得分定义如下:

(,)_(,)

||*||Ui Ui j k j T k NW Ui Ui Ui check order I I DOA T NW ∈∈=∑

I_DOA 的定义与U_DOA 类似,这里不再赘述。通过定义可以看出,随机预测的DOA 值大

约为50%,而理想情况下的DOA 值为100%。并且,实验中以所有用户(项)的DOA 取平均作为总体的效果评价。

_||i Ui U DOA

U DOA U =∑ 或 _||i Ii

I DOA I DOA I =∑

3.实验

3.1 MovieLens数据集

MovieLens [9][3]是一个进行电影推荐的网站,GroupLens 小组从中整理出了适用于各种推

荐场景的一个标准数据集。在本文使用的数据集中,对用户进行了处理,只考虑那些对超过

20部电影打分的用户,总共包含943个用户(m=943)对1,682部电影(n=1,682)的评

分,共约100,000个评分。

实验中使用数据集的方法与[15][17][19]中类似:对于参数训练部分 (主要是对参数c 的测

试),将整个数据集分成训练集与测试集两部分,而测试部分则使用五对数据集进行5-交叉

测试,每次用80%的评分数据做训练集20%的评分数据作为测试集。

3.2 参数选择及实验结果

在PageRank 算法中重启动概率c 经常取为0.15,而在实验中,通过各个方法对c 在(0,

1)之间变化时的表现情况可以发现,c 越接近于1,SSR 算法的推荐效果越好。其实这一方

面与所用的关联图的半径有关[18],一方面与数据的性质有关,也就是在当前的MovieLens

数据集中,项(用户)的相似度绝大部分比例依赖于项(用户)间的直接路径数。接下来的

实验中若无特殊说明,选择c=0.99。

表1显示了不同的结构相似对应的Movie_Rank 和User_Rank 方法在进行5-交叉测试时

的表现:

表1 5-交叉测试结果

Movie_Rank(I_DOA) User_Rank(U_DOA) Unnorm Jaccard Cosine

Min Unnorm Jaccard Cosine Min DOA(%) 89.09

90.37 90.69 80.7178.80 78.67 79.05 73.66

表2显示了使用MovieLens 作为数据集的不同推荐算法的效果比较,这些算法的具体细

节和实现可以参见[15][17][19]。这里SSR 算法选择基于Movie_Rank 的Cosine 结构相似

(M_Cosine)为代表与其他算法进行比较,其中的ItemRank [17]与本文基于公式(1)的

Movie_Rank 实现方法类似。对于其中的每个算法,给出了其5-交叉测试后的平均实验结果,

以及与传统的MaxF 算法的表现差异比较。MaxF 算法简单地将项按被浏览次数进行降序排序,

每次都将其没有看过且排序最靠前的项推荐给给定用户。MaxF 算法也是比较的基准算法。

表2 不同算法效果比较 Movie_Rank

MaxF CT PCA CT One-way Return L + ItemRank Katz SSR (M_Cosine )

DOA (%)

84.07 84.09 84.04 84.08 72.63 87.2387.76 85.83 90.69 Difference

with

MaxF(in %) 0 +0.02 -0.03 +0.01 -11.43+3.16+3.69 +1.76 +6.62

3.3 讨论

首先,可以发现在同一个数据集中,对电影排序的推荐效果明显好于对用户排序的结果,

其实这与MovieLens 数据集的性质有关。MovieLens 数据集对用户进行了处理,只保留了至

少评价了20部电影的用户,以保证每个用户的兴趣都可以得到确切的反映。而数据集中的

电影却没有经过类似处理。即数据集中存在许多被很少用户看过的电影,也有的电影可能被

许多用户都看过,所以为电影构造节点向量的时候,会有一部分电影的节点向量相当稀疏,

而另有一部分电影的节点向量相当稠密,这些都会造成区分度的下降。

在计算效率方面,给定关联矩阵C 时,SSR 只要经过较少次数的迭代就可在O(n 2)或O

(m 2)时间里得到一次推荐,而L +或者CT 算法只能一次得到所有推荐,所以只能定时更新

推荐而无法做到实时更新推荐。但SSR 算法的一个问题在于,如果关联矩阵C 中有一个节点

发生了更新,则整个关联矩阵都需要更新,这将消耗O(n 2)或O(m 2)的时间,所以可以选择

定时更新关联矩阵C 而实时更新节点向量的方法,以得到更好的推荐效果。

最后是算法的空间复杂度和可扩展性。当基于项过滤对项进行排序时,关联矩阵C 的大

小与用户数无关,这是一个很有用的性质。因为一般的应用中,用户数目比项的数目有更高

的数量级[17],而且一般用户可能只对少数的一些项感兴趣,所以可以将用户的兴趣直接用链

表的形式表现出来,可以节省巨大的空间资源。如果用k u 表示每个用户平均感兴趣的项个数,那么此时算法的空间复杂度为O(n 2+m*k u ),即使用户数目不断增加,用户对项的兴趣也

不断增加,SSR 算法都可以有效地应用。当有新的项时,SSR 和ItemRank 只需要O(n)的空

间消耗,其L +

与CT 等则需要O(m+n)。而当增加一个新用户时ItemRank 和SSR 需要O(k u )的

空间,而L +,CT 等算法却需要O(m+n)的空间,问题在于在一般的应用中m>>n>>k u 。而基于

用户过滤的用户排序,虽然空间消耗要高于对项排序的方法,但仍然小于L +与CT 等方法,

这里不再赘述。 4. 结论

本文提出了一种基于节点的结构相似与带重启动的随机游走相结合的协同过滤推荐算

法,它可以为每个用户预测其可能感兴趣的项,也可以将项推荐给那些可能对其感兴趣的用

户。通过在同一个数据集上与其它一些比较好的算法的对比实验结果表明,该方法不仅有更

高的推荐准确度,同时有较低的时空复杂度以及较好的可扩展性,尤其是基于项过滤的项排

序算法可以构建应对海量数据的推荐系统[17]。

尽管基于项过滤的项排序算法在推荐效果和时空复杂性方面都表现优异,但通过基于用

户过滤的用户排序算法的不佳表现可以发现,作为一个典型的协同过滤算法,该方法仍不能

很好地应对实际应用中出现的数据稀疏和冷启动等问题。如何在保持算法有效性的前提下解

决这些问题,将是未来工作的进一步研究方向。

参考文献

[1]Gedimiinas Adomavicus, and Alexander Tuzhilin. Toward the Next Generation of Recommender Systems: A Survey of the State-of-the-Art and Possible Extensions [J]. IEEE Transactions on Knowledge and Data Engineering, Vol. 17, No. 6, June 2005, pages 734-749

[2]G. Linden, B. Smith, and J. York. https://www.360docs.net/doc/1319235982.html, Recommendations: Item-to-Item Collaborative Filtering [J], IEEE Internet Computing, Jan./Feb. 2003, pages: 76-80

[3] B.N. Miller, I. Albert, S.K. Lam, etal. MovieLens Unplugged: Experiences with an Occasionally Connected Recommender System [J]. Proc. Int’l Conf. Intelligent User Interfaces, 2003, pages: 263-266

[4]Resnick, P., Iacovou, N., Suchak, M, etal. Grouplens: an open architecture for collaborative filtering of Netnews [J]. Proceeding of the CSCW conference, Chapel Hill, NC, 1994, pages: 175-186

[5]Kim, J.W., Lee, B.H., Shaw, M.J., etal. Application of decision-tree induction techniques to personalized advertisements on Internet storefronts [J]. International Journal of Electronic Commerce, 5(3), 2001, pages: 45-62 [6]M. Balabanovic, Y. Shoham. Fab: Content-Based, Collaborative Recommendation [J]. Comm. ACM, vol. 40, no. 3, 1997, pages 66-72

[7]M. Pazzani. A Framework for Collaborative, Content-Based, and Demographic Filtering [J]. Artificial Intelligence Rev., Dec.1999, pages. 393-408

[8]Souvik Debnath, Niloy Ganguly, Pabitra Mitra. Feature Weighting in Content Based Recommendation System Using social network analysis[J]. WWW /Poster Paper, April, 2008, pages 1041-1042

[9] https://www.360docs.net/doc/1319235982.html,

[10] D. Pavlov, D. Pennock. A Maximum Entropy Approach to Collaborative Filtering in Dynamic, Sparse, High-Dimensional Domains[J]. Proc. 16th Ann. Conf. Neural Information Processing Systems (NIPS ’02), 2002, pages: 1441-1448

[11]J. S. Breese, D. Heckerman, and C. Kadie. Empirical analysis of Predictive Algorithms for Collaborative Filtering [J]. In Proceedings of the 14th Conference on Uncertainty in Artificial Intelligence, 1998, pages 43-52 [12]David Liben-Nowell, Jon Kleinberg. The Link-Prediction Problem for Social Networks[J]. Journal of the American Society for Information Science and Technology, 58(7): 2007, pages 1019–1031

[13] E. A. Leicht, Petter Holme, and M. E. J. Newman. Vertex similarity in networks[J]. Physical Review E 73, 026120 (2006)

[14]Brin, S., and Page, L. The anatomy of a large-scale hypertextual Web search engine[J]. Computer Networks and ISDN Systems, 30(1–7), 1998, pages 107–117

[15] F. Fouss, A. Pirotte, and M. Sarens. Random-walk computation of similarities between nodes of a graph, with application to collaborative recommendation[J]. IEEE Transactions on Knowledge and Data Engineering 19 (3), 2007, pages 355–369

[16]Luh Yen & Marco Saerens, Amin Mantrach, etal. a family of dissimilarity measures between nodes generalizing both shortest-path and the Commute-time Distances[J]. Proceedings of the ACM SIGKDD international conference on Knowledge Discovery and Data Mining (KDD), 2008, pages 785-793

[17]Marco Gori, Augusto Pucol. A random-walk Based Scoring Algorithm with Application to Recommender Systems for Large-Scale E-commerce[J]. WEBKDD’06, 2006 pages: 127-146

[18]Pan, J. Y., Yang, H. J., Faloutsos, C. and, Duygulu, P. Automatic Multimedia Cross-modal Correlation Discovery[J]. In Proc. of ACM Intl. Conference on Knowledge Discovery and Data Mining (KDD’04), 2004 pages: 653-658

[19] F. Fouss, A Pirotte, J. M. Renders, etal. A novel way of computing dissimilarities between nodes of a graph, with application to collaborative filtering[J]. In IEEE/WIC/ACM International Joint Conference on Web Intelligence, 2005, pages 550-556

[20]S. Siegel and J. Castellan. Nonparametric Statistics for the Behavioral Sciences [M]. McGraw-Hill, 1988

[21]FF Kuo, MF Chiang, MK Shan, etal. Emotion-based music recommendation by association discovery from film music[J]. Proceedings of the 13th annual ACM international conference on Multimedia. 2005, Pages: 507 – 510.

Collaborative Filtering Based on Nodes’ Structural

Similarity and Ranking

Liu Qi, Chen Enhong

Department of Computer Science and Technology, University of Science and Technology of China,

Hefei (230027)

Abstract

This paper provides a novel collaborative based recommender algorithm based on combination of structural similarity of graph nodes and random walk with restart. This method not only performs with high precision but also is extendable. Besides, because this method generates similarity rank between each pair of user and item, this makes it can avoid inaccuaracy caused by poor coverage rate. We put forward two ways to carry out our algorithm, namely the item-collaborative-based item ranking method and the user-collaborative-based user ranking method. The effectiveness of the proposed method is demonstrated by experiments on a widely used benchmark dataset.

Keywords: recommender algorithms; collaborative filtering; structural simiality; ranking, random walk

作者简介:

刘淇(1986—),男,硕士研究生,主要研究方向为数据挖掘,推荐系统,社会网络;

陈恩红(1968—),男,博士,教授,博导,IEEE 高级会员(Senior Member),中国科技大学多媒体计算与通信教育部-微软重点实验室副主任,中国人工智能学会知识工程专委会、机器学习专委会委员,中国计算机学会人工智能与模式识别专委会委员,担任20余个国际学术会议的程序委员或主席。主要研究方向:语义Web、机器学习与数据挖掘、网络信息处理、约束满足问题。

改进了协同过滤推荐算法的推荐系统的制作流程

图片简介:

本技术介绍了一种改进了协同过滤推荐算法的推荐系统,属于推荐系统技术相关领域。该推荐系统包括输入模块、推荐算法和输出模块三个部分,输入模块用于输入用户个人基本信息、用户对项目的评分和用户历史信息等;推荐算法根据输入信息分析用户兴趣爱好,寻找最相似用户和项目,给出预测的评分结果;输出模块依据用户输入请求,输出相应的推荐项目。其中改进部分是对推荐算法中冷启动问题进行优化。针对新用户、新项目和新系统不同的冷启动问题,提出了优化解决方法。 技术要求 1.一种改进了协同过滤推荐算法的推荐系统,其特征在于,包括输入模块、推荐算法和输出模块;输入模块用于输入用户个人基本信息、用户对项目的评分、用户历史信息和当 前的点击操作;推荐算法根据输入信息分析用户兴趣爱好,寻找最相似用户和项目,给 出预测的评分结果;输出模块依据用户输入请求,输出相应的推荐项目到客户端。 2.如权利要求1所述的一种改进了协同过滤推荐算法的推荐系统,其特征在于,所述推荐算法为协同过滤推荐算法,所述协同过滤推荐算法冷启动实现方式为:一、提供非个性 化的推荐,非个性化推荐的最简单例子就是热门排行榜,可以给用户推荐热门排行榜, 然后等到用户的反馈足够多,数据收集到一定的时候,再转换为个性化推荐;二、利用 用户的注册信息,提供的年龄、性别、职业等数据做粗粒度的个性化;三、利用用户的 社交网络账号登录,导入用户在社交网站上的好友信息,然后给用户推荐其好友喜欢的 物品;四、利用物品的内容信息计算物品相关表,利用专家进行标注。 3.如权利要求2所述的一种改进了协同过滤推荐算法的推荐系统,其特征在于,在所述推荐算法中,用户点击商品链接后,推荐系统会记录用户的点击行为,然后系统计算用户 间相似度,找出与当前用户最相似的前N个用户,接着在这前N个用户中找出当前用户没有点击的商品,将点击率最高的几个商品加入推荐列表,最后将推荐列表发往客户端向 用户展示推荐的商品。

基于协同过滤的推荐算法及代码实现

基于协同过滤的推荐算法与代码实现 什么是协同过滤? 协同过滤是利用集体智慧的一个典型方法。要理解什么是协同过滤(Collaborative Filtering, 简称CF),首先想一个简单的问题,如果你现在想看个电影,但你不知道具体看哪部,你会怎么做?大部分的人会问问周围的朋友,看看最近有什么好看的电影推荐,而我们一般更倾向于从口味比较类似的朋友那里得到推荐。这就是协同过滤的核心思想。 协同过滤一般是在海量的用户中发掘出一小部分和你品位比较类似的,在协同过滤中,这些用户成为邻居,然后根据他们喜欢的其他东西组织成一个排序的目录作为推荐给你。当然其中有一个核心的问题: 如何确定一个用户是不是和你有相似的品位? 如何将邻居们的喜好组织成一个排序的目录? 简单来说: 1. 和你兴趣合得来的朋友喜欢的,你也很有可能喜欢; 2. 喜欢一件东西A,而另一件东西B 与这件十分相似,就很有可能喜欢B; 3. 大家都比较满意的,人人都追着抢的,我也就很有可能喜欢。 三者均反映在协同过滤的评级(rating)或者群体过滤(social filtering)这种行为特性上。 深入协同过滤的核心 首先,要实现协同过滤,需要一下几个步骤: 1. 收集用户偏好 2. 找到相似的用户或物品 3. 计算推荐 (1)收集用户偏好 要从用户的行为和偏好中发现规律,并基于此给予推荐,如何收集用户的偏好信息成为系统推荐效果最基础的决定因素。用户有很多方式向系统提供自己的偏好信息,而且不同的应用也可能大不相同,下面举例进行介绍:

以上列举的用户行为都是比较通用的,推荐引擎设计人员可以根据自己应用的特点添加特殊的用户行为,并用他们表示用户对物品的喜好。 在一般应用中,我们提取的用户行为一般都多于一种,关于如何组合这些不同的用户行为,基本上有以下两种方式: 将不同的行为分组:一般可以分为“查看”和“购买”等等,然后基于不同的行为,计算不同的用户/物品相似度。类似于当当网或者Amazon 给出的“购买了该图书的人还购买了...”,“查看了图书的人还查看了...”

基于用户评分Kmeans聚类的协同过滤推荐算法实现

基于用户评分Kmeans聚类的协同过滤 推荐算法实现 一:基于用户评分Kmeans聚类的协同过滤推荐算法实现步骤 1、构建用户-电影评分矩阵: public Object readFile(String fileName){ List user = new ArrayList(); double[][] weight = new double[user_num][keyword_num]; List obj = new ArrayList(); try { File file = getFile(fileName); FileReader fr = new FileReader(file); BufferedReader br = new BufferedReader(fr); String line = ""; while (br.ready()) { line = br.readLine(); String[] data = line.split(" "); String[] str = data[1].split(";"); user.add(data[0]); for (int i = 0; i < str.length; i++) { String[] s = str[i].split(":");

weight[Integer.parseInt(data[0])-1][Integer.par seInt(s[0])-1] = Double.parseDouble(s[1]); } } obj.add(user); obj.add(weight); br.close(); } catch (Exception e) { e.printStackTrace(); } return obj; } 2、根据用户评分聚类: public class GenerateGroup implements Base{ private List initPlayers;//初始化,一个随机聚类中心 private List players;//每个用户实体类 public static List clusterHeart; public GenerateGroup(List list) { players = list;

一种改进的协同过滤推荐算法

种改进的协同过滤推荐算法 摘要:协同过滤算法自提出以来便得到了广泛运用,但 协同过滤算法本身具有的数据稀疏性及冷启动问题也制约了算法的性能。通过分析协同过滤算法的原理和不足,提出了一种改进协同过滤算法的思路,并在MovieLens 数据集上进行了验证,一定程度上提高了 算法性能。 关键词关键词:推荐系统;协同过滤;数据稀疏性文献标识码:A 文章编号:1672-7800(2016)004-0063-03 0 引言网络技术的 迅猛发展使得互联网上的信息呈现爆炸式 中图分类号:TP312 增长,为人们的生活和学习提供了便利,与此同时,海量的数据也带来了一些问题,其中最主要的就是“信息过载”问题。所谓信息过载问题,是指由于不相关的垃圾数据过多从而导致用户无法准确找到自己想要信息的问题。 为应对信息过载问题,人们提出了各种解决方案,其中 最为用户所熟悉的无疑是搜索引擎技术。但搜索引擎的服务是被动的,它要求使用者必须先给出一个搜索关键字,然后才能提供与该关键字相关的信息。这种完全依赖于关键字的服务模式要求用户能用关键字准确描述自己所需信息,否则

无法提供服务,但是现实中用户很多时候并不能精确描述自己的需求信息。这种情况下,以推荐系统为代表的技术可以较好地解决该问题,提高用户的使用体验。 1 协同过滤算法 1.1算法介绍 “协同过滤”技术最早由GlodBerg等于20世纪90年代 提出,该技术最初被用来过滤电子邮件[1],此后这种技术取得了商业上的巨大成功,得到了广泛使用[2-3] 。协同过滤的基本思想是,如果两个用户在一些项目上具有相似的评价信息,包括显示的直接评分信息或者点击、购买等隐式评价信息,则这两个用户具有相似兴趣。一般而言,协同过滤需要使用到的用户评价信息会被存储在一个数据表中,该表可以被称为用户评分矩阵。 协同过滤技术的关键在于计算两个用户或者项目的相 似度,然后根据相似的用户或者项目进行推荐。其中如果根据某一用户的评分数据寻找到与其相似的用户,并依据相似用户的爱好对活动用户进行推荐的思想被称为基于用户的协同过滤。如果知道用户对某一项目评分较高,则可以根据评分矩阵寻找与这一项目相似的项目推荐给用户,这种思想被称为基于项目的协同过滤。 两种协同过滤算法的基本步骤比较相似。首先,依据用 户对物品的评分建立用户评分矩阵,矩阵的行数为系统中用

基于在线评论情感分析的改进协同过滤推荐算法

第45卷 第6A 期 2018年6月 计算机科学COMPUTER SCIENCE Vol.45No.6A June 2018 本文受国家自然科学基金项目(71671121,11471152)资助.孙丽华(1979-),女,博士生,主要研究方向为个性化推荐算法,E-mail :sunlh68@t j u.edu.cn ;张兴芳(1957-) ,女,教授,主要研究方向为不确定性的数学理论与应用. 基于在线评论情感分析的改进协同过滤推荐算法 孙丽华1 张兴芳2 (天津大学管理与经济学部 天津300072)1 ( 聊城大学数学科学学院 山东聊城252000)2 摘 要 针对在线中文评论中用户主观意见的不确定性,提出了一种基于不确定理论的情感分析模型,并结合情感分析模型设计了一种个性化推荐算法.首先,采用分词工具ICTCLAS 和IKAnal y zer 预处理在线中文评论,并基于情感词典(HowNet )计算特征词的点互信息值;然后,应用不确定变量与不确定集设计情感分析模型;最后,根据情感分析模型设计搜索K 最近邻居的新方法,并产生推荐.实验结果表明,该方法能够有效提高推荐的准确率,缓解数据稀疏问题. 关键词 推荐算法,不确定统计,在线评论,情感分析中图法分类号 TP391 文献标识码 A Im p roved Collaborative Filterin g Recommendation Al g oritbm Based on Sentiment Anal y sis of Online Review SUN Li-hua 1 ZHANG Xin g -fan g 2 (Colle g e of Mana g ement and Economics ,Tian j in Universit y ,Tian j in 300072,China ) 1(School of Mathematical Sciences ,Liaochen g Universit y ,Liaochen g ,Shandon g 252000,China ) 2 Abstract Aimin g at the uncertaint y of users sub j ect o p inions in online Chinese review ,a sentiment anal y sis model based on uncertaint y theor y was p ro p osed.An individual recommendation al g orithm was desi g ned on the basis of the p ro p osed sentiment anal y sis model. First ,the tokenizers of ICTCLAS and IKAnal y zer was used to p re p rocess online Chinese review to g enerate characteristic words ,and the p oint mutual information value of characteristic words accoun-tin g for the sentiment direction were com p uted based on HowNet dictionar y .Then ,the sentiment anal y sis model was established via uncertaint y theor y of uncertain variables and uncertain sets.In addition ,the new similarit y formula based on the p ro p osed model was used to search the K-nearest nei g hbors.Finall y ,the recommendation lists were g iven.Ex p eri- mental results show that the p ro p osed method can effectivel y im p rove the accurac y of recommendation and alleviate the s p arse data p roblem. Ke y words Recommendation al g orithm ,Uncertain statistics ,Online review ,Sentiment anal y sis 1 引言 随着互联网的发展,电子商务逐步进入社会化商务时代,用户可以发布和获得网络信息的渠道日益增多. 以 协同过 滤 思想为基础的推荐技术[1] 很好地帮助用户提高了信息利 用率.基于用户或项目的协同过滤推荐算法,无论是在实际应用领域还是理论发展方面,都取得了丰富的成果.但是,在电子商务网站中,普遍存在数据稀疏问题,国内外一些学者通 过改进推荐算法来提高推荐精度[2-3] ,从而满足用户的需求. 然而,随着用户需求的不断细化,学者们发现评分数据中包含的信息量有限,不可避免地忽略了用户的某些特征信息,限制了推荐的精度. 在线评论是用户对项目使用经验的具体反馈,从评论信息中挖掘用户意见,无疑能完善用户偏好模型,提高推荐精度.由于自然语言本身具有不确定性,使得用户反馈的体验信息具有不确定性.为解决这类问题,现有文献多采用概率 [2] 或模糊 [4-5] 的方法.例如,Dra g oni 等 [6] 利用模糊的方法 刻画情感倾向,并将该方法应用到不同的领域来分析评论中的情感倾向性.Ha q ue 等 [7] 基于模糊逻辑的方法分析用户正 面或者负面的情绪来判断用户对产品的兴趣.Loia 等[8] 和 Wan g 等[9] 利用模糊的方法来识别文本中用户的情感倾向. Fu 等[12] 利用模糊方法从句子级别来研究情感分类, 提高了情感分类的准确性.因此,情感分析技术很快被应用到推荐 系统中[10-11].Fu 等[13] 结合评论信息来丰富用户的偏好信 息,利用HowNet 情感词典分析评论中用户的情感倾向,挖 掘用户情感倾向来提高推荐结果的准确性.De 等[2] 利用概率推断的方法从模糊观测的结果中改进协同过滤推荐算法, 提高推荐结果的精度. 然而,概率论和模糊数学中并没有涵盖所有的非确定性,例如,在情感分析过程中,分析用户的情感倾向是正向的程度或者是负向的程度;类似地,分析用户的情感强度是无法用工 具测量的.不确定理论[14]对这些问题给出了合理的解释,并对其做了进一步的完善[ 15] .可以利用不确定理论来更好地描述这些既不是随机也不是模糊的非确定问题. 本文针对在线中文评论中用户主观意见的不确定问题,建立了一种基于不确定理论的情感分析模型,并在此基础上设计了个性化推荐算法,以提高推荐结果的精度和缓解数据稀疏问题.最后,在Java 环境下,利用两个真实数据集验证 了该算法的有效性. 万方数据

浅谈基于协同过滤的个性化推荐算法

浅谈基于协同过滤 算法的个性化推荐 姓名: 学号: 班级: 学院: 年月日

摘要 协同过滤是如今推荐系统中最为成熟的的一个推荐算法系类,是利用群体的喜好来推测使用者的喜好,从而向用户产生推荐的算法。当前协同过滤算法大致可以分为基于用户的协同过滤算法和基于项目的协同过滤算法。协同过滤为主要算法的推荐系统的应用领域日益广泛,电子商务是其应用的最主要和最成功的领域。但协同过滤算法仍具有很多不足之处,最突出的不足分别是数据稀疏性问题,冷启动问题和系统延伸性问题。在已有的理论和实践研究基础上,个人提出了协同过滤推荐值得深入研究的方向应包括多维数据的交叉利用,从而提高协同过滤推荐的精准度。 关键字:协同过滤推荐,基于用户,基于项目,数据稀疏,冷启动,系统延 伸性,多维数据的交叉利用 正文 一、协同过滤推荐的基本定义 (一)协同过滤推荐的概念 协同过滤是如今推荐系统中最为成熟的的一个推荐算法系类,简单来说是利用某兴趣相投、拥有共同经验之群体的喜好来推荐使用者感兴趣的资讯,个人透过合作的机制给予资讯相当程度的回应(如评分)并记录下来以达到过滤的目的进而帮助别人筛选资讯,回应不一定局限于特别感兴趣的,特别不感兴趣资讯的纪录也相当重要。 (二)协同过滤推荐的主要算法概述 当前协同过滤算法大致可以分为两类,一类是基于用户的协同过滤算法,一类是基于项目的协同过滤算法。 基于用户的协同过滤推荐根据相似用户群的观点来产生对目标用户的推荐。基本思想是如果某些用户对部分项目的评分趋于一致或是很接近,可以认为他们对其它项目的评分差异就比较小,进一步,可以使用这些相似用户的项目评分值对目标用户的未评分项目进行估计。基于用户的协同过滤使用数理统计的方法来寻找与目标用户有相似兴趣偏好的最近邻居用户集合,再以最近邻居用户对特定项目的评分为基础使用一定的数学方法来预测目标用户对该特定项目的评分,而预测评分最高的前N个商品可以看作是用户最有可能感兴趣top-N商品返回给目标用户(这就是所谓的top-N推荐)。基于用户的协同过滤推荐算法的核心思想是利用数理统计的方法为目标用户寻找他的最近邻居用户集,再以最近邻居用户对特定项目的评分为基础使用一定的数学方法来预测目标用户对该特定项目的评分,最终产生最后的推荐结果。通过最近邻居用户对目标用户未评分项目的评分值进行加权平均来逼近,这是该算法思想的关键。基于用户的协同过滤推荐算法的主要工作有:用户之间相似性的衡量、最近邻居集的查找和评分预测值的计算。 和基于用户的协同过滤相比,基于项目的协同过滤推荐算法的思想出发点是完全相反的,但是计算方法一致。基于项目的协同过滤推荐算法是根据用户对与

协同过滤推荐算法与应用

机器学习算法day03_协同过滤推荐算法及应用课程大纲 课程目标: 1、理解协同过滤算法的核心思想 2、理解协同过滤算法的代码实现 3、掌握协同过滤算法的应用步骤:数据处理、建模、运算和结果判定

4、 1. CF协同过滤推荐算法原理 1.1 概述 什么是协同过滤(Collaborative Filtering, 简称CF)? 首先想一个简单的问题,如果你现在想看个电影,但你不知道具体看哪部,你会怎么做? 大部分的人会问问周围的朋友,看看最近有什么好看的电影推荐,而我们一般更倾向于从口味比较类似的朋友那里得到推荐。这就是协同过滤的核心思想。 协同过滤算法又分为基于用户的协同过滤算法和基于物品的协同过滤算法 1.2 案例需求 如下数据是各用户对各文档的偏好: 现在需要基于上述数据,给A用户推荐一篇文档

1.3 算法分析 1.3.1 基于用户相似度的分析 直觉分析:“用户A/B”都喜欢物品A和物品B,从而“用户A/B”的口味最为相近 因此,为“用户A”推荐物品时可参考“用户B”的偏好,从而推荐D 这种就是基于用户的协同过滤算法UserCF指导思想 1.3.2 基于物品相似度的分析 直觉分析:物品组合(A,D)被同时偏好出现的次数最多,因而可以认为A/D两件物品的相似度最高,从而,可以为选择了A物品的用户推荐D物品

这种就是基于物品的协同过滤算法ItemCF指导思想 1.4 算法要点 1.4.1、指导思想 这种过滤算法的有效性基础在于: 1、用户偏好具有相似性,即用户可分类。这种分类的特征越明显,推荐准确率越高 2、物品之间具有相似性,即偏好某物品的人,都很可能也同时偏好另一件相似物品 1.4.2、两种CF算法适用的场景 什么情况下使用哪种算法推荐效果会更好? 不同环境下这两种理论的有效性也不同,应用时需做相应调整。 a.如豆瓣上的文艺作品,用户对其的偏好程度与用户自身的品位关联性较强;适合UserCF b.而对于电子商务网站来说,商品之间的内在联系对用户的购买行为影响更为显著。 1.5 算法实现 总的来说,要实现协同过滤,需要一下几个步骤: 1.收集用户偏好 2.找到相似的用户或物品 3.计算推荐

基于用户的协同过滤推荐算法原理和实现

在推荐系统众多方法中,基于用户的协同过滤推荐算法是最早诞生的,原理也较为简单。该算法1992年提出并用于邮件过滤系统,两年后1994年被GroupLens 用于新闻过滤。一直到2000年,该算法都是推荐系统领域最著名的算法。 本文简单介绍基于用户的协同过滤算法思想以及原理,最后基于该算法实现园友的推荐,即根据你关注的人,为你推荐博客园中其他你有可能感兴趣的人。 基本思想 俗话说“物以类聚、人以群分”,拿看电影这个例子来说,如果你喜欢《蝙蝠侠》、《碟中谍》、《星际穿越》、《源代码》等电影,另外有个人也都喜欢这些电影,而且他还喜欢《钢铁侠》,则很有可能你也喜欢《钢铁侠》这部电影。 所以说,当一个用户A 需要个性化推荐时,可以先找到和他兴趣相似的用户群体G,然后把G 喜欢的、并且A 没有听说过的物品推荐给A,这就是基于用户的系统过滤算法。 原理 根据上述基本原理,我们可以将基于用户的协同过滤推荐算法拆分为两个步骤: 1. 找到与目标用户兴趣相似的用户集合 2. 找到这个集合中用户喜欢的、并且目标用户没有听说过的物品推荐给目标用户1. 发现兴趣相似的用户 通常用Jaccard 公式或者余弦相似度计算两个用户之间的相似度。设N(u) 为用户u 喜欢的物品集合,N(v) 为用户v 喜欢的物品集合,那么u 和v 的相似度是多少呢: Jaccard 公式: 余弦相似度:

假设目前共有4个用户:A、B、C、D;共有5个物品:a、b、c、d、e。用户与物品的关系(用户喜欢物品)如下图所示: 如何一下子计算所有用户之间的相似度呢?为计算方便,通常首先需要建立“物品—用户”的倒排表,如下图所示: 然后对于每个物品,喜欢他的用户,两两之间相同物品加1。例如喜欢物品a 的用户有A 和B,那么在矩阵中他们两两加1。如下图所示:

基于用户-项目特征的协同过滤推荐改进算法

基于用户-项目特征的协同过滤推荐改进算法 朱 珠,辜丽川,舒贵阳,冯娟娟,王 超,陈 卫 ( 安徽农业大学 信息与计算机学院,安徽 合肥 230036 ) 摘 要:基于用户的协同过滤推荐算法是当前使用范围最广的推荐算法之一。传统的协同过滤推荐算法仅依靠用户对项目的打分记录,数据稀疏度高而且来源单一,对用户间相似度测算的可信度影响较大。针对这一问题,引入用户画像信任度和类别评分差异度两个概念,对传统基于用户的协同过滤推荐算法进行改进,提出一种多维用户相似性计算方法,该算法通过调节用户画像信任度和类别评分差异度在用户相似性计算中的贡献系数,进而影响推荐算法评价指标MAE 的变化,实验结果表明,新算法较原算法在命中率和准确率上有较大提高。 关键词:用户画像; 项目类别; 相似性; 协同过滤 中图分类号:TP399 文献标识码:A 文章编号:1673-9639 (2017) 09-0015-05 协同过滤推荐算法[1-2]是应用最为广泛的推荐方法之一,在亚马逊网、Netflix 、YouTube 等在线电子商务[3]、移动应用[4]等领域作为个性化信息服务的解决方案,都有较为成功的应用。随着数据量增大,用户对项目的打分数量有限,每个用户的打分数量通常小于整体待评分项目的1‰,用户-项目打分矩阵数据稀疏等级高,数据重叠性低,严重制约了用户间相似度测算的可信度,降低了推荐算法的性能。因此,如何通过用户相似性计算为目标用户过滤出可靠的邻居用户成为算法亟待解决的关键问题。 为解决数据稀疏性问题,赵琴琴等[3]依据用户-项目评分矩阵,通过相似度传播,为目标用户寻找更多、更可靠的邻居,并分别从用户和项目两方面寻找用户、项目的相似性。胡勋等[5]为提高基于共同评分项目的用户相似度计算精度,使用推土机距离实现跨项目的移动用户相似度计算,提出一种将移动用户信任关系与项目评分特融合的协同过滤推荐算法; 贾冬艳等基于用户相似度计算的结果,动态选取目标用户的兴趣相似集,并依据用户评分信息计算目标用户与兴趣相似用户的信任度,实现双重邻居选取[1]。 以上处理方式在一定程度上缓和了数据稀疏性问题,但这些方式的数据来源单一,仅依赖于用户对项目的行为记录,没有考虑用户和项目自身特征差异对相似性的影响,用户信任度稳定性较低,往往导致推荐结果的准确率和命中率降低。为解决上述问题,本文引入“用户画像”和“用户对同一类别项目的评分量”两个度量因子,提出一种改进相似度的协同过滤推荐算法,实验结果证明该方法在准确度等方面有较大改善。 1.相关概念 1.1.度量相似性 1.1.1.余弦相似性 将用户i 和用户j 的评分向量视为n 维空间向 收稿日期:2017-03-22 基金项目:国家自然科学基金项目(31371533);安徽省重大科技专项(16030701092);安徽农业大学2015年度教育改革与发 展研究项目(18)。 作者简介:朱 珠(1992-),女,安徽六安人,硕士,研究方向:数据挖掘、机器学习等。 第19卷 第9期 铜仁学院学报 V ol. 19, No. 92017年 9 月 Journal of Tongren University Sep. 2017

基于用户的协同过滤算法

基于用户的协同过滤算法 作者:罗沐阳(2012101020028) 指导教师:张勇 【摘要】:随着网络技术的应用和普及、电子商务的迅猛发展,越来越多的信息充斥在网络之上。如何在众多的资源中找到适合自己需求的信息,成为众多学者、专家和网络用户火心的核心问题之一。个性化推荐技术在这样的背景下应运而生。协同过滤技术是个性化推荐技术最为核心的技术之一,也是目前应用最为广泛和成功的技术。本文主要研究的是基于用户的协同过滤推荐算法的实现。 【关键词】:协同过滤,相似度,个性化推荐 1.电子商务个性化推荐技术 1.1个性化推荐技术 电子商务对传统的商务交易产生了革命性的变化,从而要求“以产品为中心”向“面向客户”、“以客户为中心”的新的商业模式的转变,要求电子商务网站按客户群划分产品,围绕客户进行服务,为客户提供所需要的东西,所以对每个顾客提供个性化的服务成为必要。在这种背景下,推荐系统(Recommender System)应运而生,它是根据用户个人的喜好、习惯来向其推荐信息、商品的程序。电子商务网站可以使用推荐系统分析客户的消费偏好,向每个客户具有针对性地推荐产品,帮助用户从庞大的商品目录中挑选真正适合自己需要的商品,尽可能为每个顾客提供个性化的服务。 个性化推荐(personalized recommendation)技术通过研究不同用户的兴趣,主动为用户推荐最需要的资源,从而更好地解决互联网信息日益庞大与用户需求之间的矛盾。目前,推荐技术被广泛应用到电子商务、数字图书馆、新闻网站等系统中。因此,各种适用于推荐系统的技术应运而生,如协同过滤技(CF)、bayesian网技术、聚类分析技术、关联规则技术、神经网络技术和图模型技术等,其中,协同过滤是应用最为广泛的个性化推荐技术。协同过滤推荐又分为基于模型(Model-based)的协同过滤和基于用户的协同过滤。后来,sarwr 教授在2001年提出基于项目的协同过滤算法 1.2协同过滤 协同过滤推荐技术是用“相似统计”的方法发现具有相似偏好或是兴趣特征的“相邻用户”。“协同过滤”的思想最早由美国明尼苏达州大学的学者Paul Resnick在1994年,发表的《GroupLens: AnOpen Architecture for Collaborative Filtering of Netnews》一文中提出的。迄今为止, 协同过滤是在个性化推荐系统中应用最广泛和最被人们所认可的一种推荐技术。 协同过滤的基本原理是:根据用户对信息产品的评分情况,对其他用户进行检索, 找出与该用户“品味”相似的一小群人, 也就是“邻居”,然后再基于这些相似性进行信息产品评分预测,产生Top-N的推荐结果。

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

基于项目的协同过滤推荐算法采用统计技术来寻找与目标项目有相似评分的邻居项目,再基于邻居项目的评分数据预测目标项目的评分,从而选择预测评分最高的前若干项推荐给目标用户。整个算法基于用户一项目评分矩阵R ( m, n}进行。R( m, n}是一个mxn阶矩阵,m行表示m个用户,n列表示n个项目,矩阵,表示用户i对项目j的评分数据。 元素值R i ,j 一般情况下,网站用户数量增长比较快,而待评价项目比较稳定,因此计算出的项目相似度矩阵的更新频率比较低,所以此矩阵可以使用较长时间。基于项目的协同过滤推荐算法认为,用户对不同项目的评分具有相似性,先计算项目之间的相似性,当需要估计用户对某一项目的评分时,可以参照用户对其他项目的评分来进行判断[11]。 和基于用户的协同过滤推荐算法相似,该算法也分为三步: (1)建立用户—项目矩阵 M表示有m个用户,n为项目数量,矩阵中的R ij表示用户i对项目j的评价,可选取一定的范围数字表示。 (2)获取目标用户邻居 根据用户—项目矩阵,计算目标项目与其他项目的相似度,获得目标项目的项目邻居列表,其中,项目的相似度可根据上文提到的余弦相似性,皮尔森相似系数以及修正的余弦相似系数计算出来,从而采用TOP-N算法产生最近邻居集[2]。 (3)进行推荐 根据邻居对项目的评分来预测目标用户对项目的评分,可采用下面的一个公式:

U为邻居用户集,sim(T,n)表示目标项目与最近邻居的相似性,Ru, n表示用户u 对项目n 的评分; RT 和Rn 分别表示对项目T 和项目n的平均评分[11]。 基于项目的协同过滤推荐技术可以对基于一些复杂的,难以表达的概念(信息质量、品位)进行过滤,同时也可以推荐一些新特性。 但是,由于大型电子商务站点用户及商品项的数量庞大且不断增加,使得R ( m, n}成为高维矩阵,’用户给予评分的商品项很少,通常在1%以下[3j,导致R ( m, n}中的评分数据极端稀疏。因此,基于项目的协同过滤推荐算法面临严峻的用户评分数据稀疏性的挑战[m。文献[8了在其提出的优化算法中考虑到了项目的类别相似性,但只涉及项目的第1层分类,而未能扩展到实际商品在多类别多层次上的相似性。本文提出了计算项目类别相似性的方法,并将其与传统的项目评分相似性相结合,进一步求得项目综合相似性,从而提高最近邻居项目的搜寻准确度,同时也缓解了用户评分数据稀疏性问题。 2 基于项目的协同过滤推荐算法的不足 对于项目i、j之间的评分相似性simR(i,j),基于项目的协同过滤推荐算法主要采用以下3种方法进行度量: