基于改进用户属性评分的协同过滤算法

2020-03-07 13:11董跃华朱纯煜
计算机工程与设计 2020年2期
关键词:相似性协同预测

董跃华,朱纯煜

(江西理工大学 信息工程学院,江西 赣州 341000)

0 引 言

海量的数据成为了最具价值的财富,也是信息技术发展的必然产物。但对于个人而言,并非所有的数据都是有价值的,大多都是无用的数据,随着互联网技术、信息技术、物联网技术、云计算等数字化信息技术的发展,全球范围内数据呈爆炸式增长,每天都有大量的图片、博客、视频发布到网上,信息化技术的发展给企业的冲击量是巨大的。首先,以今日头条及抖音为代表的信息流产品,且国内最顶尖的互联网公司BAT也纷纷发力信息流,像百度手百的feed流,阿里UC的feed流,腾讯微信里的看一看,其次是像淘宝、京东等电商类产品,而在上述APP中其算法的核心部分就是推荐算法。因此,个性化推荐算法[1]显得尤为重要。而在推荐算法中核心工作之一就是相似度的计算,传统的协同过滤算法中主要通过分析用户-项目的评分矩阵信息来进行相似度计算,这类方法简单直观,且应用最为广泛。然而,在大多数推荐系统中都存在着评分数据的稀疏性问题,使得在计算用户或项目的相似度上无法能够真实有效地反映出用户的兴趣爱好,存在着稀疏性和可扩展性不足等问题。

为了进一步提高基于用户的推荐算法的推荐精度,及缓解目前该算法存在的一些缺陷,如数据稀疏性、冷启动和准确率下降等问题[2-4],许多学者针对每种问题分别提出了自己的改进算法,例如,针对数据稀疏性问题,刘玉葆等[5]提出一种不确定近邻的协同过滤算法(UNCF),算法对用户和其产品之间的相似度进行计算,通过不确定近邻的动态度量方法对预测结果进行推荐,有效地缓解了数据稀疏性问题;Zhang Jia等[6]从局部和全局角度出发,融入了用户的偏好信息,最终提出了一种基于用户偏好聚类的协同过滤算法(UPUC-CF),该方法基于这样一个假设,即用户具有不同的评分习惯,进而将用户分配到具有不同偏好的用户组中以此来度量用户的相似性;Liu等[7]分析了PIP的不足,提出了一种启发式相似模型(heuristic similarity model,NHSM-CF)。NHSM-CF不仅考虑了相似度测度的3个因素:接近度、影响度和评分的受欢迎度,而且注重常用评分项目的比例和用户偏好,该模型在与传统的推荐算法相比,在预测评分及推荐质量上均具有较大的提高;Hamidreza Koohi等[8]为提高系统的推荐精度,提出了一种模糊C-means方法,实验结果表明该方法相比传统的K-means聚类算法具有更好的推荐效果;针对新项目冷启动和新用户冷启动等难题,Biswas S等[9]在考虑基于模型的推荐系统中,将问题形式化为离散优化问题,以最小化用户的真实与预测评分之间的最小平方误差,并提出了几种可扩展的启发式算法;于洪等[10]提出了用户时间权重信息概念,利用三分图的形式来描述用户、项目、属性、标签之间的关系,提出了一种解决新项目冷启动问题的推荐算法;Jamali等[11]利用sigmoid函数提出了一种改进的基于PCC-CF的相似度度量方法(SPCC-CF),强调了常用评分项的重要性;为了能够更好地提取用户或项目属性的隐式特征,周洋等[12]利用自编码器原理提出一种基于栈式降噪自编码器(SDAE)的协同过滤算法,通过利用SDAE处理评分矩阵获得电影的特征编码和经过PCA处理项目属性得到的项目属性编码,结合特征编码及属性编码计算项目之间的相似度,最终得出top-N推荐列表;李梦梦等[13]也将栈式降噪自编码器融入到基于用户的协同过滤算法中,不同的是其根据SDAE模型得到用户的隐表示,其次分析了用户对项目的属性偏好,在最终的评分预测阶段引入了时间衰减项,动态预测访问概率,提高了推荐质量;针对上述不足以及相关创新思想,为提取用户的隐式特征,本文在利用已有用户共同评分项目的基础上分析评分的相似性,将用户评分进行归一化,在改进相似度的基础上结合对用户属性评分量化,提出一种基于改进用户属性评分的协同过滤算法(IUAS-CF),有效地预测了用户的实际评分,提高了推荐质量。

