计算机应用   2016, Vol. 36 Issue (10): 2784-2788  DOI: 10.11772/j.issn.1001-9081.2016.10.2784
0

引用本文 

郑洁, 钱育蓉, 杨兴耀, 黄兰, 马婉贞. 基于信任和项目偏好的协调过滤算法[J]. 计算机应用, 2016, 36(10): 2784-2788.DOI: 10.11772/j.issn.1001-9081.2016.10.2784.
ZHENG Jie, QIAN Yurong, YANG Xingyao, HUANG Lan, MA Wanzhen. Collaborative filtering algorithm based on trust and item preference[J]. JOURNAL OF COMPUTER APPLICATIONS, 2016, 36(10): 2784-2788. DOI: 10.11772/j.issn.1001-9081.2016.10.2784.

基金项目

国家自然科学基金资助项目(61562086,61462079,61363083,61262088)

通信作者

钱育蓉(1980—),女,山东武城人,副教授,博士,CCF高级会员,主要研究方向:网格计算、遥感图像处理.E-mail:qyr@xju.edu.cn

作者简介

郑洁(1992—),女,河南商丘人,硕士研究生,CCF会员,主要研究方向:推荐系统、数据挖掘;
杨兴耀(1984—),男,湖北襄阳人,博士,CCF会员,主要研究方向:推荐系统、网格计算、云计算、可信计算;
黄兰(1988—),女,四川遂宁人,硕士研究生,CCF会员,主要研究方向:大数据、数据挖掘、推荐系统;
马婉贞(1992—),女,新疆吐鲁番人,硕士研究生,CCF会员,主要研究方向:高性能并行计算

文章历史

收稿日期:2016-05-05
修回日期:2016-06-13
基于信任和项目偏好的协调过滤算法
郑洁, 钱育蓉, 杨兴耀, 黄兰, 马婉贞    
新疆大学 软件学院, 乌鲁木齐 830008
摘要: 针对传统协同过滤算法不能深度挖掘用户关系,以及无法对新项目进行用户推荐的问题,提出了基于信任和用户偏好的协同过滤(TIPCF)算法。首先,通过分析用户评分判断用户的可信度并量化用户间的信任程度,挖掘用户潜在的信任关系;其次,考虑到用户之间对于不同目标项目偏好程度的差异会对用户相似性产生影响,在传统用户相似性算法上添加用户偏好度改进相似性算法;然后,通过结合用户信任度和改进的相似度,使得最近邻的选取更加准确;最后,根据用户对项目属性的偏好对新项目进行推荐。Movielens数据集实验结果表明,与传统的协同过滤算法相比,TIPCF算法的平均绝对误差减少了6.7%;在推荐新项目时,TIPCF算法的平均绝对误差减少了10.7%。TIPCF算法不仅提高了推荐的准确度,而且增加了新项目的推荐概率
关键词: 推荐系统    协同过滤    信任因子    稀疏性    冷启动    
Collaborative filtering algorithm based on trust and item preference
ZHENG Jie, QIAN Yurong, YANG Xingyao, HUANG Lan, MA Wanzhen     
Software College, Xinjiang University, Urumqi Xinjiang 830008, China
Abstract: Aiming at the fact that the traditional collaborative filtering algorithm cannot deeply mine user relationship and recommend new items to users, a Trust and Item Preference Collaborative Filtering (TIPCF) recommendation algorithm was proposed. Firstly, in order to mine the latent trust relationship of the users, the user reliability was gotten and the trust degree between users was quantified by analyzing user ratings. Secondly, by considering that the difference of users' preference for different target items has an effect on user similarity, user preference was added to the traditional user similarity algorithm to improve the similarity algorithm. Thirdly, the choice of nearest neighbor set was more accurate by incorporating user reliability and improved similarity. Finally, the users' preference on item attribute was used to recommend new items. Experimental results show that, compared with traditional collaborative algorithm, the Mean Absolute Error (MAE) of TIPCF was decreased by 6.7%, and the MAE of TIPCF was decreased by 10.7% when recommending new items on the Movielens dataset. TIPCF not only improves the accuracy of recommendation, but also increases the recommended probablity of new items
Key words: recommendation system    collaboration filtering    trust factor    sparsity    cold start    
0 引言

