融合标签和属性信息的混合推荐算法

2022-12-16 09:44杨莉云颜远海
吉林大学学报(信息科学版) 2022年4期
关键词:相似性标签矩阵

杨莉云,颜远海

(广州华商学院 数据科学学院,广州 511300)

0 引 言

随着互联网的普及和网络信息资源的不断增多,用户在使用互联网时往往面临信息过载的问题:信息内容太多,用户真正需要的信息被大量垃圾信息淹没。个性化推荐技术作为应对信息过载的重要手段,在互联网行业有普遍应用。常用的个性化推荐技术包括协同过滤推荐、基于内容的推荐、混合推荐、基于关联规则的推荐等[1]。其中协同过滤推荐算法是推荐系统中应用最广泛、最成功的推荐技术之一[2]。

传统的协同过滤算法以用户对项目的评分向量作为用户描述文件,由于评分数据的稀疏性,用户相似度计算往往存在较大的偏差,影响了推荐的质量。为此人们为解决数据稀疏性问题进行了大量工作,提出的方法大致可分为3类:第1类以Slop one算法为代表,利用项目之间的评分偏差和用户已评分项,预测未评分项的评分[3]。这种算法在计算目标项目的评分时参考了所有用户对所有项目的评分,效率较低。Saeed等[4]将用户未评分项也用于目标项评分预测,解决Slop one算法数据稀疏性问题。Shaw等[5]在计算项目间评分偏差时,加入用户相似度系数作为权重。王志远等[6]在计算项目评分时只考虑与目标用户相似的用户以及与目标项目相似的项目的评分偏差。向小东等[7]将Slop one算法与用户特征属性相结合,先用Slop one算法预测未评分项评分,填入评分矩阵,计算用户间的相似度,同时考虑用户自身特征属性的相似度,取两者的加权平均值作为最终相似度。第2类是基于降维的方法。其主要原理是根据用户评分矩阵推断出用户和物品的隐语义向量,根据隐语义向量进行推荐。Sarwar等[8]利用奇异值分解技术解决用户评分矩阵的数据稀疏性问题,可有效地解决同义词问题,提高推荐系统的伸缩能力。董立岩等[9]采用交替最小二乘矩阵分解算法对原始评分矩阵进行分解,再利用k-means++算法对用户进行聚类。Ji等[10]先根据用户的行为筛选出用户可能感兴趣的项目,再利用基于矩阵分解的协同过滤算法获取最终推荐结果。第3类是加入标签、属性等内容特征的混合推荐方法。孙传明等[11]引入项目标签信息,计算项目间的标签相似度,改进了基于项目的协同过滤算法。魏玲等[12]将用户个人信息、交易信息、偏好信息和行为信息作为标签,对用户画像,计算用户间的相似度。张炎亮等[13]从用户自然属性、内容偏好、评分评论3个维度对用户画像,作为用户聚类的基础。董立岩等[14]将用户评分矩阵和项目属性矩阵转化为用户-项目属性偏好矩阵,再结合项目权重计算用户间的相似度。吴佳婧等[15]在计算项目相似性时将项目属性差异作为权重,利用用户已评分项预测未评分项评分。以上文献各自从某些方面改进了协同过滤算法,但在描述用户兴趣方面仍存在不直观、不全面和不能动态反映用户兴趣变化等问题。

笔者针对协同过滤算法的问题,将项目的属性信息和用户对项目的标签信息引入推荐系统,将用户对项目的评分转化为用户对项目属性值和标签的评分,更直观地描述了用户的偏好信息。由于项目属性值和主要标签的数量相对项目数少得多,此算法有效地解决了协同过滤算法的数据稀疏性问题。同时,考虑用户兴趣随时间变化的特性,在构建用户描述文件时加入时间权重,提高了用户描述文件的可信度及最终的推荐效果。

1 用户相似性计算

用户相似度计算是协同过滤算法的关键,决定推荐的质量。相似性度量方法分为数值相似性、结构相似性、综合相似性[16]。