1 传统的User-based协同过滤算法

协同过滤算法可以说是目前最为普遍的,最有应用前景的推荐算法。通俗地说,协同过滤算法核心思想就是借鉴与你相关的人群的观点来进行推荐。一般地,基于用户的协同过滤算法推荐步骤就是根据用户-项目评分矩阵计算出该用户与其他用户的相似度,继而从与该用户最相似的用户中选取若干个作为最近邻,再利用最近邻用户集合来预测该用户的未评分项目分数,最终选取最高的top-N预测项目作为该用户的推荐集推荐给用户。

1.1 用户相似度

在推荐系统中,主要是计算用户之间的相似度以及对用户进行预测评分。相似度计算方法主要分为两种,一种是相似度度量方法,另外一种是距离度量方法。

假设两个文本X=(x1,x2,x3,…,xn)和Y=(y1,y2,y3,…,yn), 其中x向量表示为:Vec(X)=(v1,v2,v3,…,vn),y向量表示为:Vec(Y)=(w1,w2,w3,…,wn)。

(1)欧氏距离[14]:欧氏距离也称欧几里得距离,是最常见的距离度量,衡量的是多维空间中两个点之间的绝对距离。计算式(1)如下

(1)

(2)余弦相似性:也叫向量相似性。将每个用户的用户-项目评分看作一个N维向量,然后将两个向量之间的夹角余弦值作为用户之间的相似度。其相似度计算式(2)如下

(2)

(3)皮尔森相关系数:利用用户-项目的评分矩阵,去除用户的非共同评分项,利用用户的共同评分项目,进而计算相似性。其计算式(3)如下

(3)

(4)评分预测:预测评分是对当前用户对该项目预测的可能评分值,预测评分是目前大多数推荐系统中衡量系统的推荐精度主要方法。其主要计算式(4)如下

(4)

1.2 用户属性评分

在基于用户的协同过滤推荐算法中,有很多都忽略了用户自身所存在着影响用户抉择的用户属性,虽然这些属性在语义上难以看出他们之间的关系,但利用一些特征提取方法可以在一定程度上挖掘用户或产品之间的联系。例如女性用户对于爱情、浪漫等类型的电影更为喜爱,男性用户更愿意在电子产品或运动设施上进行消费。因此,为更好地利用用户的隐式特征来计算用户之间的相似度,本文将用户自身存在的属性引入到用户相似度计算公式中,引入用户属性评分概念,即赋予每个用户属性相应的权值,以平衡不同属性对用户选择所产生的影响。

2 改进算法描述

2.1 基于评分偏好的用户相似性

一些网站的评分系统都大致不一,但不论是5、10分制的评分,系统所设的分数极值一定程度上无法反应出个性化用户的兴趣爱好,即系统中存在着一些比较有个性的用户,其评分标准不同于一般的评分分布,可能会出现没有系统的最值评分情况,或其评分基本无波动,即系统中存在的用户评价值范围差异,针对此类用户的评价值范围差异所带来的影响,本文给出相应的改进方法,改进后,将个性化用户与一般用户的评分矩阵融合计算相似度,减小了因评价值范围差异所带来的影响。

整个算法的改进思路如下,首先,对于给定评分均差,其计算式(5)如下

(5)

式中:Dis(A,B)为UserA和UserB之间的评分距离,CA,B为UserA和UserB相同的评分项目集合,SAi为UserA对集合中第i项的评分,SBi为UserB对集合中第i项的评分。

评分均差虽然在一定程度上能反应用户之间的相似性,而在某些极端情况下,即用户之间存在极少的共同0时,这时会导致研究对象评分集合没有交集,而整个式子无意义,因此对上式进行修正后得到式(6)

(6)

经过修正后,公式避免了分母为零时式子无意义的情况,但是当此时的CA,B=0时即UserA和UserB没有相同的评分项目集合,意味着用户A和B之间没有交集,用户之间相似性达到最低,然而Dis(A,B)=0, 即用户之间的评分距离为零,也意味着用户之间相似性最高,因而两者之间相互矛盾,继续对上式调整,式(7)如下

(7)

式中:Smax-Smin表示UserA和UserB共有的评分最大值和最小值的差值。即当用户之间没有共同评分项目时,此时将系统设定的最大评分差值给予用户,俩用户之间距离最大,相似性最低,符合实际情况;而当用户之间存在共同评分项目时,这一项的加入也不会影响其最终计算结果。所加入的这一项的取值只要大于等于Smax-Smin即可,因为如果小于Smax-Smin, 若两个用户之间只有一个共同评分项,或两个用户的评分差均为Smax-Smin, 这会导致两个用户之间存在共同评分项目而其相似性却不如没有共同评分项目的高,与实际情况相反,因此取Smax-Smin最合适。

