APP下载

融入用户隐式信任的协同过滤推荐算法

2021-08-24郎亚坤王国中

小型微型计算机系统 2021年8期
关键词:矩阵公式信任

郎亚坤,王国中

(上海工程技术大学 电子电气工程学院,上海 201620)

(广播电视人工智能应用国家广播电视总局重点实验室,上海 201620)

1 概 述

互联网的快速发展,我们进入了信息爆炸的时代,身边充斥着大量以互联网为媒介的服务,如微博、微信、Facebook等为代表的社交媒体,用户产生数据量呈几何倍数增长,商品的出现呈现“长尾效应[1]”,怎样找到合适的服务及有效信息成为了摆在我们面前的难题.推荐系统作为一种解决互联网“信息过载”的方法可以直接将用户和物品联系起来,在众多个性化推荐算法中,协同过滤算法以其简洁和高效性在学术和工业中得到了广泛的应用.

协同过滤算法可以细分为基于记忆的协同过滤算法和基于模型的协同过滤算法.基于记忆的协同过滤可以分为基于用户的协同过滤和基于项目的协同过滤.基于用户的协同过滤是根据用户对所有产品的偏好,发现与当前用户偏好相似的用户群组,选择出与该用户相似度最近的K个邻居做出推荐.基于项目的协同过滤是计算物品之间的相似度,将类似的物品推荐给用户.基于模型的协同过滤算法是以样本的喜好信息训练模型,一般可以分为聚类模型、分类模型和矩阵分解模型[2-7],矩阵分解模型预先设定好目标函数,采用随机梯度下降法来优化预先设定的目标函数从而得到最优解,因为其推荐精度高,具备坚实的理论基础,所以能够较好地应用于实践中.基于协同过滤推荐算法原理简单,只需要用户的行为信息,不依赖用户和物品的其它信息,能够有效的为用户推荐出多样性、新颖性的物品.但面临着冷启动、数据稀疏性、可扩展性和用户兴趣漂移等问题.

社交网络的发展,使得用户之间的信任关系被用于推荐系统中,基于信任的推荐系统被广泛的进行研究,Ma[8]等人提出了一种社会正则化方法(SoRec)用于限制用户的社会化关系,其核心是对信任矩阵和评分矩阵分解,共享用户特征矩阵.Lyu等人[9]提出了一种社会信任集成方法(RSTE),将基本矩阵分解模型和基于信任的矩阵分解模型线性的组合在一起.Zhou等人[10]进一步提出活跃用户的特定向量接近其信任用户的平均值,将其正则化后形成新的矩阵分解模型(SoReg).Jamail[11]在SoRec的基础上构建了一个新的模型(Social MF),重新制定了可信用户对活跃用户的特定向量的贡献.Yang等人[12]提出了一种混合模型(TrustMF),使得用户对项目的评分受到信任该用户的用户和被该用户信任用户的影响.Tang等人[13]认为社交信任应该有多个维度,每个维度是交叉存在的.Wang等人[14]强调社交信任可以分模块进行处理.Guo等人[15]在SVD++算法的基础上加入用户的显式信任信息,提出了TrustSVD算法,这也是目前使用较为广泛的信任分解模型.Davoudi等人[16]提出的社会信任模型包含了用户在社会关系中所处的地位,用户间的信任相似性,并使用矩阵分解来对项目进行评分预测.国内的学者在TrustSVD算法的基础上对显式信任关系进行研究,如李全[17]将用户的信任关系划分为更详细的局部信任和全局信任,王茜[18]则将用户的显式信任与用户的行为偏好联系起来.Wang[19]等人利用用户评分过程中隐式信任关系,在概率矩阵分解算法(PMF)的基础上提出一种基于信任机制的推荐算法TM-PMF.田尧[23]等人则在TrustSVD算法的基础上定义了用户评分过程中的隐式信任关系,提出了一种基于双信任机制的TrustSVD算法模型.

