一种基于分类的社会化推荐方法

文档序号:6552062阅读:284来源:国知局
一种基于分类的社会化推荐方法
【专利摘要】本发明公开了一种基于分类的社会化推荐方法,包括:构造用户对分类的评分矩阵:根据用户对项目的评分数据和项目的分类信息,构造初始用户分类矩阵;对初始用户分类矩阵做归一化处理,并使用矩阵分解方法重构用户分类矩阵;由用户的好友信息构造用户好友之间的信任度;根据用户分类矩阵中用户对项目所属分类的评分、使用社会化模型预测得到的用户对项目的评分以及用户好友之间的信任度,使用随机梯度下降法学习得到模型的参数,从而预测用户对项目的最终评分。本发明首次将项目分类信息引入社会化推荐方法中,能够在原有协同过滤推荐的基础上,整合用户的社会化信息和项目的分类信息,提高推荐精确度,解决推荐系统中面临的数据稀疏问题和冷启动问题。
【专利说明】一种基于分类的社会化推荐方法

【技术领域】
[0001]本发明属于数据挖掘和推荐系统领域,更具体地,涉及一种基于分类的社会化推荐方法。

【背景技术】
[0002]协同过滤是推荐系统中应用最广泛最成功的技术,可以利用已有用户群过去的行为或意见预测当前用户最可能喜欢哪些东西或对哪些东西感兴趣。它基于这样的一个假设“和你喜好相似的人喜欢的东西你也很有可能喜欢”。协同过滤推荐一般分为基于内存的推荐和基于模型的推荐。基于内存的算法是推荐系统中最基本的算法,该算法不仅在学术界得到了深入研究,而且在工业界也得到了广泛的应用。基于内存的推荐又可以分基于用户的协同过滤和基于项目的协同过滤。基于模型的推荐根据用户过去对项目的评分,使用统计学习的方法给用户和项目建模,然后使用生成的模型来给用户推荐项目。然而数据稀疏问题和冷启动问题在现实场景中经常出现,潜在因子模型在这些场景中推荐效果很差。虽然研究人员提出社会化推荐模型把用户的社交网络信息引入到协同过滤模型中,在用户冷启动问题上有一定的作用,但是无法解决项目的冷启动问题。
[0003]Ma等人提出了社会化推荐模型SoRec,该模型把用户的社会化信息形成一个信任矩阵,对这个信任矩阵使用矩阵分解模型来建模,把信任矩阵分解中的用户因子和评分矩阵分解中的用户因子用同一个参数来代替,采用这种方式把用户的社会化信息融入协同过滤中,从而更加精确预测用户对项目的评分,试验结果表明该模型推荐效果比不使用社会化信息的协同过滤模型更好;虽然SoRec模型能够提高推荐精确度,但是也有一些缺点,它的建模方法不符合实际,同时这种建模方法不具有很好的解释性,不能给用户一个直观的理解。
[0004]King等人提出了社会化推荐模型STE,在预测用户评分时,把用户好友对项目的评分按照用户的信任度加权到用户对项目的最终评分中,模型在对评分建模的时候有很好的解释性,同时在预测评分准确度上比之前的误差更低;但是这种建模方法也有一些缺点,因为STE模型仅仅考虑了用户的直接好友对他的影响,没有考虑到这种影响会随着用户的好友关系进行传播。
[0005]Jamali等人提出了 SocialMF模型,与STE模型不同的是,STE模型中用户的潜在特征不受到他的好友的影响,用户好友影响的是用户对项目的最终评分,而在SocialMF模型中,用户的潜在特征受到用户好友的影响,因此SocialMF可以处理用户的信任传播,也就是如果用户a信任用户b,用户b信任用户C,那么表示用户a偏好的潜在因子会受到用户c潜在因子的影响。即使用户是新用户,没对项目做出任何评分,用户的潜在因子也可以由用户好友的潜在因子和用户对好友的信任度计算得到。
[0006]Zhou等人提出推荐模型SoReg,该模型把用户的社会化关系分为两种,一种为信任关系,一种为好友关系,认为这两种不同的关系应该用不同的模型来建模,并对好友关系提出了推荐模型,使用用户的好友信息来规则化矩阵分解中用户的潜在因子。
[0007]上述社会化推荐模型在建模时把用户信息融入到协同过滤中,在给新用户推荐时,使用用户的好友来辅助推荐,解决用户的冷启动问题,但是社会化推荐在项目冷启动问题上还有一定的局限性,因为用户及其好友都没有对新项目做出任何的评价,因此无法对新的项目做出很好的推荐。