对于存在的一些比较有个性的用户,其评分标准不同于一般的评分分布,可能会出现没有系统的最值评分情况,或其评分基本无波动,对于这样的用户我们需要将其考虑到推荐系统中,例如,在UserA和UserB的共同评分项目集合中,UserA的评分有1到5分,而UserB的评分可能是2到4分,这种情况下2分和4分对于UserB而言可能是系统的1分和5分,也可能存在UserA的评分均是1分,UserB的评分均是5分,UserA和UserB的评分没有波动,而评分差距极大,按传统的评分标准,自然会判断UserA和UserB的差距极大而不进行推荐,这正是传统评分系统的一个缺陷,算法不应该以表面的评分数值来判断两者之间的差异,而应以用户对物品或项目的喜爱程度进行分析,因此对于同一集合中的项目或物品,若两者的评分波动一致,则判断其相似度很高,若不一致则很低。所以基于现有公式的缺陷和上述的思想,对公式继续调整,改进式(8)如下

(8)

式中:SAmin和SBmin分别代表UserA和UserB的最小评分值,SAmax和SBmax分别代表UserA和UserB的最大评分值,主要目的在于对两者的评分进行归一化,将两者的评分拉到了同一维度中,如此可以明显看出用户之间对项目的喜爱程度波动幅度,继而计算用户之间的相似性,以从用户喜爱程度的角度去区分用户,避免了用户相似而评分数值不一致带来的影响。

2.2 基于改进用户属性评分的协同过滤算法

在现实生活中,用户的年龄、性别等属性很大程度上影响着用户的选择。例如,男性用户比较偏向于买电子产品,听流行摇滚音乐等,而女性用户更愿意购买化妆品,听轻音乐等。为了体现出用户的不同属性对不同用户的影响程度,本文将语义上的用户属性进行数值上的转化,利用上述改进的基于评分偏好的相似性计算方法,本文首先对已有的数据训练集中的用户进行相似度计算,找出训练集中所有用户UserI相对应的最相似的用户UserI′,得到一个最相似用户对集合,对于每一对最相似用户以及预给出的用户属性值λ1,λ2,λ3,…,λn, 本文给出公式用于衡量用户对的相似情况,如式(9)所示

(9)

式中:simF(A,B) 表示俩用户的相似程度,F(A∩B)i表示最相似用户对UserA和UserB共有属性的交集,F(A∪B)j表示用户A和B共有属性的并集。

用户属性的权值的训练方法:

首先,利用式(8)找出训练集中所有最相似用户对,进一步利用式(9)对所有的最相似用户对的属性进行计算并累加得到所有最相似用户对的相似和res,由于每一对用户是训练集中相似度最高的,且每一对最相似用户其simF(A,B) 相比于其他用户而言是最大的,因此,将1,2,3,…,n等分别依次带入属性评分λ1,λ2,λ3,…,λn中,当所有最相似用户对的相似和res达到最大时,所取的用户属性的权值为最佳用户属性权值。

由于算法所求的是用户之间的距离,所以对公式进行调整,最终改进的推荐算法其式(10)具体描述如下

(10)

式中:Dismax表示用户可能存在的最大距离,simF(A,B) 表示用户A和B的属性相似程度。simFin(A,B) 表示用户最终相似度。

算法步骤具体描述如下:

算法:基于改进用户属性评分的协同过滤算法

输入:用户集合U和与之对应的已访问或已评分的资源集I,以及系统预设的用户属性集合λ。

输出:用户集合U对应的Top-Un推荐集。

过程:

步骤1 根据相似性计算方法筛选出用户U对应的N个最相似用户U′。

步骤2 统计出相似用户中相同的用户属性。

步骤3 根据用户属性相似度公式列出N个用户属性多项式并相加得到所有相似对用户的相似度的和res。

步骤4 将1,2,3,…,n等分别依次带入属性评分λ1,λ2,λ3,…,λn中,使得res取得最大值。

步骤5 利用最终的计算公式重新对用户进行相似度计算,筛选出Topn相似用户。

步骤6 利用预测评分公式求出M个预测项目预测评分集合M{Y1,Y2,Y3,…,Ym}。