以上这些算法都证明了用户间的信任可以提高推荐的准确性,但是现有的信任信息非常稀疏,缺乏对用户间的隐式信任关系的研究,计算用户间的相似度时采用Pearson相关系数方法存在很大误差,缺乏对相似度公式的改进,忽略了用户本身的属性对信任预测的影响.

针对以上问题,笔者提出的FITrustSVD算法优势在于:

1)在TrustSVD算法基础上,综合了用户的评分,融入了用户的相似度影响,相似度的隐式反馈能够校正显式信任带来的误差,限制信任用户的范围,因为并不是所有的信任用户都可以带来有效的反馈.

2)改进皮尔逊系数相似度计算公式,因为皮尔逊相关系数仅考虑了用户评分的偏差,忽略了用户共同评分的项目数.

3)加入用户的信任偏置,因为有的用户在社交中更容易信任别人,而有些用户相对独立,不容易相信别人.

通过实验表明,FITrustSVD算法在均方根误差(RMSE)和平均绝对误差(MAE)上的推荐精度优于其它社会化推荐算法.

2 矩阵分解模型

(1)

(2)

公式中的μ表示全局均值,bu表示用户u的偏置,bi表示物品的偏置.在现实中,用户的评分数据非常稀疏,所以SVD++算法是在SVD算法的基础上融入用户对物品的隐式行为,如公式(3)所示:

(3)

公式中的Iu表示用户对物品的评分集合,yi表示用户u对未知物品评分的隐含影响,算法的最终目标是要使得真实值接近于预测值,所以定义损失函数为:

(4)

对特征矩阵中的P和Q中的元素不断的迭代学习,使得损失函数中相邻两次迭代的损失函数差值最小.为了防止过拟合,在原有的损失函数基础上加上正则化因子.

(5)

3 TrustSVD算法

TrustSVD算法是在SVD++算法的基础上加入了用户间显式信任信息,定义信任矩阵T=[tu,v]MM,描述了用户u对用户v的信任程度,基本思想是某特定用户的信任用户将会影响其对物品的评分,这种影响存在于用户间的信任矩阵中,因此,将用户的信任矩阵T分解为信任者矩阵PMD和被信任者矩阵WMD,使得T≈PWT,因此,用户u对用户v的信任关系可以表示为:

(6)

为了使得真实信任矩阵和预测信任差值最小,定义损失函数使得矩阵P和W不断的迭代学习:

(7)

公式中Tu为用户u信任用户的集合.将用户间信任的影响引入评分预测公式中,得到公式(8).

(8)

(9)

在公式(9)中,用户的特征向量同时受到评分矩阵和信任矩阵的影响,因此,重新构造了新的损失函数统一了评分矩阵和信任矩阵.

(10)

为了防止过拟合,需要在损失函数的基础上加入正则化项,但是GUO认为公式中的惩罚因子应该是不同的,他认为评分较多的用户和项目应该使用较小的惩罚,而评分较少的用户和项目应该使用较大的惩罚,重新定义损失函数为:

(11)

4 融入用户隐式信任的协同过滤推荐算法FITrustSVD

TrustSVD算法是直接利用用户给出的显式信任,公开的信任数据集下的信任值为二值信任,即0和1,0表示不信任,1表示信任,这样的信任关系过于粗糙并且数据稀疏,不能很好的反映用户间的信任关系.

4.1 添加用户的隐式信任度

隐式信任通常是由用户的共同评分或存在的交互关系推断得出的,用户之间的相似度[20]可以作为一种表示隐式信任的方式,本文将对Pearson相关系数进行改进,并利用改进后的Pearson相关系数进行隐式信任推断.

Pearson相关系数是用在协同过滤算法中的一个经典的相似度计算方法,主要是衡量两个数据集之间的线性关系,Pearson相关系数公式化定义为:

(12)

(13)

式(13)中Iu是用户u的评分项目,Iv是用户v的评分项目.

