融合项目流行度与用户间多相似度的协同过滤算法

邓乐乐,黄 俊,岳春擂

1(重庆邮电大学 通信与信息工程学院,重庆 400065)

2(信号与信息处理重庆市重点实验室,重庆 400065)

E-mail:120960148@qq.com

随着计算机技术的快速发展和网民数量的急速增长,互联网上的数据呈指数级增长,导致严重的信息过载.为了让用户准确快速地获取自己感兴趣的资源,推荐算法和推荐系统应运而生.推荐系统通过分析系统中的用户数据,可以根据用户的偏好情况为其匹配可能喜欢的商品或服务,在一定程度上缓解了信息过载的问题[1].推荐系统中使用最广泛的协同过滤算法,其算法本身存在诸多问题[2].一方面算法自身冷启动、相似度计算不合理等问题都造成算法推荐质量的严重下降[3];
另一方面算法推荐结果的多样性和覆盖率不足使得用户被基于个人兴趣的信息流包围下,逐渐丧失了解和获取不同信息的能力和接触机会,不知不觉中为自己制造了一间“信息茧房”[4].

针对提高推荐结果的多样性和覆盖率的问题,文献[5]通过结合项目流行度来改进协同过滤推荐算法,引入项目流行度权重因子来降低热门项目在相似度计算及最终推荐中的影响力,从而提高项目推荐的覆盖率.文献[6]提出一种基于信任关系和项目流行度的矩阵分解推荐算法,合并用户与项目的得分矩阵以及用户之间的信任关系矩阵,通过矩阵分解同时传递信任和推荐项目.极大提高了推荐算法的覆盖率,但损失了现有方法8%左右的精度.文献[7]考虑将用户活跃度和项目流行度融合协同过滤算法中,其思想是度量两个项目的相关性时,如果一条记录只给两个项目中的一个打分,则使用与该记录相对应的评分用户的活跃度和被评估项目的流行度来惩罚这种相关性,从而提高数据稀疏环境下低流行度产品被推荐的概率.上述方法都将高流行度项目以不同方式进行权重惩罚,但也同时将高流行且高评分项目进行了统一惩罚,未充分考虑项目评分分值这一衡量因素.

针对相似度问题,文献[8]提出一种基于评分和结构相似度计算物品相似度的方法、文献[9]提出一种考虑物品相似权重的用户相似度计算方法、文献[10]提出一种结合评分相似度和项目属性相似度的物品相似度计算方法,上述方法都是通过融合评分和其它指标,最终提高相似度计算精度.且评分相似度都仅仅考虑用户间对同一项目的评分,评分相似度高则用户相似高,评分相似度低则用户相似低.这种计算方法忽视了对同一项目产生行为也可以一定程度的影响用户相似度.

结合以上问题的研究,本文提出了一种改进算法,该算法在1)设置项目评分阈值的基础上缓解了对评分高且流行度高的项目在参考流行度后造成的过度惩罚;
2)改进了用户属性相似度、用户评分相似度的计算方法,考虑到对同一项目产生行为可以一定程度影响用户相似度的情况提出了用户关注相似度;
3)通过融合用户属性相似度、用户关注相似度以及用户评分相似度得到用户间多相似度来提升对目标用户推荐项目的准确率.实验结果表明,改进算法不仅提高了推荐覆盖率,而且进一步提高了推荐结果的准确率.

传统基于用户的推荐系统中,定义用户集合U={u1,u2,…,um-1,um}和项目集合I={i1,i2,…,im-1,im}.符号相关概念定义如表1所示.

表1 本节公式符号含义Table 1 Symbolic meaning of formula in this section

传统的基于用户的协同过滤推荐算法步骤如下:

步骤1.构建用户评分矩阵

构建用户评分矩阵Rm*t并完成填充,评分集合为S={1,2,3,4,5},若用户um未对项目in打分即rmt=0.

Rm×t=r1,1r1,2r1,3…r1,t
r2,1r2,2r2,3…r2,t
r3,1r3,2r3,3…r3,t
……………
rm,1rm,2rm,3…rm,t

(1)

步骤2.计算用户相似度矩阵

基于步骤1中构建的用户评分矩阵,通过用户相似度计算用户相似度矩阵.相似度计算如公式(2)-公式(4)所示:

sim(a,b)C=∑c∈Ia,bRa,cRb,c∑c∈IaR2a,c∑c∈IbR2b,c

(2)

sim(a,b)A=∑c∈Ia,b(Ra,c-Ra)(Rb,c-Rb)∑c∈Ia(Ra,c-Ra)2∑c∈Ib(Rb,c-Rb)2