互联网的高速发展以及电子商务的迅速崛起,有力地促进了推荐系统的研究发展。其中,协同过滤(Collaborative Filtering,CF)推荐算法是推荐系统中应用最广泛、最成功的推荐技术之一[1]。虽然协同过滤推荐算法取得了一些成果,但是它同时也存在数据稀疏性、冷启动和扩展性等一系列问题[2]

现实生活中,人们更愿意相信好友推荐的物品,因此推荐系统如果结合用户的信任关系信息,则能够进一步提高推荐精度[3-4]。文献[5]指出基于信任关系的推荐比传统基于评分的推荐更符合用户的需求。近年来,许多学者对推荐系统中用户间的信任关系进行了研究。例如文献[6]使用一种数据挖掘算法填充评分矩阵并结合相似性信任因子改进协同过滤算法;文献[7]通过主题张量分解算法挖掘用户在不同物品选取时对不同朋友的信任程度;文献[8]利用用户间的信任值有策略地结合用户评分相似性建立用户间的偏好关系进行项目推荐;文献[9]根据信任属性建立信任模型,并通过信任模型填充评分矩阵降低数据稀疏性。然而在许多基于信任的研究中,仅仅从单一的信任角度来考虑用户的信任关系,用户间信任度和用户个人可信度的关系往往没有被考虑。这些为进一步提高系统的推荐性能提供了改进空间。

为了提高协同过滤算法的推荐质量,许多人基于该算法的用户相似性进行了研究。文献[10]利用用户共同评分和用户所有评分之间的关系对用户相似性进行改进;文献[11]基于用户间对不同项目类型的多个评分改进相似度,提出了一种基于用户间多相似度的协同过滤推荐算法;文献[12]根据用户偏好相似性计算用户间的结构相似性,并使用结构相似性对用户初始相似关系进行修正。然而传统协同过滤算法基于用户相似度进行目标项目预测时,对于所有的目标项目用户间的相似度都是相同的[13],但是对于不同的目标项目,用户个人的偏好程度会导致用户间的相似度存在差异,而许多基于用户相似性改进的算法却忽视了这种差异。

目前,冷启动问题是推荐系统研究的热点之一,文献[14]对此提出基于偏好的推荐服务选择算法,解决现有服务选择中推荐不准确和冷启动等问题;文献[15]基于多元相关分析,对传统尺度与平移不变(Scale and Translation Invariant,STI)的协同过滤推荐方法进行改进,提出一种基于项目相关度的STI推荐方法来应对推荐系统中的冷启动问题。上述方法在冷启动条件下虽然有良好的性能表现,但均未考虑到项目自身的属性信息。针对这些问题,本文提出一种基于信任和用户偏好的协同过滤(Trust and Item Preference Collaborative Filtering,TIPCF)算法,在协同过滤推荐算法中充分考虑用户间信任度和用户个人可信度的关系,结合改进的用户相似度算法增加最近邻查找的准确度,同时融合用户对项目属性的偏好,完成新项目的推荐。

1 相关工作和定义 1.1 传统协同过滤算法

协同过滤算法根据用户的行为记录找寻目标用户的相似邻居,再结合这些邻居的评分数据形成推荐。这些评分数据通常会被具体化为用户-项目评分矩阵Ru×i,其中行和列分别代表用户和项目。

1) 计算用户相似度。

基于用户-项目评分矩阵,余弦相似度、Pearson相关系数等算法都经常被用来计算用户相似性。由于在同等情况下Pearson相关系数拥有更加优秀的性能[16],本文采用Pearson相关系数进行用户相似性的计算,用户相似性sim(u,v)定义为:

${\rm{sim(u,v)}} = {{\sum\limits_{{\rm{i}} \in {\rm{Iuv}}} {{\rm{(ru,i}} - \mathop {{\rm{ru}}}\limits^{{\rm{\_\_}}} {\rm{)}}} {\rm{(rv,i}} - \mathop {{\rm{rv}}}\limits^{{\rm{\_\_}}} {\rm{)}}} \over {\sqrt {{{\sum\limits_{{\rm{i}} \in {\rm{Iuv}}} {{\rm{(ru,i}} - \mathop {{\rm{ru}}}\limits^{{\rm{\_\_}}} {\rm{)}}} }^{\rm{2}}}} \sqrt {{{\sum\limits_{{\rm{i}} \in {\rm{Iuv}}} {{\rm{(rv,i}} - \mathop {{\rm{rv}}}\limits^{{\rm{\_\_}}} {\rm{)}}} }^{\rm{2}}}} }}{\rm{ }}$ (1)