【发明内容】

[0008]针对现有技术的缺陷,本发明首次将项目分类信息引入社会化推荐方法中,提供一种基于分类的社会化推荐方法,旨在解决现有推荐算法中所面临的数据稀疏问题和项目的冷启动问题,提高推荐精确度。
[0009]为实现上述目的,本发明提供了一种基于分类的社会化推荐方法,包括:
[0010](I)根据用户对项目的评分数据和项目的分类信息,构造初始用户分类矩阵;
[0011](2)对初始用户分类矩阵做归一化处理,并使用矩阵分解方法重构用户分类矩阵;
[0012](3)由用户的好友信息构造用户好友之间的信任度;
[0013](4)根据用户分类矩阵中用户对项目所属分类的评分、使用社会化模型预测得到的用户对项目的评分以及用户好友之间的信任度,使用随机梯度下降法学习得到模型的参数,从而预测用户对项目的最终评分。
[0014]在本发明的一个实施例中,所述步骤(I)包括以下子步骤:
[0015](1-1)用O值初始化初始用户分类矩阵,初始用户分类矩阵中的元素C’ ik表示用户i对分类k的评分;
[0016](1-2)读取用户对项目的评分记录;
[0017](1-3)判断用户对项目的评分记录是否已经遍历完毕,如果没有遍历完毕转入步骤(1-4),如果遍历完则结束;
[0018](1-4)读取用户对项目的评分Rij以及项目对应的分类信息I^Rij为用户i对项目j的评分,k为项目j所属分类;
[0019](1-5)把初始用户分类矩阵中对应用户和分类位置上的元素加Rij,然后转入步骤(1-3)。
[0020]在本发明的一个实施例中,所述步骤(2)中对初始用户分类矩阵做归一化处理,具体包括:
[0021](2-1)读取每个用户对分类的评分C’ik,选出评分中的最大值MAXk,eeC’ ik,和最小值 MINk’eGC,ik’ ;

C,—MIN C'
[0022](2-2)使用公式Q=对每个分类的评分C’ 11;做归一化
MA Xk^GC ik~ MINk'eGC He'
处理,其中G为所有分类的集合。
[0023]本发明的一实施例中,步骤(2)中使用矩阵分解方法重构用户分类矩阵具体为,
I m I22
求公式=£7/?2+夺IlH+夺IIZ监的最小值,获得表示用
L 1=1 k=l L L
户兴趣特征的潜在因子矩阵U和表示分类特征的潜在因子矩阵Z,使用表示用户特征的潜在向量和表示分类特征的潜在向量做内积,得到用户对分类的评分,进而获得用户对所有任何分类的评分;
[0024]其中,Ce Rmxl为用户对分类的评分矩阵,矩阵中有m位用户和I种分类,Ue Rdxm和Z e Rdxl分别表示用户的潜在因子矩阵和分类的潜在因子矩阵,其中d表示潜在因子的数量,列向量Ui表示用户i兴趣偏好的向量,Zk为分类k的特征向量,用户对项目的评分构成矩阵R,用户对分类评分构成矩阵C,Ru为用户i对项目j的评分,Iu为指示函数,表示用户i是否对项目j有评分,Iij = I表示用户i对项目j有评分,Iij = O表示用户i对项目j没有评分,^和λζ为规则化参数,以防过度拟合,I1.为矩阵的Frobenius范数。
[0025]在本发明的一个实施例中,所述步骤(3)由用户的好友信息构造用户好友之间的信任度,可知用户i对用户j的信任度与信任j的用户数量成正比,与用户i信任的用户数量成反比,从而得到具体计算公式为:
?,in(j)
[0026]S^outiS) + iniS)
[0027]其中Su为用户i对用户j的信任程度,in(j)为信任j的用户数量,out(i)为用户i信任的用户数量。
[0028]在本发明的一个实施例中,所述步骤(4)中预测用户对项目的最终评分,具体根据下式计算:
[0029]Rij = aUf Vj +(1-a)Uj ZpeG{J}
[0030]其中,力预测用户i对项目j的评分,其中UjVj为使用社会化推荐模型预测得到的用户对项目的评分,为用户对项目所属分类的预测评分,α是线性加权系数,表示社会化推荐得到对项目评分的比重;U、V、Z分别表示用户特征、项目特征和分类特征的参数矩阵,G(J)为项目j所属的分类集合,通过随机梯度下降法求得目标函数的最小值,并得到U、V、Z的参数值;目标函数为:
I m η2 171 I
L(R,C,S,U,KZ) =-R^2+f-^?)2