(3)

sim(a,b)P=∑c∈Ia,b(Ra,c-Ra)(Rb,c-Rb)∑c∈Ia,b(Ra,c-Ra)2∑c∈Ia,b(Rb,c-Rb)2

(4)

式中,sim(a,b)C为标准的余弦相似度计算方法,sim(a,b)A为修正的余弦相似性度计算方法,sim(a,b)P为皮尔森相关相似度计算方法.用户相似度矩阵为n*n的矩阵,定义为Su,计算结果显示在公式(5)中,公式相关概念的定义显示在表1中.

Sun×n=1sim(1,2)sim(1,3)…sim(1,n)
sim(2,1)1sim(2,3)…sim(2,n)
sim(3,1)sim(3,2)1…sim(3,n)
……………
sim(n,1)sim(n,2)sim(n,3)…1

(5)

步骤3.寻找用户邻居集合

根据步骤2获取的用户相似度矩阵找出与目标用户相似度最高的若干个用户组成邻居集合.

步骤4.预测分数生成推荐集合

在得到邻居用户集合后,根据用户a的近邻集合Uk获得尚未评级物品c的用户a对c的预测评级分数Pac,如公式(6)所示:

Pa,c=Ra+∑b∈Uk(Rb,c-Rb)×sim(a,b)∑b∈Uk|sim(a,b)|

(6)

最后根据预测得分从大到小进行排序,排序列表选取前n个物品作为目标用户a的最终推荐集合.

3.1 用户属性相似度

用户属性是首次创建用户画像所需的基本信息.用户开始加入系统时,由于用户没有过往的分数记录,实际应用程序很难预测和推荐产品给这些用户,因此通常推荐热门产品或随机选择产品推荐给新用户[11].这在一定程度上解决了冷启动问题,但不能根据用户的特点进行有效的个性化推荐.因为每个用户在注册时都包含唯一的属性信息,因此在数据稀疏的情况下,可以利用这些数据做出个性化推荐.

为了解决新用户推荐的冷启动问题,提取新用户注册时的必要信息,包含性别、职业、年龄、住址等.文献[12]为了计算用户信息属性的相似性,其对不同类别的属性进行不同的处理.本文进一步完善了文献[12]中提出的相似性计算方法,将用户信息特征分为二元属性、标称属性和数值属性3类.用户的属性如表2所示,其中aij表示用户i的属性j的值.

表2 用户属性Table 2 User attribute

1)对于二元属性和数值属性,相似度计算公式如公式(7)所示:

sim(amk,ank)=11+|amk-ank|

(7)

性别属性只有2类,取1表示男,取0表示女;
年龄属性是一个连续数值,基于埃里克森人格发展八阶段理论对年龄做离散化处理,年龄相差一定范围内属于同一类,本文将年龄划分为以下5个类别(数据集中用户年龄最小为15岁):‘15-18岁’编码为‘1’,‘19-28岁’编码为‘2’,‘29-40岁’编码为‘3’,‘41-65岁’编码为‘4’,‘66岁以上’编码为‘5’.

2)对于标称属性,相似度计算公式如公式(8)所示:

sim(amk,ank)=1-L(amk,ank)H

(8)

传统职业的种类有多种,每一个职业至少对应一个主行业,根据国民经济行业分类将行业划分为20个门类,其中各门类又包括:所属大类,中类和小类.考虑到各值之间的潜在语义关系,构建了基于领域知识的分类语义层次树.树的叶节点分别是不同的属性值,属性值之间的相似性取决于其在树结构中的位置.式中,L(amk,ank)表示返回属性值amk和ank叶节点到达公共双亲的最长路径长度,H表示分类语义层次树的树木高度.

基于以上属性分类计算得到用户间属性相似度的计算公式如公式(9)所示:

simAttr(m,n)=∑k∈AttrωksimAttr(amk,ank)

(9)

3.2 用户间关注相似度

用户间关注相似度可以判定用户间关注喜好领域的共性.在实际场景下考虑大众对自我感兴趣的项目才会产生行为,而这些行为的结果(评分高低)取决于项目本身的“质量”而并非领域本身的问题.比如用户u购买了两个不同出版社的算法类书籍i1和i2,i1给予了低评分,i2给予了高评分,i1低评分并不是因为用户对算法不敢兴趣,而是受到书籍本身算法难易度和能力适配等各方面的影响.传统推荐算法在计算用户相似度时,仅仅考虑用户间对同一项目的评分,评分相似度高则用户相似高,评分相似度低则用户相似低.但这种计算方法忽视了对同一项目产生行为可以一定程度的影响用户相似度,因此用户间关注相似度可以影响用户相似度的评判.用户的关注矩阵如表3所示,其中T代表用户已评分项,F代表未评分项.