其中:Iuv表示用户uv共同评价过项目的集合;rurv表示用户uv相应的评分均值。

2) 预测评分。

根据式(1)计算出的用户相似度,选择最相似的k个用户建立目标用户的最近邻集合Uk,预测用户n对目标项目i的评分ru,i:

$ru,i = \mathop {ru}\limits^{\_\_} + {{\sum\limits_{v \in {U_k}} {sim(u,v)} (rv,i - \mathop {rv}\limits^{\_\_} )} \over {\sum\limits_{v \in {U_k}} {|sim(u,v)|} }}$ (2)
1.2 传统协同过滤算法的过程

图 1所示,在CF中,用m×n的矩阵表示用户对项目的评分情况,并用评分数据表示用户对项目的喜好程度。一般评分越高,用户越喜欢这个项目。图 1中每一行表示一个用户,每一列表示一个项目。CF分为两个过程:预测过程,是对用户没有评过分的项目可能的评分值进行预测;推荐过程,是根据预测的结果把评分最高的前N个项目推荐给用户。

图 1 协同过滤算法示意图
1.3 信任机制

信任在人们的日常生活中占据着举足轻重的地位,但它是一个相对模糊的概念,涉及到的方面很多,以至于至今都未能给出一个令人信服的定义[17]。虽然信任的定义难以确定,但目前信任有一些公认的特性,包括主观性、不对称性、传递性、动态性等[18],这些属性彼此之间是相互关联的,所以它们之间出现交叉或冲突等情况是正常现象。

本文对信任的定义如下:

定义1 信任是指接受推荐者对提供推荐者特定行为的主观可能性预测,它是一种单向、相对、局限在一定范围内的主观反映[19]

定义2 直接信任是指两个用户根据曾经直接交往的经验建立的信任关系。

定义3 间接信任是指两个用户通过第三方的推荐建立的信任关系。

定义4 信任度是根据用户所处的情境以及信任的属性,量化用户间信任程度后的信任值。

2 本文TIPCF算法

近年来,社会网络中的信任机制被越来越多人关注研究,究其原因是因为用户之间的信任程度是影响推荐质量的一个重要因素。本文将用户间的信任关系引入协同过滤算法中,并把其分为直接信任和间接信任。考虑到推荐数据极其稀疏,仅凭借用户间直接交流得到的直接信任度不能准确判定用户间的信任关系,因此采用第三方的推荐建议进行间接信任度的计算。传统推荐算法仅根据用户评分数据确定相似性,然而现实中这个前提数据的准确性很难被保证,例如存在一些商家为了让自己的产品被优先推荐而伪造评价。本文为了降低评分数据的不准确性所带来的影响,在度量用户之间的信任度时,引入用户个人的可信度,用户个人的可信度越高,那么他评分数据的可靠性相对来说也就越高。

2.1 用户之间的信任度

直接信任度来源于两个用户曾经交互的经验积累,在推荐系统中,如果两个用户共同评价过一个项目,就认为他们进行了一次交互。通常人们都比较倾向于和自己信任的人交互,因此用户之间交互的次数越多,信任度就越大。基于项目交互的用户信任公式IT(u,v)定义为:

$IT(u,v) = {{|Iu \cap Iv|} \over {|Iu|}}$ (3)

其中:IuIv表示两个用户uv共同评价过的项目集合;Iu表示用户u评价过的项目集合;|·|表示集合中的项目个数。

现实生活里,人们之间的信任程度是不断变化的,日常交往中成功与失败的经历都会对人们之间的信任程度造成影响。推荐系统中,用户间的信任度也会随着项目交互结果的变化而逐渐变化。本文根据用户评分的均值将用户评分分成两类,即积极评分和消极评分。如果评分分值不小于用户的平均评分就被认为是积极评分,相反则被认为是消极评分。当用户u和v对项目i的评分同为消极评分或积极评分时,交互是成功的;反之是失败的:

$M(u,v) = \left\{ \matrix{ sus,(ru,i - \mathop {ru}\limits^{\_\_} )(rv,i - \mathop {rv}\limits^{\_\_} ) \ge 0 \hfill \cr fal,{\rm{(}}ru,i - \mathop {ru}\limits^{\_\_} {\rm{)(}}rv,i - \mathop {rv}\limits^{\_\_} {\rm{)}} \le {\rm{0}} \hfill \cr} \right.$ (4)

其中:1和0分别代表交互成功和失败。交互成功和失败的次数分别用susfal表示,每交互成功一次sus+1,每交互失败一次fal+1。据此,综合项目交互对信任影响的信任公式ITP(u,v)如下:

$ITP(u,v) = IT(u,v) \times {{sus} \over {sus + fal}}$ (5)

其中:任何一个项目交互成功或失败,权重都为1。但是不同的项目交互成功或失败的程度是不一样的。如果用户v对于用户u特别感兴趣的项目评分非常消极,这种交互失败造成的负面影响相对较大。在此,使用户间的评分差度量用户间的兴趣差异对信任度产生的影响,改进后的信任公式DT(u,v)如下:

$DT(u,v) = IT(u,v) \times {{\sum\limits_{i \in Is} {sus \times {\rm{|}}ru,i - rv,i{\rm{|}}} } \over {\sum\limits_{i \in Is} {sus \times {\rm{|}}ru,i - rv,i{\rm{|}}} + \sum\limits_{j \in If} {fal \times {\rm{|}}ru,j - rv,j{\rm{|}}} }}$ (6)

其中:Is表示交互成功的项目集合;If表示交互失败的项目集合。式(6)满足信任的不对称性原则,即DT(u,v)≠DT(v,u)。

2.2 间接信任度

上述信任度主要依据用户的主观评判,但仅仅依靠用户主观认知会降低评判的准确度,而从第三方的角度度量用户之间的信任度会增加客观性,使信任度更加客观合理。因此本文通过用户共同拥有的信任用户进行间接信任度度量,度量公式如下:

$INT(u,v) = {{\sum\limits_{p \in Uuv} {DT(u,p)DT(p,v)} } \over {\sum\limits_{p \in Uuv} {DT(u,p)} }}$ (7)

其中:Uuv表示用户uv共同拥有的信任用户集合。

综合用户间的直接信任度DT(u,v)和用户间的间接信任度INT(u,v),用户uv间的最终的信任度DNT(u,v)为:

$DNT(u,v) = \lambda DT(u,v) + (1 - \lambda )INT(u,v)$ (8)

其中:λ是协调因子,取值范围为[0, 1]。本文对于λ的取值采用自适应值模型,这种模式可以随着实际条件的变化动态调整自己的值,加强了适应性。λ值的表达式如下:

$\lambda = {{D{T^2}} \over {D{T^2} + IN{T^2}}}$ (9)

λ=1时,用户间的间接信任度为0,此时应按照DT(u,v)计算用户间的信任度。

2.3 用户个人可信度

1) 用户活跃度。

一个用户越积极主动地评价项目,并随着评价次数的增加,经验的不断积累,评价的质量也会越好,相对于很少评分的用户活跃度相对较高,也更容易得到其他用户的信任。用户活跃度公式为L(u):

$L(u) = \left\{ \matrix{ {{|Q(u)|} \over {2 \times aver}}{\rm{ }}if{\rm{ }}|Q(u)| < 2 \times aver \hfill \cr 1{\rm{ }}if{\rm{ }}|Q(u)| \ge 2 \times aver \hfill \cr} \right.$ (10)

其中:|Q(u)|表示用户u已评价项目的数目;aver表示所有用户已评价项目的平均个数。使用均值的两倍而不是项目数目的总和作为分母,可避免出现用户评价项目过少,分式值趋近于0的情况。

2) 评价偏差。

如果用户随意对项目进行评分会对推荐系统产生不好的影响,并降低其他用户对他的信任度,因此用户评分的偏差必须被考虑在内。通常人们采用项目的评价均值衡量项目的真实质量,用户对项目的评价与它的评价均值偏差越小,那么用户的态度越公正,评价越值得被参考。评价偏差为S(u):

$S(u) = {{\sqrt {\sum\limits_{i \in Iu} {{{(ru,i - \mathop {ri}\limits^{\_\_} )}^2}} } } \over {N(Iu)}}$ (11)

其中:ri表示项目的评价均值;N(Iu)表示用户u评价过项目的总数。

在推荐系统中,用户活跃度越高、评分偏差越小,他的信任度越高,因此用户个人的可信度TE(u)为:

$TE(u) = L(u) \times S(u)$ (12)

基于上述思想,使用用户uv交互的信任度代表用户间的信任度不够准确,如果用户v的可信度不高,那么他评分数据的可靠性就值得怀疑,并会对用户间的交互造成一定的不良影响。因此用户间的信任度URT(u,v)如下:

$URT(u,v) = DNT(u,v) \times TE(v)$ (13)
2.4 用户偏好相似度

评分信息极度稀疏,传统的用户相似度算法误差较大,因此本文利用目标项目与其他项目的相似性改进用户相似度,式(14)使用修正的余弦(Adjusted Cosine)相似性进行项目相似性度量。

$Ms(i,j) = {{\sum\limits_{u \in {U_{ij}}} {(ru,i - \mathop {ri}\limits^{\_\_} )(ru,j - \mathop {rj}\limits^{\_\_} )} } \over {\sqrt {{{\sum\limits_{u \in Ui} {(ru,i - \mathop {ri}\limits^{\_\_} )} }^2}} \sqrt {{{\sum\limits_{u \in Uj} {(ru,j - \mathop {rj}\limits^{\_\_} )} }^2}} }}$ (14)

其中:Uij表示用户-项目矩阵中对项目ij都评过分的用户集合;rirj分别表示矩阵中项目i或j所有评分的均值。在许多基于用户相似性进行目标项目评分预测的文章中,均未考虑目标项目和其他项目的相似性对用户相似性的影响,对所有的目标项目预测评分时赋予用户和其邻居相同的权重。例如,式(2)中用户和其邻居的相似度对于所有目标项目都是sim(u,v),这种方式降低了推荐准确性。相同的两个用户对于不同的目标项目的偏好是有差异的,所以对于不同的目标项目,他们之间的相似度也是不一样的,Us(u,v)i定义为:

$Us{(u,v)^i} = {{\sum\limits_{j \in Iuv} {Ms{{(i,j)}^2} \times (ru,j - \mathop {ru}\limits^{\_\_} ) \times } (rv,j - \mathop {rv}\limits^{\_\_} )} \over {\sqrt {{{\sum\limits_{j \in Iu} {Ms{{(i,j)}^2} \times (ru,j - \mathop {ru}\limits^{\_\_} )} }^2}} \sqrt {{{\sum\limits_{j \in Iv} {Ms{{(i,j)}^2} \times (rv,j - \mathop {rv}\limits^{\_\_} )} }^2}} }}$ (15)

式(15)利用用户共同评过分的项目集合Iuv中的项目与目标项目的相似度计算用户间对于特定目标项目的相似度。用户u评过分的项目集合为Iu,用户v评过分的项目集合为Iv。两个用户对与目标项目越相似的项目偏好程度的差异越大,相似度越小,那么在预测目标项目的评分时,分配的权重也就越小。

2.5 项目属性偏好

对于未被任何用户评过分的新项目,这些项目无法根据评分信息推荐给对其有兴趣的用户,因此单纯地依赖用户-项目评分数据推荐项目可能会导致冷启动等问题;并且在电子商务系统中总是有新商品不断地加入,若新商品可以被推荐给合适的用户,不仅会提高用户体验,而且能为商家带来更大的利益[20],所以冷启动问题一直是近年来研究的热点之一。而基于用户对项目属性的偏好预测用户对新项目的评分,可以有效地减少冷启动所带来的问题,因此,综合考虑用户的评分数据、用户已评分的项目数目以及项目的属性信息,挖掘他们之间的关系,计算用户u对项目属性an的评分G(u,an):

$G(u,an) = \sum\limits_{j \in Iu} {{{bj,an \times ru,j} \over {I(u) \times Pj}}} $ (16)

其中:ru,ju对项目j的评分;I(u)为集合Iu中项目的总数;Pj代表项目j拥有的属性总数;Iu表示用户u已评分的项目集。如果项目j包含属性an,则bj,an=1;反之bj,an=0。

3 TIPCF算法过程

将上述建立的用户信任度、属性偏好、改进的用户相似度进行融合,形成新的算法TIPCF。TIPCF算法的具体描述如下:

步骤1 建立用户-项目评分矩阵Ru×i,将矩阵中所有用户、项目及目标用户标记为U、I、u

步骤2 根据用户信任模型建立信任矩阵RT×T