Z i=l j=lZ z=l k=\
[0031]

Σ sKpjF+^\\u\\i+^\\v\\%^\\z\\i
L i=lqeT(i)LLL
[0032]m为推荐系统中用户的数量,n为项目的数量,I为项目分类的数量,λ。、λτ、入?、入¥和λ ζ为社会化推荐模型的规则化参数,以防模型过度拟合,Il II》力矩阵的Frobenius范数,C为构造的用户对分类的评分,S为用户之间的信任度矩阵,Siq表示用户i对用户q的信任度。石/和Ij为指示函数,/,/表示在用户对项目的评分矩阵R中,用户i是否对项目j有评分,Iij = I表示用户i对项目j有评分,Iij = O表示用户i对项目j没有评分;Iike表示在用户对分类的评分矩阵C中,用户i是否对分类k有评分,Iik= I表示用户i对分类k有评分,Iik = O表示用户i对分类k没有评分。
[0033]与现有技术相比,本方法具有以下的有益效果:
[0034](I)解决数据稀疏问题
[0035]在推荐系统中,用户对项目的评分数据非常稀疏,会导致现有模型产生低质量的推荐,基于分类的社会化推荐方法中,构造了用户对分类的评分矩阵,相对用户对项目的评分来说,由于分类的数量远远小于项目的数量,因此用户对分类的评分比用户对项目的评分稠密,缓解了数据稀疏问题,用户对分类的评分可以用来辅助预测用户对项目的评分。
[0036](2)解决用户冷启动和项目冷启动问题
[0037]基于分类的社会化推荐方法中,考虑了用户好友对项目的评分和用户对分类的评分,可以同时解决用户冷启动问题和项目冷启动问题,当新用户到来时,用户好友对项目的评分可以用来帮忙预测用户对项目的评分,当新项目到来时,用户对项目所属分类的评分可以提高预测用户对项目评分的准确度。
[0038](3)良好的计算时间复杂度
[0039]通过对基于分类的社会化推荐方法的复杂度分析可知,该模型的时间复杂度和用户对项目的评分数量线性相关,因此在使用训练数据建模的时候不需要花费很长的时间。

【专利附图】

【附图说明】
[0040]图1是基于分类的社会化推荐模型;
[0041]图2是基于分类的推荐系统模型的训练过程;
[0042]图3是使用随机梯度法求模型参数的过程。

【具体实施方式】
[0043]为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。此外,下面所描述的本发明各个实施方式中所涉及到的技术特征只要彼此之间未构成冲突就可以相互组合。
[0044]推荐系统过程整体可以分为三步:(I)把原始数据做预处理,按照一定的比例把原始数据分为两部分,一部分为训练集,一部分为测试集。(2)使用训练集进行迭代计算训练模型,从而得到推荐模型。(3)用得到的模型预测测试集的数据,并计算预测数据和真实测试集数据的误差。
[0045]基于分类的社会化推荐方法把分类信息整合到社会化推荐中,在预测用户对项目的评分时,把用户对项目所属分类的评分作为一部分线性加权到用户对项目的评分中,但是现有提供推荐服务的方法中没有用户对分类评分的数据,用户对分类的评分信息不能直接从原始数据集中获取。
[0046]这里设计一种算法,该算法可以根据用户的历史评分信息,使用统计学习的方法得到用户对分类的评分信息,假设用户对项目的评分构成矩阵R,用户对分类评分构成矩阵C’,Rij为用户i对项目j的评分,Iu为指示函数,表示用户i是否对项目j有评分,Iij =I表示用户i对项目j有评分,Iij = O表示用户i对项目j没有评分。用户对项目的评分矩阵R是已知的,而用户对分类的评分矩阵C是未知的,现在要通过用户对项目的评分来构造用户对分类的矩阵C,设Cik为用户i对分类k的评分,那么有:_7] ⑴