表3 用户关注Table 3 User attention

对于用户间关注相似度的计算公式如公式(10)所示:

simFoc(u,v)=conuv(ownu+ownv)-conuv

(10)

式中,conuv是用户u和v的共同评分项,ownu,ownv是u,v各自评分项.

3.3 用户间评分相似度

用户评分在一定程度上反映了用户对项目的偏好程度,用户间评分差异越小往往代表不同用户对同一项目偏好度越一致.传统打分形式并不能准确表达出用户的偏好程度.例如,用户u对项目i打分为4分(满分为5分制),但是用户对项目的偏好度并不能以固定的数值形式进行量化和评判,分值只能简略的认为该用户对项目的偏好程度较高.

为了得到准确的偏好程度,文献[13]提出了通过模糊逻辑法处理用户评分,将评分相似度计算中的用户评分进行数值丰富化处理.本文将文献[13]的评分相似度计算方法进一步改进,将用户的评分偏好进行多维度量化,参考迈尔斯布里格斯类型指标将评分偏好分为喜欢、无感和不喜欢.在模糊逻辑的定义中,喜欢、无感和不喜欢之间是没有严格的界限的,也就是说用户评分的数值并不完全归属于某一个类,而是以隶属度来衡量的.结合用户评分范围,对评分隶属函数定义如图1所示.

图1 评分隶属度函数Fig.1 Score membership function

μgood(x)=(x-3)/2 3≤x≤5
μord(x)=(x-1)/21≤x<3
(5-x)/23≤x≤5
μbad(x)=(3-x)/2 1≤x≤3

(11)

其中x为用户评分,μgood(x)为用户喜欢的量化值,μord(x)为用户无感的量化值,μbad(x)为用户不喜欢的量化值.偏好度差异计算公式如公式(12)、公式(13)所示,基于以上推论,任意两用户间评分量化得到的偏好相似程度计算公式如公式(14)所示,公式相关概念的定义显示在表4中.

dis(i,j)=∑lk=1(fkic-fkjc)2

(12)

diff(i,j)=(∑c∈Ii,jdis(i,j))/|Iij|

(13)

Ps(i,j)=1/(diff(i,j))

(14)

表4 本节公式符号含义Table 4 Symbolic meaning of formula in this section

为了平衡两个用户间公共评分次数与总评分次数占比关系,将Tanimoto修正系数(15)和用户偏好度系数Ps(i,j)结合,最后基于用户修正余弦相似度(3),得到用户评分相似度计算公式,如公式(16)所示:

Tanimoto=Ii·Ij‖Ii‖2+‖Ij‖2-Ii·Ij

(15)

simSoc(i,j)=sim(i,j)A×Ps(i,j)×Tanimoto

(16)

3.4 用户间多相似度

为了进一步提高用户间相似度的计算精度,将用户间属性相似度、关注相似度、评分相似度进行权值融合.为了修正3.2节提出的问题.评分相似度和关注相似度采用加权组合的方式,但考虑到评分相似度比关注相似度更能体现用户的相似度,设置关注相似度的权重占比小于评分相似度的权重占比.此外,在数据稀疏的条件下以上3种相似度的计算会造成不同程度的影响,其中评分相似度和关注相似度在公共评分稀疏的环境下影响程度较高.因此设定公共评分数量阀值d,根据d大小调整其在不同数据稀疏情况下的平衡分布权重,混合用户多相似度计算公式如(17)所示.