步骤3 根据信任矩阵RT×T,选择用户u信任度最高的前k个用户建立u的信任最近邻集UT

步骤4 在评分矩阵Ru×i基础上,利用式(15)计算用户u和其邻居的相似度。但仅仅根据用户的相似信息预测评分,可能会影响推荐的精确度,因此需要考虑用户间的信任度信息。若目标用户u与用户v之间相似度较高,且u觉得v值得信任,那么v的建议被采纳的概率就越大。因此选取综合相似度和信任度最高的k个用户,建立u的相似度和信任度最近邻集合Us,预测用户对目标项目的评分Pu,i:

$Pu,i = \mathop {ru}\limits^{\_\_} + {{\sum\limits_{v \in Us} {(\alpha Us{{(u,v)}^i} + (1 - \alpha )URT(u,v))(rv,i - \mathop {rv}\limits^{\_\_} )} } \over {\sum\limits_{V \in Us} {|\alpha Us{{(u,v)}^i} + (1 - \alpha )URT(u,v)|} }}$ (17)

其中α的取值采用自适应值模型,范围为[0, 1]。α的公式如下:

$\alpha = {{Us{{(u,v)}^i}^2} \over {Us{{(u,v)}^i}^2 + URT{{(u,v)}^2}}}$ (18)

步骤5 针对目标用户未评分的项目分为两种情况进行预测评分,对于已被邻居评价过的项目,可以采用式(17)预测评分。但如果未评分项目是新项目,并未有邻居进行评价,则利用目标用户的信任最近邻集合UT中的邻居用户对该项目各属性特征的偏好进行预测,预测公式如下:

$Fu,i = \mathop {ru}\limits^{\_\_} + {{\sum\limits_{v \in UT} {(URT(u,v) \times \sum\limits_{an \in Ii} {G(v,an))} } } \over {\sum\limits_{v \in UT} {|URT(u,v)|} }}$ (19)

步骤6 通过上述步骤得到最终的预测评分,把其中评分最高的前N 个项目作为top-N推荐集推荐给用户。

4 实验与分析 4.1 实验数据集

本文采用推荐研究中广泛使用的Movielens数据集,它是由Minnesota大学的Group Lens研究组公开提供。此数据集包含10万条评分记录,产生于943位用户对1682部电影的评价(评分数值的范围为1~5),分数越高代表用户越喜爱该电影,如果评分为0则代表用户对此电影未给出评分。该数据集的稀疏系数等级为$1 - {{100000} \over {943 \times 1682}} = 0.9370$。实验中将数据集中的用户-项目评分数据按照1:4的比例划分成两个部分:前者作为测试集合,测试模型的性能;后者作为训练集合,构造推荐模型。

4.2 评估标准

推荐系统实验的评估标准有很多,一般分为两大类:统计精度标准和决策支持精度标准。本实验采用当前被广泛使用的平均绝对误差(Mean Absolute Error,MAE)度量推荐算法的性能,它属于统计精度方法。 它的原理是通过对比用户对项目预测评分与用户对项目实际评分的偏差,进行算法预测准确性的度量。

$MAE = {{\sum\limits_{j = 1}^n {\left| {pj - rj} \right|} } \over n}$ (20)

其中:Pj为用户对项目的预测评分;rj表示用户对项目的实际评分;n代表预测评分的次数。从式(20)中可看出MAE越小,则算法预测越准确。

4.3 实验结果与分析

1) 与传统相似度方法比较。

首先,将TIPCF算法与传统推荐算法(包括余弦(Cosine)相似性、Pearson相关系数和修正的余弦(Adjusted Cosine)相似性方法)进行比较,结果如图 2所示。

图 2 不同算法的MAE值比较

图 2可知,本文TIPCF算法的平均绝对误差MAE在不同的邻居数目选择下都明显低于传统方法。随着邻居用户数目的增大、数据稀疏度降低,如果算法的MAE随之降低,则表明该算法推荐准确度强。TIPCF算法在邻居数取到40时,其性能基本稳定。

然后,在改进的协同过滤算法基础上,将TIPCF算法与传统基于用户协同过滤(User Based Collaborative Filtering,UBCF)推荐算法进行性能比较,实验结果如图 3所示。

图 3 TIPCF和UBCF的MAE值比较

