基于用户兴趣分类的协同过滤推荐算法
2020-01-21
来源:好走旅游网
2011年第20卷第5期 http:llwww.c-S-a.org.cn 计算机系统应用 基于用户兴趣分类的协同过滤推荐算 陶俊,张 宁 (上海理工大学管理学院,上海200093) 摘要:在现代信息网络中,个性化的推荐系统已经成为用户和应用软件交互的关键部分。推荐算法是个性化 推荐系统的核心,其中,协同过滤算法是至今应用最为成功的推荐算法之一。但传统的协同过滤算法没有考虑 用户兴趣的多样性,对用户兴趣度量不准确,难以适用于用户多兴趣的推荐系统,提出了适应用户兴趣多样性 的协同过滤算法并利用改进的模糊聚类算法搜索最近邻。最后采用实际的日志数据进行算法实验,实验结果表 明该算法较其他推荐算法具有较优的执行效率和推荐精度。 关键词:个性化:协同过滤算法:兴趣分类;模糊聚类 Collaborative Filtering Algorithm Based on Interest-Class TAO Jun,ZHANGNing (School ofManagement,University of Shanghai for Science and Technology,Shanghai 200093,China) Abstract:In the modem information network,the personalized recommendation system has become a key part of users n sofitware application.Recommendation algorithms are the core of personalized recommendation systems.Among them,the collaborative filtering is one of the most successful recommendation algorithm in application.Howeve ̄the traditional collaborative filtering algorithm does not consider user’S multiple interest and measure user’S interest imprecisely,and Can’t be applied to recommendation system with kinds of interests.In this paper,a new method of collaborative filtering algorithm based on users’interest category is proposed using improved fuzzy clustering algorithm to search the nearest neighbors.Finally,the algorithm experiment is given with actual log-data.Results show that the proposed algorithm outr}erforms the other recommendation ones in eficiency fand recommending accuracy. Keywords:personalization;collaborative filtering algorithm;interest classiicatifon;fuzzy clustering 随着互联网和电子通讯的飞速发展,网络中的信 息量急剧上升,如何帮助用户在海量的数据中找到对 其有价值的信息,指导其决策行为已成为研究者们关 注的热点。现今网络系统的一个新的服务方向就是如 何快速有效的推荐给用户可能感兴趣的资源。个性化 荐算法之一。 协同过滤这一概念首次由Goldberg、Nicols、Oki 及TerryII】在1992年提出,应用于Tapestry系统,该系 统适合用户群量少且要求用户给予较多的显示评价信 息。Tapesty系统奠定了协同过滤推荐研究的雏形。r 目前协同过滤推荐算法主要分为两类:1)基于用户的 协同过滤算法用户对项目(资源)的评分比较相似, 则他们对其他项目的评分也比较相似,从而找到具有 的推荐系统就在这种背景下产生出来的。对于推荐系 统而言,推荐算法是其核心所在。目前的推荐算法有 基于内容的过滤推荐、协同过滤推荐算法、基于人口 统计学的推荐算法、基于知识的推荐算法以及混合推 相似兴趣的最近邻,形成推荐。2)基于项目的协同过 滤算法根据用户对不同项目评分的相似性来估计该用 荐算法,其中协同过滤算法是目前应用最为成功的推 ①基金项目:国家自然科学基金(7097lO89);上海市重点学科项目经费资助(¥30501) 收稿时问:2010—08.24;收到修改稿时间:2010.09—26 Research and Development研究开发55. 计算机系统应用 http:llwww.c-s—a.Org.cn 2011年第20卷第5期 户对某个项目的评分,以此进行推荐。 协同过滤算法主要不足有三个方面 '3J:一是稀疏 性问题,即当推荐系统中数据量很大而用户的显示评 示,在用户i和用户J之间的相似性计算公式如式(1) 所示: 分数据又很少时,难以计算相似性,而无法推荐;二 是冷启动问题,当新项目(资源)刚进入系统时,没有用 户对其评价,造成协同过滤无法推荐该资源。三是可 扩展性问题,推荐系统中的用户和资源会随时间快速 的增长,而协同过滤算法的复杂度和数据量呈线性关 嘶, cos(f, 赫②相关相似性(Correlation) (1) 设I 表示被用户i和用户j共同评分过的项目集, 系增长,严重影响了执行效率,从而导致可扩展性较 差。通过分析网络日志数据,本文提出对用户兴趣分 类并用数据挖掘的方法获取用户潜在的兴趣,采用改 进的模糊聚类算法对用户兴趣聚类,从聚类中搜寻最 近邻而形成推荐并对算法进行仿真实验。 1 基于用户的协同过滤推荐算法 基于用户的协同过滤算法是目前应用最为广泛 的,算法的基本思想是使用统计方法挑选出与目标用 户喜好最相似的若干用户并将其感兴趣的项目推荐给 目标用户。假如目标用户对项目的评价与他的“最近 邻居”相似,而目标用户对某个项目的评价可以从其 “最近邻居”的评价中综合得到。该算法可分为三个 阶段【4J: 1)构建用户信息。用户的评价和偏好明确地表示 为一个m木/,/的项目评价矩阵 ,这里 是用户数, 刀是项目数,R=【 f,】,元素,. ,表示用户f对项目 的 评分。在电子商务推荐系统中,元素 既可表示用户 是否购买商品,也可表示用户对商品的偏好程度。 2)产生“邻居”。计算系统中目标用户与其他所 有用户的相似度,找出K个最相似用户集一“最近邻 居”。K-“最近邻居”根据相似度大小从大到小排列的 “邻居”集合。 计算用户两个用户之间相似性首先要获取这两用 户评分过的所有项目,然后利用某种相似性度量方法 进行计算。度量用户相似性有多种方法,常见的有余 弦相似性、相关相似性和修正余弦相似性【5】。 ①余弦相似性(Cosine) 用户评分数据可以看作n是维项目空间上的向 量,用户之间的相似性通过向量问的余弦夹角度量, 若用户对某项没有评分,则将该项评分设为0。设用 r U 户i和用户i在n维项目空间上的评分分别用i,7表 56研究开发Research and Development 则用户i和用户j之间的相似性sim(i, )通过Pearson 相关系数度量: sin(i,j)= ∈Iij(ric一 一rj) 式中,ric表示用户i对项目c的评分,ri, ,分别 表示用户i和用户j对项目的平均评分。 ③修正余弦相似性(Adjusted Cosine) 余弦相似性的度量方法中并没有考虑不同用户的 评分尺度问题,修正的余弦相似性度量方法通过减去 用户对项目的平均评分来改善上述缺陷,设, 表示被 用户i和用户j共同评分过的项目集,设,f, ,分别 表示被用户i和用户j评分过的项目集,则用户i和用 户i的相似度计算公式如式(3)所示:  ̄c ̄lij (ric- Fi)(rj ̄-Fj) ∈I ic一予 ∈1 jc0 式中,ric表示用户i对项目c的评分,Fi和 ,分别 表示用户i和用户J对项目的平均评分。最近邻居搜寻 就是对每个用户i,在整个的用户空间中查询用户集 m={nl,n2,人, ),使f m且,?1与i相似度最高, 刀 与i相似度次之,依次递减排列。 , 3)推荐。“最近邻居”集产生后,可计算目标用 户对项目的预测评价值进行Top.N推荐。通过预测项 目评分值搜索最近邻居而产生推荐,预测评分计算方 -, ,Y一-Rj) ., ,, 『, = f+』 _r ) 2011年第2O卷第5期 http:,/Ⅵ n c-S-a.org.ca 计算机系统应用 其中,Pi,Y表示目标用户i对项目Y的预测评价值; hosLidfrom au1 union select distinct hostid from au2 ——为用户i的平均评分值:Pj,Y表示为目标用户i的最近 邻居集的用户i对项目Y的评价。在此,目标用户i 的最近邻居集用NN表示。按照兴趣度预测值Pi,Y的 高低产生推荐集。 传统基于用户的协同过滤算法要求有较多的用户 评分数据且算法效率也较低。 2 Web日志分析处理 协同过滤算法需要整理用户评分数据、计算相似 性、寻找最近邻从而完成推荐。而大多的网络用户很 少对资源进行显示的评分,这需要Web挖掘算法来获 取隐性的评价数据。本文以学校网络中心网络日志作 为数据源。在此主要分析和利用用户行为记录表,其 包括用户名、目标IP、应用类型、访问时间、URL及 网站等信息。用户行为记录表格式描述如下表l所示。 表l用户行为记录表简要格式 用户目标 应用类型 访问时间 URL 网站 ul IPI 访问网站2009.11.11 18:12:27 URLI NET1 u2Ⅱ,2 http下载2009.11.11 18:41:22 URI2 NET2 ul P3 娱乐 2009.11.11 19:35:43 I瓜I3 NET3 u2Ⅱ.4 聊天交友2009.11.Il 19:56:08 URI4 NET4 ul 5 访问网站2009.11.1l 20:02:14 URI.5 NET 从表1中可以看出,用户ul在三十分钟内共访问 了NET1、NET2以及NET5的3个网站,且这三个站 点分别属于两种不用的应用类型,表明了用户u1的兴 趣不是唯一的。用户的兴趣可以用其选择的项目(访 问的网站)来反映且项目的类型不同也体现了用户兴 趣的不同。在实际数据中,用户名是以IP地址表示的, 为了计算方便将用户名解析编号后计算各个用户的度 (用户访问的不同站点的数目)。用户编号的sq1脚本如 下: create procedure makeusercode0 BEGIN declare numl int default l; declare flag int default 0: declare userid int(1 0); declare usercode cursor for select distinct union select distinct hostid from aun; — declare continue handler for not found set lfag=l; open usercode; repeat fetch usercode into userid; inset into code(nam,userid)values(num 1, userid); set numl--numl+l; until flag=l end repeat; END 其中,aul至aUll为用户行为记录表;计算用户度 的脚本在此略。 3算法改进 依据上述分析的基础上,对传统协同过滤算法进 行如下改进:首先按照用户访问站点的类型对其兴趣 分类;其次对同一个用户预测最近邻时要区分预测项 目的类别(页面的应用类型)以保证预测的准确性;再次 利用改进的模糊聚类算法对相似用户进行聚类,生成 最近邻,以提高算法的精度和效率;最后按照用户兴 趣在每类项目中所占的权重分配相应的该类项目的推 荐数目[6-8]。 算法的设计步骤如下: 1)用户兴趣分类 用户的兴趣可以通过其浏览 的网站反映,按照网站的应用类型分类,每种应用类 型至少包括一个网站(项目)。由于日志数据中已经按 照应用类型进行分类了,则对用户兴趣分类实现较为 简单。以表l为例简要说明:用户ul访问的网站有 NETI、NET3及NET5,它们的应用类型分别为访问 网站和娱乐,则用户ul的兴趣分成两类,表示为 C/1 2。 2)构建用户兴趣矩阵根据用户访问网站的记 录映射用户兴趣,计算用户兴趣度,建立用户兴趣矩 阵。考虑到推荐的时效性,用户最近的浏览记录对推 Research and De、relopment研究开发57 计算机系统应用 http://www.c—S-a.org.cn 2OI1年第20卷第5期 荐越有利,从2个月的日志中问断的截取4个时间段, 每段的时间周期为3天。由于本文挖掘和分析的是用 户隐式评分信息,评分信息将由用户浏览页面的行为 间接反映。为了直观描述用户对项目的兴趣度,将用 式(7)中,C 为用户i访问网站类型的数目; Ⅳf 表示该用户i访问网站J的次数;Nf为用户i 访问各类项目的总次数。考虑每个应用类型的预测评 价值和每个网站(项目)在各自应用类型中的所占的 权重加权后,推荐每种应用类型的项目的数目。 户对项目的兴趣值划分成0到5共6个标准,划分方 法是为每个标准设置一个阈值,当用户i对项目J的访 问次数超过某个阈值时,评定相应的值。假设提出以 rij表示用户i对项目i的评价值。在一段时间内,考 .改进的算法的复杂度较传统协同过滤算法低很 多,实际推荐系统会随着时间变化,数据量急剧增大, 效率降低。采用用户聚类,将相似兴趣的用户进行聚 虑有些用户兴趣较分散,有些较集中,会对推荐造成 一定的影响,在量化评分时按照用户兴趣的种类数 ,y 做适当的修正。用户评价值rid=_-=v_・Si i,其中 CIi f,为用户i对项目J的兴趣值;Ot为调节参数,可 根据需要调整,一般取I。计算对于用户i浏览过类型 CIi( =1,2,人 )中的网站(项目)总数,据以上的 方法统计用户i对每个应用类型的评分值。最后,计 算出用户对所有应用类型的兴趣值,形成用户的兴趣 矩阵。 3)寻找最近邻并推荐对用户兴趣矩阵按不同 的兴趣分类分别利用改进的模糊聚类算法进行聚类, 从聚类结果中寻找最近邻。该步的关键就是计算用户 之间的相似性,对于相似性计算方法有很多,综合考 虑采用基于修正余弦相似性的计算方法。在应用类型 C(c=1,2,人,七)中,计算目标用户i与类型c中用户 J之间的相似度sim(i,j『) 。 sirr(i,j)c= 对于用户i而言,把计算出的所有相似值按照从 大到小选出若干个作为其最近邻居集。 以下将计算用户目标项目的评价值:设目标用户 i,计算各个应用类型C(c=1,2,A,后)中用户未进行 隐式评分j项目的评分预测值p(i, ) 。 ∑ :1sim(i, )c’(rj,c— ) ,.f’ ).、 c F,+兰== 三 推荐时考虑不同项目所占推荐权重,按照推荐权 重分配该项目的推荐数目。可定义推荐权重为wi: , w, , 而 (7)58研究开发Research and Development 类分组,搜索最近邻用户时,只要从相应的用户分组 中搜索推荐,并且聚类还可以离线进行,降低了算法 的执行时间。该推荐算法较适合网页的推荐,不需要 获取较多的用户信息,且对于大量用户参与的情况也 能适应,只需分析网络日志获取用户浏览行为数据进 行隐式评分即可。 4算法实验 为了验证算法的有效性,本文采用学校网络中心 Web日志数据作为实验数据集。为了实验方便,搜集 并处理了近两个月的用户行为记录数据,得到用户数 目232个,网站数目1241及应用类型8个近lOoo00 条记录。将数据集的90%作为训练集构建兴趣矩阵, 其余的作为测试集。 本文采用信息检索领域中评估系统效果的准确率 (Precision)标准来衡量传统算法和本文算法的精度【9】。 Precision=.Numbero..................................fHits_....................—— (8) N ÷ .盔 i 一 2O11年第20卷第5期 http://www.c-S-a.org.cn 计算机系统应用 O.25 参考文献 —◆一本文算法 0.2 l Goldberg D,Nichols D,Oki BM,Terry D.Using ’ 0.15 collaborative filtering to weave all information tapestry. —g 0.1 ■一User-based ations ofACM,1992,35(12):61—70. 0 0CF Communic.05 2 Sang Y Liu PG Li Y A collaborative filtering algorithm 0 适应用户兴趣 iftting user interest evolution.Journal of the China Society 10 15 20 25 30 变化的协同过 number of recommendat i on 滤算法 for Scientiifc nad Technical Information,28(1):109一l l3. 3 Xing CX,Gao FR,Zhan SI,Zhou LZ.A coilaborative 图2算法实验结果 ifltering recommendation algorithm incorporated with user niterest change.Journal of Computer Research and 从图2可以看出,本文改进的协同过滤算法较传 Development,2007,44(2):296—30 1. 统协同过滤和适应用户兴趣的系统过滤算法有明显的 4王茜,王均波.一种改进的协同过滤推荐算法.计算机科 推荐精度。实验还发现改进的算法的执行时间有较大 学,2010,37(6):226—227. 的提高。改进的推荐方法不仅考虑了用户最近兴趣对 5 Sarwar B,Karypis G Konstan J,Riedl J.Item-Based Collaborative Filtering Recommendation Algorithms.Proc. 推荐的影响,着重是实际系统中用户兴趣的多样性的 of the lOth Inemational Wl0rld Wide Wleb Conference.2001: 特征,从而有力的提高了推荐精度。 285-295. 6 Konstna J,Miller B,Maltz D,et a1.GroupLens:Applying 5结语 collaborative filtering to usenet news.Communications ofthe 本文主要分析了传统协同过滤推荐算法的不足和 ACM,1 997,40(30):77—87. 实际用户兴趣的多样性的特点,提出改进传统协同过 7 Resn Ick P-Var Ian HR.Recommender systems. 滤算法的具体措施。文章采用真实日志数据进行仿真 Communications ofACM,1997,40(30):5628. 8ZengC,XingCX,ZhouLZ.Similaritymeansure andinstance 实验,实验结果表明改进的算法在推荐效率和推荐精 selection for collaborative filtering intemationa1.Joumal of 度上都有明显的优势。随着个性化推荐的发展,对推 Electronic Commerce,2004,4(8):l15-129. 荐算法在实时性和复杂度的要求将是以后推荐算法研 9杨芳,潘一飞,李杰,等.一种改进的协同过滤推荐算法.河北 究的重点。 工业大学学报,2010,39(3):82—87. (上接第29页) 参考文献 8扬小牛,楼才义.软件无线电原理与应用.北京:电子工业出 l田日才.扩频通信.北京:清华大学出版社,2007. 版社,2001. 2 Roger L,Peterson RE,Ziemer DE,et a1.Introduction to 9周润景,图亚,张丽敏.基于Quartus的FPGA/CPLD数字系 Spread Spectrum Communications.北京:电子工业出版 统设计实例.北京:电子工业出版社,2007.40—96. 社.2006.2—28. 10徐光辉,程东旭,黄如.基于FPGA的嵌入式开发与应用.北 3曹志刚,钱亚生.现代通信原理.北京:清华大学出版社,1992. 京:电子工业出版社,2006.916—84. 4朱近康.CDMA通信技术.北京:人民邮电出版社,2001. 5 Ziemer RE,Peterson RL.Introduction to Digital Communi・ 11潘松,黄继业.EDA技术与VHDL.北京:清华大学出版 cation.Prentice Itall,Inc.2001. 社,2005. 6 Shannon CE.A mathematical theory of communication.Bell 12李光军,孟宪元.可编程ASIC设计及应用.北京:电子科技 System Technical Journal,1948,(27):379—423,623—656. 大学出版社,2000. 7 Seay TS.Hopping Pa ̄ems for Bounded Mutual Interference 13 Ashenden PJ.VHDL设计指南.北京:Vt械工业出版社,2005. nIfequency Hopping Multiple Access.Proc.of hte 1 982 14黄智伟,陈琼.FPGA系统设计与实践.北京:电子工业出版 IEEE MILC0M Conference,Boston,Massachusetts. 社,2005.294—329,85-122. Research and Development研究开发59