simMix(i,j)=βNd[(αsimSoc(i,j)+(1-α)simFoc(i,j)]+

(1-βNd)simAttr(i,j),N

β[αsimSoc(i,j)+(1-α)simFoc(i,j)]+

(1-β)simAttr(i,j),N≥d

(17)

3.5 项目流行度

对物品产生过行为的用户总数即为项目流行度,它会对用户之间的相似关系产生潜在影响.实际场景下流行度高的商品更容易被用户发现和反馈,而流行度低的商品则很难引起用户的注意.

现有算法中在计算项目流行度对相似度的影响时普遍采用设置流行度惩罚权重或权重因子来降低热门项目在相似度计算及最终推荐中的影响力,但不合理的是这种计算方法同时降低了热门且评分高的项目的影响力.本文将文献[6]、文献[14]、文献[15]提出的融合项目流行度思想的协同过滤推荐算法进一步改进,将考虑热门项目的平均评分,动态调整评分未超过门限ω及超过门限ω的热门项目的流行度,提出一种参考评分因素的项目流行度惩罚调整方法.

计算项目i的流行度IPopi,并对其归一化.项目i的流行度IPopi为项目i被评价次数,项目的流行度如表5所示,归一化计算公式如公式(18)所示.

表5 项目流行度Table 5 Project popularity

norIPopi=IPopi-minIPopmaxIPOP-minIPop

(18)

式中,minIPop和maxIPop分别为项目流行度中的最小值和最大值,norIPopi为归一化后的项目i的流行度.提取流行度,设置流行度阈值δ和平均评分阈值ω,改进后的项目流行度的权重因子w如式(19)所示.

wi=1norIPopi<δ
1-log(1+norIPopi)log2GPAi<ω
11+e-(GPAi-5)+1-log(1+norIPopi)log2GPAi≥ωnorIPopi≥δ

(19)

3.6 本文算法实现

通过上述分析,本文提出的融合项目流行度与用户间多相似度的协同过滤算法,基本算法步骤如下:

算法1:融合项目流行度与用户间多相似度的协同过滤算法

输入:用户项目反馈信息矩阵R、目标用户V、邻居用户数量K、推荐域m(m>n)、最终推荐数量n.

输出:推荐给目标用户V的N个项目

a)提取用户-项目评分矩阵数据

b)提取用户共同关注矩阵,并计算用户间关注相似度

c)通过共同评分项计算用户间评分相似度,采用加权组合方法,融合用户关注相似度和评分相似度

d)提取用户属性,计算用户属性相似度

e)设置公共评分数量阀值d,在不同阈值下根据不同数据稀疏情况动态调整平衡分布权重,采用权值融合的方式将属性相似度融合至关注和评分相似度,得到用户多相似度

f)根据改进后的相似度计算公式,从矩阵中找出与目标用户u最相似的k个用户,用集合S(u,k)表示,将集合S中除去用户u已经喜欢的物品后的m个可能喜欢的物品全部提取出来

g)计算m个候选项目的流行度,并对其归一化

h)提取流行度,设置流行度阈值δ和平均评分阈值ω,并计算改进后的项目流行度的反馈权重w

i)m个候选项目乘以各自反馈流行度权重w,最终评分由高到低选出n个推荐项目,预测评分计算公式如公式(20)所示.

P(u,i)=∑v∈S(u,k)∩N(i)wvi×rvi

(20)

4.1 实验准备

本文的所有实验和算法都是以Python和MATLAB实现为基础的.实验操作系统为Windows10,处理器为Intel Core i5-4200U CPU,内存为8GB.

本文采用Movielens100k数据集作为实验数据,作为推荐算法研究中的常用数据集.其包括了943个用户对1682部电影的100000条评分数据,除此之外还有用户属性数据集包括用户的ID、年龄、性别、职业等.为了验证本文算法的有效性对其进行实验比较和分析,所以选择了此次实验的Movielens100k数据集.本文将数据集中80%的数据用作训练样本,20%的数据用作测试样本.

4.2 评估指标

平均绝对误差(mean absolute error,MAE)[16]是评价预测分数准确性的评价指标,用于计算项目的预测值和实际值之间的差异.MAE值越小,预测值的准确度越高,计算公式如公式(21)所示.

MAE=∑u∈U,i∈I|Pu,i-Ru,i|N

(21)

其中N代表预测评分的个数.

覆盖率(coverage)[17]可以测量推荐系统推荐的物品在整个物品集合中所占的比例,有效地反映推荐结果的多样性和新颖性.覆盖率高时,多样性和新颖性也相对较高.其计算公式如公式(22)所示.

coverage=|R(u)||I|

(22)

式中,I为系统中的项目集合,R(u)是为用户u推荐的项目列表.

4.3 对比算法及参数设置

为了验证改进算法(PM-UBCF)的有效性,本文算法分别在近邻数设置为10、20、30、40、50、60、70、80时与已有的融合项目流行度的推荐算法进行实验对比,所有的算法均采取同样的评分预测方法.对比算法包括文献[6]改进算法(TruMF)、文献[7]改进算法(UA-IBCF)、文献[14]改进算法(itemPopCF)和文献[18]改进算法(PW-IBCF).

在本文的算法中,包含的参数有公共评分数量阀值d,评分权重α,融合因子β,流行度阈值δ和平均评分阈值ω.实验前对实验数据的用户评分次数进行了统计,结果显示评分数少于18次和超过18次的用户数差异最大化.这时混合算法容易受到评分数量的影响.因此,在实验一中确定未知参数的过程中d的值设定为18.