数值相似性常用的包括余弦相似性(Cosine)、修正的余弦相似性(Acosine:Adjusted Cosine)和相关相似性也称皮尔逊相似性(Pearson:Pearson Correlation Coefficient)[17]。余弦相似性不考虑不同用户评分标准的差异。修正的余弦相似性考虑了这一点,将每项都减去该用户的评分均值,用相对评分计算用户间的相似度。相关相似性在修正的余弦相似性的基础上,只考虑两用户共同评分的项目。

余弦相似性

(1)

其中I表示项目全集,Rui、Rvi分别表示用户u和用户v对项目i的评分。

修正的余弦相似性

(2)

相关相似性

(3)

其中Iuv表示用户u和用户v共同评分项目。

结构相似性以Jaccard相似性为代表,给定两个集合A,B,Jaccard系数定义为A与B交集的大小与并集大小的比值。Jaccard相似性在度量用户间的相似性时,可使用两用户评价过的项目本身计算,也可使用两用户评价过的项目的属性值或标签计算。Jaccard相似性反映用户对不同属性、标签的偏好,只用户选择的次数,与评分无关。计算公式如下

(4)

其中Iu、Iv分别表示用户u、用户v评价过的项目、属性值或标签。

综合相似性在数值相似性和结构相似性的基础上对相似性计算方法进行改进。文献[18]将相关相似性与Jaccard相似性的乘积作为用户间相似性度量标准。

2 传统的基于用户的协同过滤算法

传统的基于用户的协同过滤算法分为获取用户描述文件、找最近邻居、评分预测、推荐产生4个步骤。

1) 获取用户描述文件。将用户对项目的评分作为用户描述文件,每个用户i用向量Ui(ri1,ri2,…,rin)表示,rj表示用户i对项目j的评分,n表示项目总数。

2) 找最近邻居。计算用户间的相似性,对其按从高到低的顺序排序,选取相似性最高的前k个用户作为目标用户的邻居。用户相似性计算方法有多种(见式(1)~式(4)),可选择其中的某一个公式或综合应用多个公式计算用户间的相似性。

3) 评分预测。根据目标用户的平均评分和最近邻居的评分预测目标用户未评分项的评分如下

(5)

4) 推荐产生。根据目标用户对所有未评分项的评分预测,选取预测评分最高的前N个项目作为推荐项,推荐给目标用户。

3 融合标签和属性信息的混合推荐算法

3.1 算法基本思想

用户描述文件是计算用户相似度的依据,是协同过滤算法的关键。融合标签和属性信息的混合推荐算法从两个方面描述用户兴趣:其一,根据项目的属性信息,计算用户对每个属性值的评分,将用户对项目的偏好转化成用户对项目属性值的偏好;其二,根据用户对项目贴的标签,汇总项目的标签信息,选择出现频率较高的标签作为项目的主要标签,再根据用户评分较高的影片的标签值,计算用户对每个标签的偏好。对项目繁多的推荐系统,由于项目属性值和主要标签数量相对于项目数少很多,此算法既可以直观反映用户兴趣,又解决了用户评分数据稀疏性的问题。同时,考虑用户兴趣是变化的,在计算用户对属性或标签偏好时加入时间权重,时间越靠后,权重越高,使算法可动态反映用户兴趣随时间的变化。算法流程如图1所示。

图1 融合标签和属性信息的混合推荐算法流程图Fig.1 Flow chart of hybrid recommendation algorithm based on tags and attributes

3.2 算法描述

与传统的基于用户的协同过滤算法类似,融合标签和属性信息的混合推荐算法也分为获取用户描述文件、找目标用户邻居、评分预测和推荐产生4个步骤。

1) 获取用户描述文件。

输入:用户-项目标签文件、用户-项目评分文件、项目属性文件。

输出:用户对标签评分矩阵、用户对属性值评分矩阵。

① 读入用户-项目标签文件,获取用户-项目标签矩阵L(m,n),其中m表示用户数,n表示项目数。

② 对每个项目j,计算每个标签出现的次数,按出现频次从高到低的顺序对标签排序,取出现频次大于1的前5个标签作为该项目的标签集Ti。