图 2~3可知,本文TIPCF算法在预测评分时,综合考虑了用户间信任度和改进的用户相似度,这样可以有效突出用户间关系对于兴趣推荐的重要性,提高用户最近邻的识别精确度,使得推荐更加合理,提高了系统的推荐性能和可靠性。

2) 算法在冷启动条件下的性能。

为了验证算法TIPCF处理冷启动的能力,实验抽取200名用户,并随机删除数据集中的200部电影在训练集中的评分信息,模拟冷启动情景。

TIPCF方法引入的属性偏好度,能够充分利用项目属性信息计算用户属性偏好,将推荐系统中的新项目推荐给对其感兴趣的用户。从图 4可看出,TIPCF算法对于新项目的处理能力高于传统算法,并且随着邻居用户的增加,TIPCF的处理冷启动能力趋于平缓,有效地缓解了系统的冷启动问题。

图 4 冷启动条件下算法的性能对比
5 结语

为了更好地解决评分数据极速稀疏和系统冷启动的问题,本文结合用户信任度、用户偏好相似度和项目属性,改进协同过滤算法。通过对用户间信任关系和相似性关系的研究,表明用户间关系的准确定位对兴趣推荐十分重要。其次通过计算用户对项目属性不同的偏好度来预测用户对新项目的感兴趣程度,减少了传统协同过滤算法仅仅凭借评分信息进行项目推荐造成的负面影响,对系统冷启动的问题也有了明显的缓解。最后通过科学的实验验证,相对于只依赖评分数据进行推荐的传统推荐算法,

本文改进后的算法明显地提高了推荐的准确度,减少了冷启动对推荐质量造成的不良影响,从而更好地提高整个推荐系统的推荐精度。在未来的研究中将进一步研究时间因素对项目偏好和用户信任的影响。