步骤7 由大到小排列预测评分,筛选出前N个预测项目,作为用户U推荐集合Un。

其总体框架描述如下:

算法:基于改进用户属性评分的协同过滤算法

输入:用户-项目评分矩阵S,用户集合U,项目集合I,相似用户个数k。

输出:预测结果top-N集合。

步骤1 根据式(8)计算用户A与用户B的距离。

(1)Smax,Smin; //系统最大值,最小值

(2)SAmin,SAmax,SBmin,SBmax; //A,B用户的最小最大评分值

(3) Common[]; //保存A,B用户共同评分项目

(4) for i ∈m do //i属于m的评分项目

(5) if i∈n then

(6) Common.add(i);//保存共同评分项目

(7) else;

(8) end for

(9) 计算A,B用户之间的距离

(10) for i ∈ Common then

(11) sum+=(SAi-SAmin)/(SAmax-SAmin)-(SBi-SBmin)/(SBmax-SBmin);

(12) end for

(13) dis=(sum+(Smax-Smin))/(Common.len+1);

步骤2 利用式(9)计算用户属性相似度。

步骤3 计算用户A的前k个最相似用户。

(1) com_user[]; //用户A相似用户集合

(2) sim_user[]; //保存用户A与其他用户的相似度

(3) for u ∈ U do

(4) //dis(A,u)利用步骤1

(5) //sim_property(A,u)利用步骤2计算

(6)sim_result=(1-dis(A,u)/(Smax-Smin))×sim_property(A,u);

(7) sim_user.add(sim_result);

(8) end for

(9) //选择前k个最相似的用户

(10) com_user=sorted(sim_user.value, reverse=True, number=k);

步骤4 计算用户m对未评分项目的预测评分

(1) un_As[]; //用户A未评分项目

(2) for i ∈ I do

(3) if i ∈ A then

(4) ;

(5) else

(6) un_As.add[i]; //保存用户未评分项

(7) end for

(8) A_p[];//保存用户A对未评分项的预测评分

(9) A_avg; //用户A对项目的平均评分

(10) for i ∈ un_As do

(11) for u ∈ com_user do

(12) //Rui为用户u对项目i的评分;

(13) //Ru_avg为用户u对项目的平均评分

(14) sum1+=sim(A,u)×(Rui-Ru_avg);

(15) sum2+=sim(A,u);

(16) end for

(17) A_p.add(A_avg+sum1/sum2);

(18) end for

(19) //将预测结果排名,选择评分较高的N个项目

(20)top-N=sorted(A_p.value, reverse = True,number = N);

3 评测标准与实验设计

3.1 评测标准

3.1.1 平均绝对误差

平均绝对误差(MAE)是用于衡量推荐质量好坏的标准,其定义请参见文献[15-17]。假设预测的用户评分集合为 {P1,P2,P3,…,Pn}, 对应的实际用户评分集合为 {q1,q2,q3,…,qn}, 则具体的MAE计算式(11)为

(11)

3.1.2 准确率

准确率是从推荐总数中相关推荐的比例。准确率越高,推荐性能越好。准确率的具体计算式(12)描述如下

(12)

式中:Hits为正确推荐项目数,N为推荐总数。

3.1.3 评分预测

评分预测是推荐系统中较为常用的一种测量推荐算法准确度的手段,其预测结果能够很好地衡量推荐算法的推荐精度。主要评分预测式(13)如下

(13)

3.2 实验设计

实验采取由明尼苏达大学的GroupLens研究小组收集的数据集MovieLens(ML)和第二届推荐系统信息异构与融合国际研讨会上发布的HetRec2011-MovieLens(HRML)数据集上进行测试实验,其中ML数据集有943名用户对1682部电影进行了评级,评级为10万,每个用户至少有20部电影的评级记录。ML数据集的密度为6.3047%。第二组HRML是在第二届推荐系统信息异构与融合国际研讨会上发布的。我们随机抽取1036名用户和1300部电影的HRML数据集,总收视率为106 210。提取数据集的稀疏性为92.1139%。实验对所提出的算法分别与PCC-CF、SPCC-CF、NHSM-CF以及UPUC-CF算法进行比较。整个实验设计分为两个实验,实验1为基于评分偏好的用户相似性(UAS-CF)实验,实验2为基于改进用户属性评分的协同过滤算法(IUAS-CF)实验。

(1)基于评分偏好的用户相似性