k^G(j)
[0048]其中F(i)是用户i历史评分的项目集合,G(j)是项目j所属的分类集合,使用公式(I)和用户对项目的评分矩阵R,可以得到用户对分类的评分矩阵C。在公式中,考虑了一个项目属于多个分类的情况,对于属于多个分类的项目,在计算对分类评分时,需要给项目所属的每一个分类评分进行相加。用户对项目的评分矩阵R中,由于用户对项目的评分的数量服从Zipf分布,数据的分布不均衡,用户可能对属于某一个分类的项目评分数量比较多,而对属于另外一个分类的项目评分数量很少。这样会导致在矩阵C中,存在一些元素值很小为I甚至是0,存在另外一些元素比较大,可能达到几十或者上百。因为矩阵C中的元素为用户对分类的评分,其值在后面预测用户对项目的评分时会使用到,因此取值范围不宜很大,采用公式⑵把矩阵C用户对分类的评分范围限定到O到I之间。rnn.Ql r - Cik -MINk,eGCik,
tk MAX咖Cik’ -MINk^Clk,
[0050]其中MINk,e GCik.为用户i对所有分类评分中的最小值,MAXk- e eCik,是用户i对所有分类评分中的最大值。
[0051]依据用户对项目的评分历史构造了用户对分类的评分矩阵,但是在使用公式(I)和公式(2)得到的用户对分类的评分矩阵中,存在一些元素的值为O。如果用户对于某个分类中的任何一个项目没有评分,那么用户对该分类的评分为O。由于用户对项目评分数据非常稀疏,在构造的用户对分类的评分矩阵C中,用户对分类评分为O的情况比较常见。在使用用户分类评分矩阵时,不能因为矩阵中元素值为O就认为用户对该分类的评分为O。这里采用矩阵分解的方法来重构用户分类评分矩阵,通过矩阵分解来得到用户对所有分类的评分。
[0052]分解用户对分类的评分矩阵和分解用户对项目的评分矩阵的方法相似,首先采用机器学习的方法求得用户的潜在因子向量和分类的潜在因子向量,然后使用代表用户的特征向量和代表分类的特征向量来计算用户对分类的评分。
[0053]假设C e Rmxl为用户对分类的评分矩阵,矩阵中有m位用户和I种分类,U e Rdxm和Z e Rdxl分别表示用户的潜在因子矩阵和分类的潜在因子矩阵,其中d表示潜在因子的数量,列向量仏表示用户i兴趣偏好的向量,Zk为分类k的特征向量,Cik为用户i对分类k的评分,可以由Ui和Zk的内积计算得到。因此,用户对分类的评分矩阵C关于用户特征U和分类特征Z的条件分布如下所示:
[0054]p(CIυ,Ζ,σΙ) = ΠΠΕΜ?, IUjzk,al)f(3)


/=1 k=\
[0055]其中σ /为方差,IikC是指示函数,在用户对分类的评分矩阵中,当Cik为O时,Iikc也为0,当Cik的值不为O时,Iikc的值为I。同时为了防止过度拟合的问题,对用户矩阵U和分类矩阵Z都使用均值为O方差为σ 2的高斯分布。因此有:
[0056]p(U\σΙ)^γ\Ν (Ui I O, σ卜 I)(4)


i=l
[0057]ρ{Ζ\σΙ)^ Y\N(Zk\0,all)(5)