为了充分利用用户的每一个评分,使得在计算用户间的相似度时能同时考虑到用户间的评分偏差和共同评分数,本文借助于武文琪[21]提出的相似度改进模型作为新的相似度计算公式,公式被定义为:

(14)

式中的BC(u,v)是利用巴氏系数计算的相似度,loc(ru,i,rv,i)是局部相似度的计算.本文利用用户间的相似度对用户的隐式信任推断,PapageLis[24]认为当用户间的相似度大于某一给定的阈值且共同评分数大于指定的数目时,则将该相似度为用户间的信任度,否则,用户间信任为0,隐式信任定义如公式(15)所示:

(15)

公式中的Iu,v为用户u和用户v共同的评分集合,θS和θI分别为用户的相似度和共同评分数目的阈值.Sotos等人[22]在实验中证明了θS=0.707,θI=2时,皮尔逊系数才有效.本文通过实验证明,在改进的Pearson相关系数使用这些阈值能够达到很好的效果.

在隐式信任下,将t(u,v)分解为信任者特征矩阵P和被信任者特征矩阵n,如公式(16)所示:

(16)

4.2 改进用户的隐式反馈

在公式(8)中,用户的预测评分受到他所有信任用户的影响,但是并不是所有的信任用户都可以为其带来有效的影响,两用户相互信任不能表示两用户有相同的兴趣,因此,本文限制了信任用户的范围,当且仅当信任用户间存在共同评分的项目时,信任用户才能影响用户的预测评分.改进后的预测评分如式(17)所示:

(17)

Ru是用户间存在信任且共同评分的集合.

4.3 改进用户的信任预测

(18)

田尧[23]使用了一个权重系数α证明了当显式信任为0.8,隐式信任为0.2时,推荐的准确性能够达到最优,但是忽略用户的固有属性及隐式反馈对评分预测的影响.在现有田尧结论的基础上,结合用户的隐式信任、改进的用户隐式反馈和改进的信任预测,用户的评分预测公式被重新定义为:

(19)

为了防止损失函数的过拟合,本文采用与TrustSVD算法相同的惩罚策略,即对用户和物品做惩罚时,对活跃的用户和流行的物品惩罚较小,评分较少和不流行的物品惩罚较大,同样适应于冷启动的用户和物品.定义损失函数为:

(20)

(21)

(22)

(23)

(24)

(25)

(26)

(27)

(28)

5 实验结果和分析

5.1 实验数据及评价标准

文章使用的是FilmTrust数据集,它是从FilmTrust网站抓取的小型数据集,它包含用户的评分数据和信任数据,评分数据集中的评分的范围为[0.5,4],信任数据集中的1表示信任,若用户没有与其它用户有社交,则该用户间不存在信任关系.数据集的具体信息如表1所示.

表1 FilmTrust数据集信息

使用平均绝对误差(MAE)和均方根误差(RMSE)验证算法的准确性.

(29)

(30)

式(28)和式(29)中的N为测试集中的评分数量,MAE和RMSE的结果越小,表示推荐结果就越好.

5.2 实验对比与分析

采用了5折交叉验证用于训练和测试,选择4折数据为训练集,1折数据为测试集,进行5次交叉验证确保所有的数据均可被训练和测试,以5次测试结果的平均值作为最终的结果.对比RSTE、SocialReg、SocialRec、TrustSVD、SVD++、TM-PMF算法,从所有用户和冷启动用户角度验证算法的准确性.

表2是选取的对比算法,RSTE、SocialReg和SocialRec都同时利用了用户的评分信息和用户间的显式信任信息,没有挖掘用户间的隐式信任.SVD++算法仅仅利用用户的评分信息,没有使用用户间的信任信息.TrustSVD算法是在SVD++算法基础上加入了用户间的显式信任信息.TM-PMF算法是在PMF算法的基础上加入了用户的显式信任信息,结合用户的评分信息挖掘用户间的潜在信任信息.为了解释FITrustSVD算法的效果,我们进行3组实验对比:

表2 对比算法介绍

1)SVD++、TrustSVD算法的比较.

2)TrustSVD算法和RSTE、SocialReg、SocialRec算法的比较.

3)FITrustSVD算法和TM-PMF、TrustSVD算法的比较.

表3为实验结果对照表,通过对表中数据的分析,可以得到以下结论:

1)相比于仅仅使用评分的SVD++算法,融入了用户间信任的TrustSVD算法在MAE和RMSE指标上有显著的降低,表明用户间的显式信任可以显著的提高推荐精度.

2)在仅加入用户显式信任的算法中,TrustSVD算法推荐精度高于SocialReg、RSTE和SocialRec等社会化推荐算法,这是因为TrustSVD算法同时考虑了用户间的显式信任和用户的历史行为对物品评分的影响,所以该模型对缺失值的补全对整个矩阵的扰动较小,具有较高的推荐精度.

3)TM-PMF算法在PMF算法中挖掘用户间的隐式信任,从表中可以看出,TM-PMF算法的推荐精度高于TrustSVD算法.这表明加入用户间的隐式信任可以提高推荐精度.而文章提出的FITrustSVD算法是在TrustSVD算法的基础进行改进,同时考虑了用户间的隐式信任、用户间的信任偏置和信任范围,修改了相似度公式的计算.表中数据表明了FITrustSVD算法的推荐精度明显高于TM-PMF算法.

图1和图2是社会化算法在全部用户和冷启动用户中的实验对比,从图中可以看出,相比于其它社会化算法,FITrustSVD算法在所有用户和冷启动用户的场景中推荐效果都是最好的,特别是在冷启动用户中推荐效果更明显,冷启动用户提高的比例大于全部用户提高的比例,即使在数据稀疏的情况下,也会有比较好的实验结果,这表明融入隐式信任的FITrustSVD算法可以适用于复杂的推荐场景.

图1 所有用户的RMSE

图2 冷启动用户的RMSE

图3为全部用户的社会化算法对比折线图,在同样的数据集下,取隐含特征维度为10,通过对比可以看出,RSTE、SocialReg、SocialRec和RSTE相差不大,但是加入隐式信任的TM-PMF算法和FITrustSVD算法进一步提高了推荐精度,这证明了在推荐算法中引入用户的隐式信任信息的有效性.FITrustSVD在加入隐式信任的同时,改进了相似度公式,使得用户的显式信任和隐式信任互为补充,在信任预测中加入用户的偏置信息可以适应更多的推荐场景,在推荐效果上明显高于TM-PMF算法,特别是在用户冷启动条件下,用户既没有较多的评分数据,很少有值得信任的用户,本身的数据非常稀疏,结合用户的隐式信任和显式信任,可以提高预测的准确性.

图3 交叉验证的社会化算法对比

6 结束语

文章在TrustSVD算法模型的基础上加入了用户的隐式信任,提出了融入用户隐式信任的协同过滤推荐算法FITrustSVD,使得隐式信任和显式信任互为补充,实验的结果表明,算法FITrustSVD优于其它社会化推荐算法,但是该算法存在一个明显的弊端,若用户没有任何物品评分数据和用户间的信任数据,则无法为该用户产生推荐.本文改进了用户的相似度公式并添加了用户的偏置信息,利用权重与显式信任进行线性融合,缺乏对拟合形式的研究.笔者未来的工作是挖掘出用户更多的隐式特征,并将这些隐式特征与用户的显式信任特征相结合,更好的在冷启动用户条件下做推荐,在特征融合公式上做出改进.

猜你喜欢

矩阵公式信任
组合数与组合数公式
排列数与排列数公式
多项式理论在矩阵求逆中的应用
嘤嘤嘤,人与人的信任在哪里……
矩阵
矩阵
矩阵
信任
“两两三三”解决天体问题
三角函数式的求值