考虑到实际场景下,评分相似度比关注相似度及属性相似度一般更能体现用户间的相似程度,因此设置评分相似度的权重占比高于关注相似度及属性相似度的权重占比,将评分权重α以0.1为步长递增,取值范围为[0.5,0.9].融合因子β以0.1为步长递增,取值范围为[0.5,0.9],通过Python分析MovieLens100k数据集的项目流行度以及项目的平均评分,本文算法将MovieLens100k数据集的流行度阈值δ设置为[0.2,0.6],步长为0.1;
平均分阈值ω数组为[2,4],步长为0.5.

4.4 实验结果及分析

实验1.未知参数的确定

为了验证不同参数取值对实验结果的影响,对不同邻居数下的MAE值进行了比较,在MovieLens100k数据集中进行了多组实验.结果显示,随着邻居数量的变化,不同的评分权重α,融合因子β,流行度阈值δ和平均评分阈值ω对MAE值的影响分别如图2-图5所示.随着评分权重α的变化,本文算法的MAE值保持在[0.76,0.766].当评分权重α取0.8时,MAE值较低且稳定性较好;
对于融合因子β,当融合因子取0.9时MAE值达到最低值,此外,流行度阈值δ和平均评分阈值ω分别取值为0.4和3.5时取得各自不同邻居数量下的MAE的最小值.因此,本文算法将公共评分数量阈值d取值为18,评分权重α取值为0.8,融合因子β取值为0.9,流行度阈值δ取值为0.4,平均评分阈值ω取值为3.5.该数据集的后续实验参数将依此设置.

图2 评分权重α对MAE的影响Fig.2 Influence of score weight α on MAE

图3 融合因子β对MAE的影响Fig.3 Effect of fusion factor β on MAE

图4 流行度阈值δ对MAE的影响Fig.4 Influence of prevalence threshold δ on MAE

图5 平均评分阈值ω对MAE的影响Fig.5 Influence of average score threshold ω on MAE

实验2.算法性能对比

基于图6对比实验的结果,在MovieLens100k数据集中,每种算法的预测精度MAE都随着K值的变化而变化,当邻居个数大于30时,本文算法(PM-UBCF)的MAE值均低于其它对比算法的MAE值,当邻居个数等于50时,本文算法的MAE值达到最低值,约为0.756.因此,本文提出的算法具有较高的预测精度.

图6 预测准确度对比结果Fig.6 Comparison of prediction accuracy

覆盖率的对比实验结果如图7所示.ItemPopCF算法的覆盖率随着邻居数的增加而减小;
TruMF算法的覆盖率随着邻居数的增加而基本不变;
PW-IBCF、UA-IBCF和本文PM-UBCF算法的覆盖率随着K值的增加而逐渐增加,当K值大于40时增加趋于平缓,在K取值范围为[20,80]时,本文PM-UBCF算法的覆盖率均高于其它对比算法.其中当邻居数K超过50时,本文算法的覆盖率接近33.2%,推荐的多样性和新颖性表现更优.

图7 推荐覆盖率对比结果Fig.7 Comparison of recommended coverage

本文针对现有算法未充分考虑引入项目流行度在降低热门项目影响力的同时会普遍降低热门但评分高的项目影响力的问题,改进了利用项目流行度计算项目相似度的度量策略,将平均评分考虑到度量决策中.此外,通过融合多种用户间相似度进一步提高了用户相似度计算的准确率.实验结果表明,考虑对超过平均分阈值的高流行度项目在进行相关惩罚的同时进行补偿反馈在提高结果预测准确度的同时也增加了推荐结果的多样性.

猜你喜欢 阈值权重矩阵 非平稳声信号下的小波变换去噪方法研究现代电子技术(2022年11期)2022-06-14权重望寡:如何化解低地位领导的补偿性辱虐管理行为?*心理学报(2022年5期)2022-05-16土石坝坝体失稳破坏降水阈值的确定方法建材发展导向(2021年19期)2021-12-06非均匀光照下文本图像分割算法研究科技研究(2021年15期)2021-09-10权重常思“浮名轻”当代陕西(2020年17期)2020-10-28为党督政勤履职 代民行权重担当人大建设(2018年5期)2018-08-16权重涨个股跌 持有白马蓝筹证券市场红周刊(2018年3期)2018-05-14利用迭代软阈值方法抑制恒时演化类核磁共振实验中的采样截断伪峰分析化学(2017年12期)2017-12-25多项式理论在矩阵求逆中的应用读与写·教育教学版(2017年10期)2017-11-10矩阵南都周刊(2015年4期)2015-09-10

推荐访问:多相 协同 算法