[发明专利]一种基于联合聚类的矩阵分解推荐方法有效
申请号: | 201710833356.7 | 申请日: | 2017-09-15 |
公开(公告)号: | CN107577786B | 公开(公告)日: | 2019-09-10 |
发明(设计)人: | 刘学亮;杨文娟;吴乐;汪萌;洪日昌 | 申请(专利权)人: | 合肥工业大学 |
主分类号: | G06F16/9535 | 分类号: | G06F16/9535;G06F16/9536;G06F16/35;G06F17/16 |
代理公司: | 安徽省合肥新安专利代理有限责任公司 34101 | 代理人: | 陆丽莉;何梅生 |
地址: | 230009 安*** | 国省代码: | 安徽;34 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 基于 联合 矩阵 分解 推荐 方法 | ||
1.一种基于联合聚类的矩阵分解推荐方法,其特征按如下步骤进行:
步骤1、构造用户-项目评分矩阵R
令U表示用户集,且U={u1,u2,...,ui,...,uM},ui表示第i个用户,1≤i≤M,M表示用户总数;令V表示项目集,且V={v1,v2,...,vj,...,vN},vj表示第j个项目,1≤j≤N,N表示项目总数;令rij表示第i个用户ui对第j个项目vj的评分值,则用户-项目评分矩阵为R={rij}M×N;
步骤2、用户-项目评分矩阵R通过联合聚类分成若干个类别
步骤2.1、设定类别总数为K,随机初始化第i个用户ui对第j个项目vj的评分值rij属于第k个类别Ck的概率p(k|ui,vj,rij),设定迭代阈值为τmax,当前迭代次数为τ,并初始化τ=1;
步骤2.2、利用式(1)、式(2)、式(3)分别计算第τ次迭代时第i个用户ui属于第k个类别Ck的概率(p(k|ui))τ,第τ次迭代时第j个项目vj属于第k个类别Ck的概率(p(k|vj))τ,第τ次迭代时第k个类别Ck中出现评分值rij的概率(p(rij|k))τ:
式(1)中,V(ui)表示第i个用户ui评过分的所有项目集合,假设项目集合V(ui)中的项目个数为A,则vf表示项目集合V(ui)中的第f个项目,且f∈{1,2,...,A},rif表示第i个用户ui对第f个项目vf的评分值,(p(k|ui,vf,rif))τ表示第τ次迭代时第i个用户ui对第f个项目vf的评分rif属于第k个类别Ck的概率;
式(2)中,U(vj)表示给第j个项目vj评过分的所有用户的集合,假设用户集合U(vj)中的用户个数为B,则uq表示用户集合U(vj)中的第q个用户,且q∈{1,2,...,B},rqj表示第q个用户uq对第j个项目vj的评分值,(p(k|uq,vj,rqj))τ表示第τ次迭代时第q个用户uq对第j个项目vj的评分值rqj属于第k个类别Ck的概率;
式(3)中,rqf表示第q个用户uq对第f个项目vf的评分值,(p(k|uq,vf,rqf))τ表示第τ次迭代时第q个用户uq对第f个项目vf的评分值rqf属于第k个类别Ck的概率;
步骤2.3、利用式(4)计算第τ次迭代的第i个用户ui对第j个项目vj的评分rij属于第k个类别Ck的概率(p(k|ui,vj,rij))τ:
式(4)中,a,b,c是为了防止分母为零而设置的超参数;
步骤2.4、将τ+1赋值给τ,并判断τ≤τmax是否成立,若成立,则返回步骤2.2执行;否则,表示获得最终的第i个用户ui对第j个项目vj的评分rij属于第k个类别Ck的概率p(k|ui,vj,rij);
步骤2.5、重复步骤2.2-步骤2.4,从而获得最终的第i个用户ui对第j个项目vj的评分rij属于K个类别的概率,并将第i个用户ui、第j个项目vj及其评分rij划分到概率最大的类别中;
步骤2.6、重复步骤2.2-步骤2.5,从而将所有用户、所有项目及其评分划分到概率最大的类别中,进而将用户集U、项目集V以及用户-项目评分矩阵R划分成K个类别,其中,K个类别中存在有空集;
步骤3、利用概率矩阵分解的方法对第k个类别Ck中的未知评分进行预测和推荐;
步骤3.1、计算相似度
根据余弦相似度计算出用户与用户间的相似度矩阵,令s(ui,ue)表示第i个用户ui与第e个用户ue间的相似度,并有1≤i≤M,1≤e≤M,则用户相似度矩阵记为S={s(ui,ue)}M×M;同理计算出项目与项目间的相似度矩阵,令z(vj,vp)表示第j个项目vj与第p个项目vp间的相似度,并有1≤j≤N,1≤p≤N,则项目相似度矩阵记为Z={z(vj,vp)}N×N;
步骤3.2、分别根据式(5)和式(6)计算第k个类别Ck中第i个用户ui的特征向量和第k个类别Ck中第j个项目vj的特征向量
式(5)中,J表示单位向量;表示第k个类别Ck中第i个用户ui的特征向量所服从正态分布的方差;
式(6)中,表示第k个类别Ck中第j个项目vj的特征向量所服从正态分布的方差;
步骤3.3、根据式(7)计算第k个类别Ck的先验分布p(Rk|Qk,Lk,σ2):
式(7)中,Rk表示第k个类别Ck中的评分矩阵;Lk表示第k个类别Ck中所有项目的特征向量所构成的项目特征矩阵;Qk表示第k个类别Ck中所有用户的特征向量所构成的用户特征矩阵;σ2为第k个类别Ck中的评分矩阵Rk所服从正态分布的方差,表示第k个类别Ck中第i个用户对第j个项目的评分;ωij为指标函数,当第i个用户ui评论过第j个项目vj时,ωij=1,否则ωij=0;表示第k个类别中的第i个用户对第j个项目的评分服从均值为方差为σ2的正态分布;
步骤3.4、建立如式(8)所示的误差平方和目标函数Ek:
式(8)中,xk表示第k个类别Ck共有的用户总数;yk表示第k个类别Ck共有的项目总数;λQ表示第e个用户ue对第i个用户ui在目标函数上的影响因子,λL表示第p个项目vp对第j个项目vj在目标函数上的影响因子,且有F表示Frobenius范数;
步骤3.4、设定迭代阈值μmax,当前迭代次数为μ,并初始化μ=1;
步骤3.5、随机初始化用户特征矩阵Qk和项目特征矩阵Lk作为第μ-1次迭代的初始用户特征矩阵(Qk)μ-1和项目特征矩阵(Lk)μ-1:
步骤3.6、利用式(9)和式(10)分别获得第μ次迭代的第k个类别Ck中第i个用户ui的特征向量和第k个类别Ck中第j个项目vj的特征向量
式(9)中,表示第k个类别Ck中第i个用户ui的特征向量的正则化项,并且服从均值为零,方差为的正态分布;
式(10)中,表示第k个类别Ck中第j个项目vj的特征向量的正则化项,并且服从均值为零,方差为的正态分布;
步骤3.7、利用式(11)和式(12)分别获得第μ次迭代的第i个用户ui的特征向量的梯度以及第μ次迭代的第j个项目vj的特征向量的梯度
步骤3.8、将μ+1赋值给μ,并判断μ≤μmax是否成立,若成立,则重复步骤3.6执行;否则,表示获得最终的第k个类别Ck中的第i个用户ui的特征向量以及第k个类别Ck中的第j个项目vj的特征向量从而获得第k个类别Ck中的所有用户最终的用户特征矩阵Qk和第k个类别Ck中的所有项目最终的项目特征矩阵Lk;
步骤3.9、利用式(13)获得第k个类别Ck的预测评分矩阵Rk,从而得到K个类别预测评分矩阵:
Rk=(Qk)TLk(13)
步骤3.10、根据K个类别预测评分矩阵,将满足评分要求的项目推荐给相应用户。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于合肥工业大学,未经合肥工业大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201710833356.7/1.html,转载请声明来源钻瓜专利网。