③ 读入用户-项目评分文件,获取用户-项目评分矩阵R(m,n)。

④ 对每个用户u,找出其评分大于等于4的所有项目集Iu,作为用户i偏好的项目集。

⑤ 计算用户u对每个标签t的偏好值fu,t,构建用户对标签偏好矩阵。

(6)

其中Dui表示用户u评价项目i的时间与用户u最早评价某项目的时间间隔,Lu表示用户u使用该系统的时间跨度。α∈(0,1)表示权重指数,α值越大,时间因素对用户偏好的影响越大。

⑥ 读入项目属性文件,获取每个项目的属性集Ai。

⑦ 根据用户-项目评分文件,对每个用户u,找出其评价过的所有项目集Iu,再由每个项目的属性集Ai,计算用户u对每个属性值a的评分值fu,a,构建用户对属性值评分矩阵。

(7)

其中Rui表示用户u对项目i的评分,|Iua|表示用户u评价过的、具有属性值a的项目数。

此步骤计算量大,耗时较长,可周期性、离线进行,得到的用户-标签评分矩阵、用户-属性值评分矩阵定期更新。

2) 找最近邻居。根据步骤1)得到的用户对标签偏好矩阵、用户对属性值评分矩阵,利用余弦相似性(见式(1))分别计算用户之间基于标签的相似性Ssim(u,v)tag和基于属性值的相似性Ssim(u,v)attribute。用户间最终相似性由这两个相似性加权得到,如下

Ssim(u,v)=Ssim(u,v)tag+(Ssim(u,v)attribute)β

(8)

根据基于标签的相似性和基于属性值的相似性的计算结果,若两者方差接近,可取β=1;若基于标签的相似性方差明显大于基于属性值的相似性,可取β>1,否则,取β<1。对每个用户,将其他用户按与其相似性从高到低排序,选择前k个用户作为其最近邻居。

3) 评分预测。此步骤和传统基于用户的协同过滤算法评分预测方法相同,如式(5)所示。

4) 推荐产生。根据评分预测,选取预测评分最高的前N个项目推荐给目标用户。

4 实验与结果分析

4.1 数据集

笔者选用个性化推荐领域广泛使用的movielens-25m数据集进行验证。MovieLens由明尼苏达大学GroupLens研究小组提供,包含用户对电影的评分信息、电影信息和标签信息等,包含MovieLen-25m、MovieLen-10m、MovieLens-100k、MovieLens-latest-small等多个版本。MovieLen-25m数据集发布于2019年,包含162 000用户对62 000部电影的2 500万条评分记录和100万条标签记录。由于笔者考虑用户偏好会随时间发生改变,如果用户使用系统的时间过短,则无法验证时间因素的影响。因此,在评分文件和标签文件中剔除了用户活动的时间跨度小于4年的记录,筛选出包含796个用户、26 925部影片、317 171个标签、750 046条评分记录和505 221条标签记录的数据集。每部影片只保留出现频次大于1且频次最高的前5个标签,最终的标签数量为7 730个。笔者使用的3张数据表的结构如表1所示。

笔者将用户评分数据集以评分时间先后,按8 ∶2比例划分成训练集和测试集。对每个用户,早期80%的评分数据放在训练数据集中,后期20%的评分数据放在测试数据集中。

4.2 评价指标

目前学术界主要采用预测准确度和分类准确度进行推荐算法评价[19]。预测准确度指标主要是平均绝对误差(MAE:Mean Absolute Error,MMAE)。MAE通过计算预测的用户评分与实际的用户评分之间差的绝对值度量预测的准确性,计算公式如下

(9)

其中N表示测试集中的项目评分记录数,pi表示项目预测评分,qi表示项目实际评分。MAE越小说明预

测值越精确,推荐质量越高。