k=\
[0058]同理,由贝叶斯公式,可以得到用户矩阵U和分类矩阵Z关于评分矩阵C的后验分布:
[0059]
p{U,Z Ip(C\b\Z,al)p(U | σ;;)ρ(Ζ | σ})
m I^ mI(6)
= Itn[喝 Ι"/'Κ)]/Λ χΠ "(":, |ασ^)χΠ?(Ζλ |0,σ|?)
i=l k=\ i=\ k=\
[0060]对式(6)求对数进行化简,然后去掉和参数U、Z无关的选项后得到下面的目标函数。
[0061]Ζ(€,α,Ζ) = Ιχχ/^,-^Ζ^2+^||?/|||+^||Ζ||(7)
L i=\ k=l Z Z
[0062]其中入?和λζ为规则化参数,等式(7)的最小值可以采用随机梯度下降法计算得至IJ,从而可以获得表示用户兴趣特征的潜在因子矩阵U和表示分类特征的潜在因子矩阵Ζ。
[0063]使用表示用户特征的潜在向量和表示分类特征的潜在向量做内积,可以得到用户对分类的评分,进而可以获得用户对所有任何分类的评分。
[0064]在获得用户对分类的评分之后,可以把该评分线性加权到用户对项目的评分中,得到基于分类的社会化推荐模型,如图1所示,预测用户对项目的评分由两部分构成,一个是由社会化推荐模型预测的用户对项目的评分,在图中由R2表示,另外一个是用户对项目所属分类的评分,在图中由Rl表示。预测用户对项目的评分由Rl和R2的线性加权得到。因此有:
[0065]Rij = aUf Vj + (1-a)Uj Zp&G{j)(8)
[0066]其中G(j)是项目j所属的分类集合,α是线性加权系数,在基于分类的社会化矩阵分解模型中,用户潜在因子矩阵U,项目潜在因子矩阵V和项目分类的潜在因子矩阵Z关于用户对项目评分矩阵R和用户对分类的评分矩阵C的后验分布的对数为:
[0067]


I m η

Z(JR /=1 j=l
I m____I m I
—肌—Σ WT(ur Σ
ZCTj1 (=\q^T(i)qeT(i)? k=\
1 mI ^I LI m η
-Λ? vFr7KT ζ【?((? σ
Zdu i=i^ov j=\ZazJc=Iζ /=ι ‘/=ι
m II
+(艺乞 /fplna-)- (md In σ}, +nd In σ? +Id In σ})+ F
i=\ k=\ 2.
[0068]其中,σ 2为方差,S为用户的信任矩阵,Siq为用户i对用户q的信任度,T⑴为用户i信任的用户集合,m为推荐系统中用户的数量,η为项目的数量,I为项目分类的数量,d为潜在因子的数量,F和参数U、V、Z无关,是一个常数,根据极大似然估计,要计算合适的参数U、V和Z使得目标函数值最大,对等式(9)做一些简单的数学变换就可以得到,它的最大值和等式(10)的最小值等价。
I m η2 m I
L{R,C,S,U,V,Z) = |ΣΣ 抛-爲)2+#ΣΣ狐 W
ζ=1 j=lζ=1 k=l?Λ 八、
_9](10)
+夺Σ"κ - Σ W&+夺轉+I""I+夺嘛
ζ i=lqeT(i)ZZZ
[0070]其中λ。、λ τ、λ ?、λ v和λ z为模型的规则化参数,以防模型过度拟合,Il Il为矩阵的Frobenius范数。使用梯度下降法可以求得参数U,V和Z使目标函数L达到最小值,梯度下降法的计算公式为:
()!PiJ
[0071]Ui=U1-1O- Vj=Vj-O1- Zk=Zk- O^-(11)
[0072]其中参数ω为梯度下降法中的学习率,如果ω值较大,则算法收敛速度较快,但是计算得到的不够精确,如果ω过小,则收敛速度慢,计算得到的参数要精确一些,它的值在实验时根据经验来设定,同时在每一轮迭代后使其减小I %。目标函数对参数的梯度如公式(12)所示。
ρτ η
奋=-爲)《 +?)“))
uu i j=l
+mu - Σ sU1Uq)-^ Σ SqAUq- X sqnuj
q^T(i)抓 er(q)weT(q)
+KiL4(cik-ufzk){-zk)+xuul
[0073]m W(12)
盖=2^(?-鳥)(肩匕
j U
f)T m n
昼=ΣΣ挪-调肩)
uz^k i=^ /=1