参考文献
[1] 王立才, 孟祥武, 张玉洁. 上下文感知推荐系统[J]. 软件学报, 2012, 23 (1) : 1-20. ( WANG L C, MENG X W, ZHANG Y J. Context-aware recommender systems: a survey of the state-of-the-art and possible extensions[J]. Journal of Software, 2012, 23 (1) : 1-20. doi: 10.3724/SP.J.1001.2012.04100 ) (0)
[2] 黄创光, 印鉴, 汪静, 等. 不确定近邻的协同过滤推荐算法[J]. 计算机学报, 2010, 33 (8) : 1369-1377. ( HUANG C G, YIN J, WANG J, et al. Uncertain neighbors' collaborative filtering recommendation algorithm[J]. Chinese Journal of Computers, 2010, 33 (8) : 1369-1377. doi: 10.3724/SP.J.1016.2010.01369 ) (0)
[3] OZSOY M G, POLAT F. Trust based recommendation systems[C]//WWW 2008: Proceedings of the 17th International Conference on World Wide Web. New York: ACM, 2013:1267-1274. http://cn.bing.com/academic/profile?id=1975132007&encoded=0&v=paper_preview&mkt=zh-cn (0)
[4] SHAMBOUR Q, LU JIE. A trust-semantic fusion-based recommendation approach for e-business applications[J]. Decision Support Systems, 2012, 54 (1) : 768-780. doi: 10.1016/j.dss.2012.09.005 (0)
[5] LI Y M, WU C T, LAI C Y. A social recommender mechanism for e-commerce combining similarity, trust, and relationship[J]. Decision Support Systems, 2013, 55 (3) : 740-752. doi: 10.1016/j.dss.2013.02.009 (0)
[6] 郝立燕, 王靖. 基于填充和相似性信任因子的协同过滤推荐算法[J]. 计算机应用, 2013, 33 (3) : 834-837. ( HAO L Y, WANG J. Collaborative filtering recommendation algorithm based on filling and similarity confidence factor[J]. Journal of Computer Applications, 2013, 33 (3) : 834-837. doi: 10.3724/SP.J.1087.2013.00834 ) (0)
[7] 邹本友, 李翠平, 谭力文, 等. 基于用户信任和张量分解的社会网络推荐[J]. 软件学报, 2014, 25 (12) : 2852-2864. ( ZOU B Y, LI C P, TAN L W, et al. Social recommendations based on user trust and tensor factorization[J]. Journal of Software, 2014, 25 (12) : 2852-2864. ) (0)
[8] 秦继伟, 郑庆华, 郑德立, 等. 评分和信任的协同推荐算法[J]. 西安交通大学学报, 2013, 47 (4) : 100-104. ( QIN J W, ZHENG Q H, ZHENG D L, et al. A collaborative recommendation algorithm based on rating and trust[J]. Journal of Xi'an Jiaotong University, 2013, 47 (4) : 100-104. ) (0)
[9] 杨兴耀, 于炯, 吐尔根·依布拉音, 等. 基于信任模型填充的协同过滤推荐模型[J]. 计算机工程, 2015, 41 (5) : 6-13. ( YANG X Y, YU J, IBRAHIM T, et al. Collaborative filtering recommendation model based on trust model filling[J]. Computer Engineering, 2015, 41 (5) : 6-13. ) (0)
[10] 文俊浩, 舒珊. 一种改进相似性度量的协同过滤推荐算法[J]. 计算机科学, 2014, 41 (5) : 68-71. ( WEN J H, SHU S. Improved collaborative filtering recommendation algorithm of similarity measure[J]. Computer Science, 2014, 41 (5) : 68-71. ) (0)
[11] 范波, 程久军. 用户间多相似度协同过滤推荐算法[J]. 计算机科学, 2012, 39 (1) : 23-26. ( FAN B, CHENG J J. Collaborative filtering recommendation algorithm based on user' multi-similarity[J]. Computer Science, 2012, 39 (1) : 23-26. ) (0)
[12] 冷亚军, 陆青, 梁昌勇. 基于结构相似性的协同过滤推荐算法[J]. 小型微型计算机系统, 2015, 36 (10) : 2266-2269. ( LENG Y J, LU Q, LIANG C Y. Collaborative filtering recommendation algorithm based on structure similarity[J]. Journal of Chinese Computer Systems, 2015, 36 (10) : 2266-2269. ) (0)
[13] CHOI K, SUH Y. A new similarity function for selecting neighbors for each target item in collaborative filtering[J]. Knowledge-Based Systems, 2013, 37 (1) : 146-153. (0)
[14] 朱锐, 王怀民, 冯大为. 基于偏好推荐的可信服务选择[J]. 软件学报, 2011, 22 (5) : 852-864. ( ZHU R, WANG H M, FENG D W. Trustworthy services selection based on preference recommendation[J]. Journal of Software, 2011, 22 (5) : 852-864. doi: 10.3724/SP.J.1001.2011.03804 ) (0)
[15] 王磊, 赵庆建, 罗兴峰. 基于项目相关度的STI新群体冷启动推荐方法[J]. 小型微型计算机系统, 2015, 36 (3) : 450-453. ( WANG L, ZHAO Q J, LUO X F. Degree of item correlation based STI for new community cold start recommendation[J]. Journal of Chinese Computer Systems, 2015, 36 (3) : 450-453. ) (0)
[16] BOBADILLA J, ORTEGA F, HERNANDO A. A collaborative filtering similarity measure based on singularities[J]. Information Processing and Management, 2011, 48 (2) : 204-217. (0)
[17] 夏小伍, 王卫平. 基于信任模型的协同过滤推荐算法[J]. 计算机工程, 2011, 37 (21) : 26-28. ( XIA X W, WANG W P. Collaborative filtering recommendation algorithm based on trust model[J]. Computer Engineering, 2011, 37 (21) : 26-28. ) (0)
[18] 王茜, 王锦华. 结合信任机制和用户偏好的协同过滤推荐算法[J]. 计算机工程与应用, 2015, 51 (10) : 261-270. ( WANG Q, WANG J H. Collaborative filtering algorithm combining trust mechanism with user preference[J]. Computer Engineering and Applications, 2015, 51 (10) : 261-270. ) (0)
[19] 张珺, 刘靖, 叶新铭, 等. 基于CPN 的可信路由器发现协议建模与仿真分析[J]. 系统仿真学报, 2012, 24 (1) : 1-7. ( ZHAGN J, LIU J, YE X M, et al. Modeling and simulation of trusted router discovery protocol using colored Petri nets[J]. Journal of System Simulation, 2012, 24 (1) : 1-7. ) (0)
[20] 于洪, 李俊华. 一种解决新项目冷启动问题的推荐算法[J]. 软件学报, 2015, 26 (6) : 1396-1406. ( YU H, LI J H. Algorithm to solve the cold-problem in new item recommendation[J]. Journal of Software, 2015, 26 (6) : 1396-1406. ) (0)