实验中针对本文提出的基于评分偏好的用户相似性计算公式,将其与传统相似度计算方法以及其它改进算法分别在MovieLens(ML)数据集和HetRec2011-MovieLens(HRML)数据集上进行准确度比较。本实验采用平均绝对值误差MAE为评价标准进行实验,在最邻近项目数量k=10,20,30,40,50,60,70,80,90,100的情况下,对用户进行多组实验。

图1和图2为ML数据集和HRML数据集下UPUC-CF和UAS-CF的MAE值比较实验结果,从图中结果可以看出,在对一些个性用户的评分计算上进行了改进的情况下,并且在将用户评分进行归一化之后,由于考虑了某些极端用户对系统带来的影响,在邻近数量较少时,改进后的算法相较于UPUC-CF而言在推荐性能上都有较大的提升,而且随着K的取值变化,改进算法的MAE值都明显低于UPUC-CF算法,这说明该算法对用户的预测评分更接近于用户的实际评分,即预测准确度更高。

图1 ML数据集下UPUC-CF和UAS-CF比较

图2 HRML数据集下UPUC-CF和UAS-CF比较

(2)基于改进用户属性评分的协同过滤算法

将ML数据集和HRML数据集中的80%作为训练集用于计算在用户属性个数不同的情况下每种属性的评分,由于在推荐过程中影响用户抉择的用户属性个数不多,以及不同的用户属性对用户的影响程度不一样,分别用1,2,3,…,n对i=λ1,λ2,λ3,…,λn进行迭代,对于每一对相似用户其相似性simF(A,B),当所有相似性的和为最大时,此时的用户属性i取得最优解-这一取值随着数据集的不同而不同。用户属性见表1。

表1 用户属性

表1中,用户的性别、年龄等是用户在系统中存在的属性,λ1,λ2等是指用户的属性评分。

根据训练集所得出来的用户属性的权值,将其引入到改进的推荐算法中,最后实验对IUAS-CF算法测试其推荐性能。在实验过程中,从训练集中得出λi在不同个数的情况下的不同取值,根据实验结果取最好情况下的λi个数,并由继续对IUAS-CF算法与其它算法的性能比较。

图3和图4显示了不同算法在ML数据集上的MAE和precision实验结果。在图3中,所有算法的MAE都随着最近邻数的增加而减少,而且笔者所提出的算法在整个 Top-K 范围内相较于其它算法取得了更好的MAE值,说明所提出的IUAS-CF算法的推荐精度更高。此外,从图4可以看出,随着最近邻个数的增加,算法的推荐精度也达到了较好的结果。因此可以验证该算法的有效性,且能提高ML数据集的推荐性能。

图3 ML数据集上各种推荐算法MAE比较

图4 ML数据集上各种推荐算法precision比较

图5和图6显示了不同算法在HRML数据集上的MAE和precision实验结果。从图中结果可以看出,不同的推荐算法随着最近邻数量的增加,其变化情况与图3和图4基本相同,不论是UAS-CF算法还是引入用户属性的IUAS-CF算法,都比其它推荐算法的推荐精度更高,且在引入用户属性后的IUAS-CF算法,相比原先的UAS-CF推荐效果更好,说明用户属性评分确实能在一定程度上影响用户的偏好。

图5 HRML数据集下各个算法MAE比较

图6 HRML数据集下各个算法precision比较

因此,从ML数据集和HRML数据集上的实验可以看出,在综合考虑评价值范围差异影响和用户属性评分的情况下,本文所提出的算法要优于其它推荐算法,最终的 IUAS-CF 算法不仅减小了个性用户对相似度计算带来的影响,且对系统的数据稀疏性及冷启动问题都有了一定的改善。

4 结束语

本文以提高用户体验及推荐质量为目标,在考虑了个性化用户的同时,利用用户属性所存在的隐式特征信息,提出了一种基于改进用户属性评分的协同过滤算法。算法利用训练集训练用户属性的权值,继而改进相似度计算方法,根据相似簇和最近邻生成最优预测评分,最终求出用户的Top-N推荐集。实验结果表明,本文的改进算法有效地提高了推荐系统的准确率。

猜你喜欢
相似性协同预测
一类上三角算子矩阵的相似性与酉相似性
无可预测
选修2-2期中考试预测卷(A卷)
选修2-2期中考试预测卷(B卷)
家校社协同育人 共赢美好未来
蜀道难:车与路的协同进化
浅析当代中西方绘画的相似性
“四化”协同才有出路
不必预测未来,只需把握现在
三医联动 协同创新