m
+K^iCik-UJ ZkM-Ui)+X7Zk
i=\
[0074]如图2所示,为本发明一实施例中利用本发明推荐方法进行用户评分的示意图。首先对原始数据做数据提取和预处理,在数据提取中需要把原始数据分为训练集和测试集,对原始数据做预处理,构建用户之间的信任度矩阵,同时提取项目和分类的对应关系;然后对模型进行迭代训练,在迭代训练过程中,需要对用户特征、项目特征和分类特征矩阵进行初始化,构建用户对分类的评分;再次使用构建好的模型预测用户对项目和分类的评分;最后,计算预测评分和用户对项目真实评分的误差。
[0075]使用随机梯度下降法求目标函数的最小值和参数的过程如图3所示,详具体过程如下:
[0076](I)初始化用户特征矩阵U、项目特征矩阵V、分类特征矩阵G ;
[0077](2)设置迭代计数器i = I ;
[0078](3)判断i是否小于初始设定的迭代次数,如果是则转入步骤(4),否则结束算法;
[0079](4)遍历所有用户评分信息;
[0080](5)用户是否遍历结束,如果是则转入步骤(6),否则转入步骤(7);
[0081](6)迭代计数器i加1,然后返回步骤(3);
[0082](7)遍历单个用户所有评分的项目;
[0083](8)用户评分的项目是否遍历完毕,如果是则返回步骤(5),否则转入步骤(9);
[0084](9)读取项目所属的分类信息;
[0085](10)计算用户对项目的预测评分,用户对分类的预测评分,并计算预测评分和真实评分的差值;
[0086](11)设置特征计数器j = O ;
[0087](12)判断特征计数器j是否小于矩阵的潜在特征数量,如果是,则转入步骤(13),否则返回⑶;
[0088](13)读取用户、项目和分类在第j维度的值;
[0089](14)按照公式(11)更新参数U, V, Z ;
[0090](15)特征计数器j = j+1,返回步骤(12) ο
[0091]为了计算模型的预测准确度,使用平均绝对误差(MAE)和均方根误差(RMSE),设rui表示用户u对项目i的实际评分,表示使用推荐系统预测的用户u对项目i的评分,那么平均绝对误差MAE可以定义为:
[0092]MAE = Z⑷X I Γ,α~—