分类准确度指标包括查准率(precision)、查全率(recall)及F值(F-measure)。查准率表示系统生成的推荐列表中,用户喜欢的概率。查准率表示用户喜欢的项目包含在系统生成的推荐列表中的概率。由于查准率与查全率之间存在相互制约关系,F-measure是查准率与查全率的加权调和平均值。令R(u)表示系统向用户u推荐的项目集合,T(u)表示包含在推荐列表中且用户u选择的项目集合,U表示全体用户的集合。查准率、查全率及F-measure的计算公式如下

4.3 结果分析

将笔者算法与传统的协同过滤算法在不同的评价指标上得出的结果进行对比。笔者算法中用户评分权重指数α取值为0.5。在训练集中,用户最新评分的权重为1,用户最早评分权重为0.5,其他评分权重由评分时间计算得出(参见式(6)、式(7))。相似性权重β取值为3。由于项目属性值数量较少,与基于标签的用户相似度相比,基于属性值的用户相似度方差较小,邻居区分度不高,取β值为3可增大基于属性值的邻居区分度。

从图2可以看出,两种算法的MAE值都随着邻居数的增多而逐步下降。当邻居数少于10时,大部分未评分项由于缺少邻居评分,预测评分只能取目标用户评分的平均值,随着邻居数量的增多,未评分项的评分预测趋于稳定。笔者算法的MAE低于传统的协同过滤算法,说明笔者算法对未评分项的评分预测比传统协同过滤算法更准确。

在计算precision值、recall值、F-measure值时,需要先固定邻居数k。由于F-measure值是一个综合指标,笔者先固定推荐数N,然后观察F-measure值随邻居数变化的变化情况,如图3所示。在N确定的情况下,F-measure值随邻居数的增加而逐步增加,当邻居数大于10时,F-measure值随邻居数的增加变化情况并不十分明显。邻居数的增加会增加推荐系统的计算量,影响系统性能,邻居数并不是越高越好,笔者取邻居k=25。

图2 笔者算法与传统协同过滤算法MAE值比较 图3 邻居数对推荐结果的影响 Fig.2 Comparison of MAE between this algorithm and traditional collaborative filtering algorithm Fig.3 Influence of neighbor number on recommendation results

在k=25的基础上,计算不同推荐数量下的precision值、recall值、F-measure值,两种算法的比较如图4~图6所示。

图4 笔者算法与传统协同过滤算法precision值比较 图5 笔者算法与传统协同过滤算法recall值比较Fig.4 Comparison of precision between this algorithm and traditional collaborative filtering algorithm Fig.5 Comparison of recall between this algorithm and traditional collaborative filtering algorithm

图6 笔者算法与传统协同过滤算法F-measure值比较Fig.6 Comparison of F-measure between this algorithm and traditional collaborative filtering algorithm

在precision值上,笔者算法的计算结果在0.04~0.06之间,传统协同过滤算法的计算结果在0.02~0.04之间,笔者算法的推荐精确度明显优于传统协同过滤算法。随着推荐项目数的增大,笔者算法的precision值逐步降低,而传统协同过滤算法的precision值却有逐步上升之势,说明传统协同过滤算法的推荐结果排序存在比较大的偏差,用户喜欢的项目往往排在推荐列表的后面,笔者算法的推荐结果排序更为合理。在recall值、F-measure值上,笔者算法也明显优于传统协同过滤算法。

5 结 语

笔者针对传统协同过滤算法的不足,引入项目属性信息和用户对项目的标签信息,提出一种融合标签和属性信息的混合推荐算法,提高了协同过滤算法数据的稠密度,同时使用户描述文件更易于解释。与传统协同过滤算法相比,该算法在评分预测的准确度、推荐结果的准确度、召回率和F值方面均有明显提升。

猜你喜欢
相似性标签矩阵
浅析当代中西方绘画的相似性
无惧标签 Alfa Romeo Giulia 200HP
不害怕撕掉标签的人,都活出了真正的漂亮
多项式理论在矩阵求逆中的应用
12个毫无违和感的奇妙动物组合
基于隐喻相似性研究[血]的惯用句
让衣柜摆脱“杂乱无章”的标签
矩阵
矩阵
矩阵