I K, I
[0093]均方根误差RMSE可以定义为:
[0094]RMSE =卜fm)
V IR-1
[0095]其中Rtest表示测试集合,|Rt」为测试集合中用户对项目评分的数量,由MAE和RMSE计算公式可知,RMSE对预测评分偏差大的情况增加了惩罚,因此更加能够反映推荐系统的预测性能。
[0096]下面分析基于分类的社会化推荐方法的时间复杂度,模型的开销主要是计算目标函数L及其梯度。假设项目评分矩阵中非零值的数量为Pk,分类评分矩阵中非零值的数量为P。,平均每个用户信任好友的数量为F,平均每个项目所属的分类数量为X,d为用户和项目的潜在因子数量。因为总的分类数量远远小于项目数量,所以PC< PK。每个项目所属的分类数量小于每个用户信任的好友数,所以有/? > V。
[0097]目标函数L如公式(10)所示,在一次迭代计算过程中,计算其时间复杂度的方法为计算各项复杂度之和,即f>ltdb(\+x) + f>(.d + mdb + md + nd + Id,进行化简之后,计算目标函数L的计算复杂度为(KPRdbx + mdb + p( cl)。
[0098]计算请、筹和j的方法如公式(11)所不,其复杂度的计算方法也是计算公式中各项复杂度之和,计算十的时间为ρΛ(?/ + Χ?/)Κ + /^/,化简后可以得到计算梯度鲁的时间复杂度为亦X + A A,同理计算暴和鲁的时间复杂度为0、ρ?和0{pRdb+pLd),所以一次迭代计算的复杂度为0{pRdL.+ pcd、。从分析可知,算法的复杂度和用户评分的项目数量线性相关。
[0099]本领域的技术人员容易理解,以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。
【权利要求】
1.一种基于分类的社会化推荐方法,其特征在于,所述方法包括如下步骤: (1)根据用户对项目的评分数据和项目的分类信息,构造初始用户分类矩阵; (2)对初始用户分类矩阵做归一化处理,并使用矩阵分解方法重构用户分类矩阵; (3)由用户的好友信息构造用户好友之间的信任度; (4)根据用户分类矩阵中用户对项目所属分类的评分、使用社会化模型预测得到的用户对项目的评分以及用户好友之间的信任度,使用随机梯度下降法学习得到模型的参数,从而预测用户对项目的最终评分。
2.根据权利要求1所述的方法,其特征在于,所述步骤(I)包括以下子步骤: (1-1)用O值初始化初始用户分类矩阵,初始用户分类矩阵中的元素C’ 11;表示用户i对分类k的评分; (1-2)读取用户对项目的评分记录; (1-3)判断用户对项目的评分记录是否已经遍历完毕,如果没有遍历完毕转入步骤(1-4),如果遍历完则结束; (1-4)读取用户对项目的评分Ru以及项目对应的分类信息k,Ru为用户i对项目j的评分,k为项目j所属分类; (1-5)把初始用户分类矩阵中对应用户和分类位置上的元素加Ru,然后转入步骤(1-3)。
3.根据权利要求1或2所述的方法,其特征在于,所述步骤(2)中对初始用户分类矩阵做归一化处理,具体包括: (2-1)读取每个用户对分类的评分C’ ik,选出评分中的最大值MAXk,eeC’ik,和最小值MINk’eGC,ik’ ;

C ’ — MIN C, (2-2)使用公式C, = ik _ZGmrik'r'对每个分类的评分C’ik做归一化处理,

M九^ik, MlJSk'&GL ik'其中G为所有分类的集合。
4.根据权利要求1或2所述的方法,其特征在于,所述步骤⑵中使用矩阵分解方法重构用户分类矩阵具体为,求取公式L(C,U,Z) = ^ il/放,-%切+年"^/"!+年丨丨^的最小值,获得表示用户
L /=1 k=l L L兴趣特征的潜在因子矩阵U和表示分类特征的潜在因子矩阵Z,使用表示用户特征的潜在向量和表示分类特征的潜在向量做内积,得到用户对分类的评分,进而获得用户对所有任何分类的评分; 其中,C e Rmxl为用户对分类的评分矩阵,矩阵中有m位用户和I种分类,U e Rdxi?和Z e Rdxl分别表示用户的潜在因子矩阵和分类的潜在因子矩阵,其中d表示潜在因子的数量,列向量Ui表示用户i兴趣偏好的向量,Zk为分类k的特征向量,用户对项目的评分构成矩阵R,用户对分类评分构成矩阵C,Rij为用户i对项目j的评分,Iu为指示函数,表示用户i是否对项目j有评分,Iij = I表示用户i对项目j有评分,Iij = O表示用户i对项目j没有评分,入?和λζ为规则化参数,以防过度拟合,I1.也为矩阵的Frobenius范数。
5.根据权利要求1或2所述的方法,其特征在于,所述步骤(3)由用户的好友信息构造用户好友之间的信任度,具体计算公式为: s inQ)-J out(\) + in(j) 其中Su为用户i对用户j的信任程度,in(j)为信任j的用户数量,out(i)为用户i信任的用户数量。
6.根据权利要求1或2所述的方法,其特征在于,所述步骤(4)中预测用户对项目的最终评分,具体根据下式计算:

RiraUjVJ+{l-a)UjZpsGU)其中为预测用户i对项目j的评分,V fVj为使用社会化推荐模型预测得到的用户对项目的评分, Ui ^pGO(j) 为用户对项目所属分类的预测评分,α是线性加权系数,表示社会化推荐得到对项目评分的比重;U、V、Z分别表示用户特征、项目特征和分类特征的参数矩阵,G(j)为项目j所属的分类集合,通过随机梯度下降法求得目标函数的最小值,并得到U、V、Z的参数值;目标函数为:
I m η2 m I
L{R,C,S,U,V,Z) =
i=l j=li=\ k=Y +年Σι取-Σ siquq\\i+^\\u\fF+^\\v%+^\\z% 上 i=lqeT(i)λIλ m为推荐系统中用户的数量,η为项目的数量,I为项目分类的数量,λ。、λ τ、λ ?、λ ν和λ ζ为社会化推荐模型的规则化参数,以防模型过度拟合,Il.|&为矩阵的Frobenius范数,C为构造的用户对分类的评分,S为用户之间的信任度矩阵,Siq表示用户i对用户q的信任度,Ij和//为指示函数,Ji/表示在用户对项目的评分矩阵R中,用户i是否对项目j有评分,Iij = I表示用户i对项目j有评分,Iij = O表示用户i对项目j没有评分;//表示在用户对分类的评分矩阵C中,用户i是否对分类k有评分,Iik = I表示用户i对分类k有评分,Iik = O表示用户i对分类k没有评分。
【文档编号】G06F17/30GK104199818SQ201410313139
【公开日】2014年12月10日 申请日期:2014年7月1日 优先权日:2014年7月1日
【发明者】吴松, 金海 , 石宣化, 朱洪青 申请人:华中科技大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1