CN107577786A - 一种基于联合聚类的矩阵分解推荐方法 - Google Patents
一种基于联合聚类的矩阵分解推荐方法 Download PDFInfo
- Publication number
- CN107577786A CN107577786A CN201710833356.7A CN201710833356A CN107577786A CN 107577786 A CN107577786 A CN 107577786A CN 201710833356 A CN201710833356 A CN 201710833356A CN 107577786 A CN107577786 A CN 107577786A
- Authority
- CN
- China
- Prior art keywords
- mrow
- msub
- msup
- msubsup
- user
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Landscapes
- Other Investigation Or Analysis Of Materials By Electrical Means (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
Abstract
本发明公开了一种基于联合聚类的矩阵分解推荐方法,包括:1构造用户‑项目评分矩阵;2用户‑项目评分矩阵通过联合聚类分成若干个类别;3针对聚类后的类别,利用概率矩阵分解的方法对每个类别的未知评分并行地进行预测并根据预测的评分进行推荐。本发明能够充分利用聚类内部间的紧密相关性和概率矩阵分解算法的高精度,对于信息过载时代的大数据处理问题,能够在保证不错精度的同时以较快的速度进行推荐。
Description
技术领域
本发明涉及个性化推荐领域,具体的说是一种基于联合聚类的矩阵分解推荐方法。
背景技术
随着网络技术的发展,使得用户在海量信息中失去方向,很难从中选出自己真正需要的信息,反而让信息的使用效率降低了,这就是所谓的信息过载问题。为解决信息过载问题,推荐***应运而生。推荐***是根据用户的信息需求,为用户推荐感兴趣物品的过程,这是一种个性化推荐过程。个性化推荐***定位于目标用户的兴趣,不需要用户输入关键词,从用户先前的一些行为,比如浏览记录、加入购物车情况以及购买记录等,来主动推荐一些用户可能感兴趣的东西,帮助用户在信息的海洋中自由遨游。
目前存在的推荐算法中,协同过滤算法是各大电商应用最广泛的算法之一。协同过滤算法通过对用户历史行为数据的挖掘发现用户的偏好,从而推荐相似的商品。虽然该类算法能保持很好的精度,但还是存在时间复杂度较高的问题。
目前存在的协同过滤算法已经可以让推荐精度达到较高的水平,但是想在此基础上进行时间效率的提高,对目前存在的推荐算法而言仍是待解决的问题。所以,如何在保持较高精度的前提下,提高协同过滤算法的时间效率已经是个大问题。
发明内容
本发明是为了解决现有协同过滤算法的时效较低问题,提出的一种基于联合聚类的矩阵分解推荐方法,以期能够充分利用聚类内部间的紧密相关性和概率矩阵分解算法的高精度,对于信息过载时代的大数据处理问题,能够在保证不错精度的同时以较快的速度进行推荐。
本发明为解决技术问题采用如下技术方案:
本发明一种基于联合聚类的矩阵分解推荐方法的特点按如下步骤进行:
步骤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个类别预测评分矩阵,将满足评分要求的项目推荐给相应用户。
与已有技术相比,本发明有益效果体现在:
1、本发明通过在协同过滤算法的预处理中加入联合聚类算法,解决了协同过滤算法存在时效低的问题,有效减小了近邻查询空间,明显降低了计算维度。同时,利用各个类别内部的紧密相连性,保持了较高的精度。
2、本发明利用类别间差别大、互不相关的特点,在评分预测阶段利用了并行计算来对各个类别同时进行评分预测。实验证明这种处理极大地加速了预测的处理进程,彻底解决了时效较低的问题。
3、本发明在步骤2.3利用用户所属类别的概率、项目所属类别的概率以及类别中包含某个评分的概率这三者之间的关系来计算用户、项目和评分共同属于某个类别的概率,这样保证了聚类过程中的可靠性,从而减小了对后续评分预测阶段精度的影响。
4、本发明在步骤3.6加入了用户与用户邻居间及项目与项目邻居间的相似度关系,使得用户与其邻居群具有相似的行为方式,项目与其邻居群具有相似的特征,充分利用这样的邻居关系来保证较高的推荐精度。
具体实施方式
本实施例中,一种基于联合聚类的矩阵分解推荐方法是按如下步骤进行:
步骤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),且第i个用户ui对第j个项目vj的评分值rij属于K个类别的概率总合归一化为1,设定迭代阈值为τmax=20,当前迭代次数为τ,并初始化τ=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是为了防止分母为零而设置的超参数,可根据具体环境设定,这里统一指定为1.0E-7;
步骤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=800,当前迭代次数为μ,并初始化μ=1;
步骤3.5、利用均值为0,方差为的正态分布随机初始化用户特征矩阵Qk和均值为0,方差为的正态分布随机初始化项目特征矩阵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个类别预测评分矩阵,将满足评分要求的项目推荐给相应用户。
实施例:
为了验证本专利中方法的效果,首先搭建实验的运行环境为:Intel Core i5CPU,3.00GHZ主频,Windows10***,12G内存。本文选用了推荐***中常用的MovieLens 10M数据集,对数据集中的每个标签而言,少于5个不同的用户和电影就将其删除;对于每个不同的用户和电影,少于5个不同的标签也被删除。
本文采用均方根误差(RMSE)作为评价标准。
本文选用了四种方法来和本文提出的方法进行效果的对比,分别是概率矩阵分解(PMF)、基于标签的概率矩阵分解(NHPMF)、联合聚类算法(Co-Clustering)和Co-Clustering+PMF四种。具体地,根据实验结果可得出结果如表1所示:
表1不同特征向量维度D下的RMSE值
从表1中各类方法在不同特征维度下的RMSE值的比较可以看出,本文提出的方法基于联合聚类矩阵分解的推荐***加速方法MFCC能保持不错的精度。
表2迭代一次运行时间比较结果(秒)
从表2中的结果可以看出各个方法迭代一次所用的时间对比情况,MFCC的时间效率是最高的,从而证明了本文提出方法的可行性。
Claims (1)
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))τ:
<mrow>
<msup>
<mrow>
<mo>(</mo>
<mi>p</mi>
<mo>(</mo>
<mrow>
<mi>k</mi>
<mo>|</mo>
<msub>
<mi>u</mi>
<mi>i</mi>
</msub>
</mrow>
<mo>)</mo>
<mo>)</mo>
</mrow>
<mi>&tau;</mi>
</msup>
<mo>=</mo>
<mfrac>
<mrow>
<munder>
<mo>&Sigma;</mo>
<mrow>
<msub>
<mi>v</mi>
<mi>f</mi>
</msub>
<mo>&Element;</mo>
<mi>V</mi>
<mrow>
<mo>(</mo>
<msub>
<mi>u</mi>
<mi>i</mi>
</msub>
<mo>)</mo>
</mrow>
</mrow>
</munder>
<msup>
<mrow>
<mo>(</mo>
<mi>p</mi>
<mo>(</mo>
<mrow>
<mi>k</mi>
<mo>|</mo>
<msub>
<mi>u</mi>
<mi>i</mi>
</msub>
<mo>,</mo>
<msub>
<mi>v</mi>
<mi>f</mi>
</msub>
<mo>,</mo>
<msub>
<mi>r</mi>
<mrow>
<mi>i</mi>
<mi>f</mi>
</mrow>
</msub>
</mrow>
<mo>)</mo>
<mo>)</mo>
</mrow>
<mi>&tau;</mi>
</msup>
</mrow>
<mrow>
<munderover>
<mo>&Sigma;</mo>
<mrow>
<mi>k</mi>
<mo>=</mo>
<mn>1</mn>
</mrow>
<mi>K</mi>
</munderover>
<munder>
<mo>&Sigma;</mo>
<mrow>
<msub>
<mi>v</mi>
<mi>f</mi>
</msub>
<mo>&Element;</mo>
<mi>V</mi>
<mrow>
<mo>(</mo>
<msub>
<mi>u</mi>
<mi>i</mi>
</msub>
<mo>)</mo>
</mrow>
</mrow>
</munder>
<msup>
<mrow>
<mo>(</mo>
<mi>p</mi>
<mo>(</mo>
<mrow>
<mi>k</mi>
<mo>|</mo>
<msub>
<mi>u</mi>
<mi>i</mi>
</msub>
<mo>,</mo>
<msub>
<mi>v</mi>
<mi>f</mi>
</msub>
<mo>,</mo>
<msub>
<mi>r</mi>
<mrow>
<mi>i</mi>
<mi>f</mi>
</mrow>
</msub>
</mrow>
<mo>)</mo>
<mo>)</mo>
</mrow>
<mi>&tau;</mi>
</msup>
</mrow>
</mfrac>
<mo>-</mo>
<mo>-</mo>
<mo>-</mo>
<mrow>
<mo>(</mo>
<mn>1</mn>
<mo>)</mo>
</mrow>
</mrow>
<mrow>
<msup>
<mrow>
<mo>(</mo>
<mi>p</mi>
<mo>(</mo>
<mrow>
<mi>k</mi>
<mo>|</mo>
<msub>
<mi>v</mi>
<mi>j</mi>
</msub>
</mrow>
<mo>)</mo>
<mo>)</mo>
</mrow>
<mi>&tau;</mi>
</msup>
<mo>=</mo>
<mfrac>
<mrow>
<munder>
<mo>&Sigma;</mo>
<mrow>
<msub>
<mi>u</mi>
<mi>q</mi>
</msub>
<mo>&Element;</mo>
<mi>U</mi>
<mrow>
<mo>(</mo>
<msub>
<mi>v</mi>
<mi>j</mi>
</msub>
<mo>)</mo>
</mrow>
</mrow>
</munder>
<msup>
<mrow>
<mo>(</mo>
<mi>p</mi>
<mo>(</mo>
<mrow>
<mi>k</mi>
<mo>|</mo>
<msub>
<mi>u</mi>
<mi>q</mi>
</msub>
<mo>,</mo>
<msub>
<mi>v</mi>
<mi>j</mi>
</msub>
<mo>,</mo>
<msub>
<mi>r</mi>
<mrow>
<mi>q</mi>
<mi>j</mi>
</mrow>
</msub>
</mrow>
<mo>)</mo>
<mo>)</mo>
</mrow>
<mi>&tau;</mi>
</msup>
</mrow>
<mrow>
<munderover>
<mo>&Sigma;</mo>
<mrow>
<mi>k</mi>
<mo>=</mo>
<mn>1</mn>
</mrow>
<mi>K</mi>
</munderover>
<munder>
<mo>&Sigma;</mo>
<mrow>
<msub>
<mi>u</mi>
<mi>q</mi>
</msub>
<mo>&Element;</mo>
<mi>U</mi>
<mrow>
<mo>(</mo>
<msub>
<mi>v</mi>
<mi>j</mi>
</msub>
<mo>)</mo>
</mrow>
</mrow>
</munder>
<msup>
<mrow>
<mo>(</mo>
<mi>p</mi>
<mo>(</mo>
<mrow>
<mi>k</mi>
<mo>|</mo>
<msub>
<mi>u</mi>
<mi>q</mi>
</msub>
<mo>,</mo>
<msub>
<mi>v</mi>
<mi>j</mi>
</msub>
<mo>,</mo>
<msub>
<mi>r</mi>
<mrow>
<mi>q</mi>
<mi>j</mi>
</mrow>
</msub>
</mrow>
<mo>)</mo>
<mo>)</mo>
</mrow>
<mi>&tau;</mi>
</msup>
</mrow>
</mfrac>
<mo>-</mo>
<mo>-</mo>
<mo>-</mo>
<mrow>
<mo>(</mo>
<mn>2</mn>
<mo>)</mo>
</mrow>
</mrow>
<mrow>
<msup>
<mrow>
<mo>(</mo>
<mi>p</mi>
<mo>(</mo>
<mrow>
<msub>
<mi>r</mi>
<mrow>
<mi>i</mi>
<mi>j</mi>
</mrow>
</msub>
<mo>|</mo>
<mi>k</mi>
</mrow>
<mo>)</mo>
<mo>)</mo>
</mrow>
<mi>&tau;</mi>
</msup>
<mo>=</mo>
<mfrac>
<mrow>
<munder>
<mo>&Sigma;</mo>
<mrow>
<msub>
<mi>v</mi>
<mi>f</mi>
</msub>
<mo>&Element;</mo>
<mi>V</mi>
<mrow>
<mo>(</mo>
<msub>
<mi>u</mi>
<mi>i</mi>
</msub>
<mo>)</mo>
</mrow>
<mo>,</mo>
<msub>
<mi>u</mi>
<mi>q</mi>
</msub>
<mo>&Element;</mo>
<mi>U</mi>
<mrow>
<mo>(</mo>
<msub>
<mi>v</mi>
<mi>j</mi>
</msub>
<mo>)</mo>
</mrow>
</mrow>
</munder>
<msup>
<mrow>
<mo>(</mo>
<mi>p</mi>
<mo>(</mo>
<mrow>
<mi>k</mi>
<mo>|</mo>
<msub>
<mi>u</mi>
<mi>q</mi>
</msub>
<mo>,</mo>
<msub>
<mi>v</mi>
<mi>f</mi>
</msub>
<mo>,</mo>
<msub>
<mi>r</mi>
<mrow>
<mi>q</mi>
<mi>f</mi>
</mrow>
</msub>
</mrow>
<mo>)</mo>
<mo>)</mo>
</mrow>
<mi>&tau;</mi>
</msup>
</mrow>
<mrow>
<munderover>
<mo>&Sigma;</mo>
<mrow>
<mi>q</mi>
<mo>=</mo>
<mn>1</mn>
</mrow>
<mi>B</mi>
</munderover>
<munderover>
<mo>&Sigma;</mo>
<mrow>
<mi>f</mi>
<mo>=</mo>
<mn>1</mn>
</mrow>
<mi>A</mi>
</munderover>
<munderover>
<mo>&Sigma;</mo>
<mrow>
<mi>k</mi>
<mo>=</mo>
<mn>1</mn>
</mrow>
<mi>K</mi>
</munderover>
<msup>
<mrow>
<mo>(</mo>
<mi>p</mi>
<mo>(</mo>
<mrow>
<mi>k</mi>
<mo>|</mo>
<msub>
<mi>u</mi>
<mi>q</mi>
</msub>
<mo>,</mo>
<msub>
<mi>v</mi>
<mi>f</mi>
</msub>
<mo>,</mo>
<msub>
<mi>r</mi>
<mrow>
<mi>q</mi>
<mi>f</mi>
</mrow>
</msub>
</mrow>
<mo>)</mo>
<mo>)</mo>
</mrow>
<mi>&tau;</mi>
</msup>
</mrow>
</mfrac>
<mo>-</mo>
<mo>-</mo>
<mo>-</mo>
<mrow>
<mo>(</mo>
<mn>3</mn>
<mo>)</mo>
</mrow>
</mrow>
式(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))τ:
<mrow>
<msup>
<mrow>
<mo>(</mo>
<mi>p</mi>
<mo>(</mo>
<mrow>
<mi>k</mi>
<mo>|</mo>
<msub>
<mi>u</mi>
<mi>i</mi>
</msub>
<mo>,</mo>
<msub>
<mi>v</mi>
<mi>j</mi>
</msub>
<mo>,</mo>
<msub>
<mi>r</mi>
<mrow>
<mi>i</mi>
<mi>j</mi>
</mrow>
</msub>
</mrow>
<mo>)</mo>
<mo>)</mo>
</mrow>
<mi>&tau;</mi>
</msup>
<mo>=</mo>
<mfrac>
<mrow>
<mo>&lsqb;</mo>
<msup>
<mrow>
<mo>(</mo>
<mi>p</mi>
<mo>(</mo>
<mrow>
<mi>k</mi>
<mo>|</mo>
<msub>
<mi>u</mi>
<mi>i</mi>
</msub>
</mrow>
<mo>)</mo>
<mo>)</mo>
</mrow>
<mi>&tau;</mi>
</msup>
<mo>+</mo>
<mi>a</mi>
<mo>&rsqb;</mo>
<mo>&times;</mo>
<mo>&lsqb;</mo>
<msup>
<mrow>
<mo>(</mo>
<mi>p</mi>
<mo>(</mo>
<mrow>
<mi>k</mi>
<mo>|</mo>
<msub>
<mi>v</mi>
<mi>j</mi>
</msub>
</mrow>
<mo>)</mo>
<mo>)</mo>
</mrow>
<mi>&tau;</mi>
</msup>
<mo>+</mo>
<mi>b</mi>
<mo>&rsqb;</mo>
<mo>&times;</mo>
<mo>&lsqb;</mo>
<msup>
<mrow>
<mo>(</mo>
<mi>p</mi>
<mo>(</mo>
<mrow>
<msub>
<mi>r</mi>
<mrow>
<mi>i</mi>
<mi>j</mi>
</mrow>
</msub>
<mo>|</mo>
<mi>k</mi>
</mrow>
<mo>)</mo>
<mo>)</mo>
</mrow>
<mi>&tau;</mi>
</msup>
<mo>+</mo>
<mi>c</mi>
<mo>&rsqb;</mo>
</mrow>
<mrow>
<munderover>
<mo>&Sigma;</mo>
<mrow>
<mi>k</mi>
<mo>=</mo>
<mn>1</mn>
</mrow>
<mi>K</mi>
</munderover>
<mo>&lsqb;</mo>
<msup>
<mrow>
<mo>(</mo>
<mi>p</mi>
<mo>(</mo>
<mrow>
<mi>k</mi>
<mo>|</mo>
<msub>
<mi>u</mi>
<mi>i</mi>
</msub>
</mrow>
<mo>)</mo>
<mo>)</mo>
</mrow>
<mi>&tau;</mi>
</msup>
<mo>+</mo>
<mi>a</mi>
<mo>&rsqb;</mo>
<mo>&times;</mo>
<mo>&lsqb;</mo>
<msup>
<mrow>
<mo>(</mo>
<mi>p</mi>
<mo>(</mo>
<mrow>
<mi>k</mi>
<mo>|</mo>
<msub>
<mi>v</mi>
<mi>j</mi>
</msub>
</mrow>
<mo>)</mo>
<mo>)</mo>
</mrow>
<mi>&tau;</mi>
</msup>
<mo>+</mo>
<mi>b</mi>
<mo>&rsqb;</mo>
<mo>&times;</mo>
<mo>&lsqb;</mo>
<msup>
<mrow>
<mo>(</mo>
<mi>p</mi>
<mo>(</mo>
<mrow>
<msub>
<mi>r</mi>
<mrow>
<mi>i</mi>
<mi>j</mi>
</mrow>
</msub>
<mo>|</mo>
<mi>k</mi>
</mrow>
<mo>)</mo>
<mo>)</mo>
</mrow>
<mi>&tau;</mi>
</msup>
<mo>+</mo>
<mi>c</mi>
<mo>&rsqb;</mo>
</mrow>
</mfrac>
<mo>-</mo>
<mo>-</mo>
<mo>-</mo>
<mrow>
<mo>(</mo>
<mn>4</mn>
<mo>)</mo>
</mrow>
</mrow>
式(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的特征向量
<mrow>
<mi>p</mi>
<mrow>
<mo>(</mo>
<msubsup>
<mi>Q</mi>
<mi>i</mi>
<mi>k</mi>
</msubsup>
<mo>|</mo>
<msubsup>
<mi>&sigma;</mi>
<mi>Q</mi>
<mn>2</mn>
</msubsup>
<mo>)</mo>
</mrow>
<mo>=</mo>
<munderover>
<mo>&Pi;</mo>
<mrow>
<mi>i</mi>
<mo>=</mo>
<mn>1</mn>
</mrow>
<msup>
<mi>x</mi>
<mi>K</mi>
</msup>
</munderover>
<mi>N</mi>
<mrow>
<mo>(</mo>
<msubsup>
<mi>Q</mi>
<mi>i</mi>
<mi>k</mi>
</msubsup>
<mo>|</mo>
<mn>0</mn>
<mo>,</mo>
<msubsup>
<mi>&sigma;</mi>
<mi>Q</mi>
<mn>2</mn>
</msubsup>
<mi>J</mi>
<mo>)</mo>
</mrow>
<mo>-</mo>
<mo>-</mo>
<mo>-</mo>
<mrow>
<mo>(</mo>
<mn>5</mn>
<mo>)</mo>
</mrow>
</mrow>
式(5)中,J表示单位向量;表示第k个类别Ck中第i个用户ui的特征向量所服从正态分布的方差;
<mrow>
<mi>p</mi>
<mrow>
<mo>(</mo>
<msubsup>
<mi>L</mi>
<mi>j</mi>
<mi>k</mi>
</msubsup>
<mo>|</mo>
<msubsup>
<mi>&sigma;</mi>
<mi>L</mi>
<mn>2</mn>
</msubsup>
<mo>)</mo>
</mrow>
<mo>=</mo>
<munderover>
<mo>&Pi;</mo>
<mrow>
<mi>i</mi>
<mo>=</mo>
<mn>1</mn>
</mrow>
<msup>
<mi>y</mi>
<mi>K</mi>
</msup>
</munderover>
<mi>N</mi>
<mrow>
<mo>(</mo>
<msubsup>
<mi>L</mi>
<mi>j</mi>
<mi>k</mi>
</msubsup>
<mo>|</mo>
<mn>0</mn>
<mo>,</mo>
<msubsup>
<mi>&sigma;</mi>
<mi>L</mi>
<mn>2</mn>
</msubsup>
<mi>J</mi>
<mo>)</mo>
</mrow>
<mo>-</mo>
<mo>-</mo>
<mo>-</mo>
<mrow>
<mo>(</mo>
<mn>6</mn>
<mo>)</mo>
</mrow>
</mrow>
式(6)中,表示第k个类别Ck中第j个项目vj的特征向量所服从正态分布的方差;
步骤3.3、根据式(7)计算第k个类别Ck的先验分布p(Rk|Qk,Lk,σ2):
<mrow>
<mi>p</mi>
<mrow>
<mo>(</mo>
<msup>
<mi>R</mi>
<mi>k</mi>
</msup>
<mo>|</mo>
<msup>
<mi>Q</mi>
<mi>k</mi>
</msup>
<mo>,</mo>
<msup>
<mi>L</mi>
<mi>k</mi>
</msup>
<mo>,</mo>
<msup>
<mi>&sigma;</mi>
<mn>2</mn>
</msup>
<mo>)</mo>
</mrow>
<mo>=</mo>
<munderover>
<mo>&Pi;</mo>
<mrow>
<mi>i</mi>
<mo>=</mo>
<mn>1</mn>
</mrow>
<msup>
<mi>x</mi>
<mi>k</mi>
</msup>
</munderover>
<munderover>
<mo>&Pi;</mo>
<mrow>
<mi>j</mi>
<mo>=</mo>
<mn>1</mn>
</mrow>
<msup>
<mi>y</mi>
<mi>k</mi>
</msup>
</munderover>
<msup>
<mrow>
<mo>&lsqb;</mo>
<mi>N</mi>
<mrow>
<mo>(</mo>
<msubsup>
<mi>r</mi>
<mrow>
<mi>i</mi>
<mi>j</mi>
</mrow>
<mi>k</mi>
</msubsup>
<mo>|</mo>
<msup>
<mrow>
<mo>(</mo>
<msubsup>
<mi>Q</mi>
<mi>i</mi>
<mi>k</mi>
</msubsup>
<mo>)</mo>
</mrow>
<mi>T</mi>
</msup>
<msubsup>
<mi>L</mi>
<mi>j</mi>
<mi>k</mi>
</msubsup>
<mo>,</mo>
<msup>
<mi>&sigma;</mi>
<mn>2</mn>
</msup>
<mo>)</mo>
</mrow>
<mo>&rsqb;</mo>
</mrow>
<msub>
<mi>&omega;</mi>
<mrow>
<mi>i</mi>
<mi>j</mi>
</mrow>
</msub>
</msup>
<mo>-</mo>
<mo>-</mo>
<mo>-</mo>
<mrow>
<mo>(</mo>
<mn>7</mn>
<mo>)</mo>
</mrow>
</mrow>
式(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:
<mrow>
<mtable>
<mtr>
<mtd>
<mrow>
<msup>
<mi>E</mi>
<mi>k</mi>
</msup>
<mo>=</mo>
<mfrac>
<mn>1</mn>
<mn>2</mn>
</mfrac>
<munderover>
<mo>&Sigma;</mo>
<mrow>
<mi>i</mi>
<mo>=</mo>
<mn>1</mn>
</mrow>
<msup>
<mi>x</mi>
<mi>k</mi>
</msup>
</munderover>
<munderover>
<mo>&Sigma;</mo>
<mrow>
<mi>j</mi>
<mo>=</mo>
<mn>1</mn>
</mrow>
<msup>
<mi>y</mi>
<mi>k</mi>
</msup>
</munderover>
<msub>
<mi>&omega;</mi>
<mrow>
<mi>i</mi>
<mi>j</mi>
</mrow>
</msub>
<msup>
<mrow>
<mo>(</mo>
<msubsup>
<mi>r</mi>
<mrow>
<mi>i</mi>
<mi>j</mi>
</mrow>
<mi>k</mi>
</msubsup>
<mo>-</mo>
<msup>
<mrow>
<mo>(</mo>
<msubsup>
<mi>Q</mi>
<mi>i</mi>
<mi>k</mi>
</msubsup>
<mo>)</mo>
</mrow>
<mi>T</mi>
</msup>
<msubsup>
<mi>L</mi>
<mi>j</mi>
<mi>k</mi>
</msubsup>
<mo>)</mo>
</mrow>
<mn>2</mn>
</msup>
</mrow>
</mtd>
</mtr>
<mtr>
<mtd>
<mrow>
<mo>+</mo>
<mfrac>
<mn>1</mn>
<mn>2</mn>
</mfrac>
<msub>
<mi>&lambda;</mi>
<mi>Q</mi>
</msub>
<munderover>
<mo>&Sigma;</mo>
<mrow>
<mi>i</mi>
<mo>=</mo>
<mn>1</mn>
</mrow>
<msup>
<mi>x</mi>
<mi>k</mi>
</msup>
</munderover>
<mo>|</mo>
<mo>|</mo>
<msubsup>
<mi>Q</mi>
<mi>i</mi>
<mi>k</mi>
</msubsup>
<mo>-</mo>
<munder>
<mo>&Sigma;</mo>
<mrow>
<mi>e</mi>
<mo>&Element;</mo>
<msub>
<mi>C</mi>
<mi>k</mi>
</msub>
</mrow>
</munder>
<mi>s</mi>
<mrow>
<mo>(</mo>
<msub>
<mi>u</mi>
<mi>i</mi>
</msub>
<mo>,</mo>
<msub>
<mi>u</mi>
<mi>e</mi>
</msub>
<mo>)</mo>
</mrow>
<mo>&times;</mo>
<msubsup>
<mi>Q</mi>
<mi>e</mi>
<mi>k</mi>
</msubsup>
<mo>|</mo>
<msub>
<mo>|</mo>
<mi>F</mi>
</msub>
</mrow>
</mtd>
</mtr>
<mtr>
<mtd>
<mrow>
<mo>+</mo>
<mfrac>
<mn>1</mn>
<mn>2</mn>
</mfrac>
<msub>
<mi>&lambda;</mi>
<mi>L</mi>
</msub>
<munderover>
<mo>&Sigma;</mo>
<mrow>
<mi>j</mi>
<mo>=</mo>
<mn>1</mn>
</mrow>
<msup>
<mi>y</mi>
<mi>k</mi>
</msup>
</munderover>
<mo>|</mo>
<mo>|</mo>
<msubsup>
<mi>L</mi>
<mi>j</mi>
<mi>k</mi>
</msubsup>
<mo>-</mo>
<munder>
<mo>&Sigma;</mo>
<mrow>
<mi>p</mi>
<mo>&Element;</mo>
<msub>
<mi>C</mi>
<mi>k</mi>
</msub>
</mrow>
</munder>
<mi>z</mi>
<mrow>
<mo>(</mo>
<msub>
<mi>v</mi>
<mi>j</mi>
</msub>
<mo>,</mo>
<msub>
<mi>v</mi>
<mi>p</mi>
</msub>
<mo>)</mo>
</mrow>
<mo>&times;</mo>
<msubsup>
<mi>L</mi>
<mi>p</mi>
<mi>k</mi>
</msubsup>
<mo>|</mo>
<msub>
<mo>|</mo>
<mi>F</mi>
</msub>
</mrow>
</mtd>
</mtr>
</mtable>
<mo>-</mo>
<mo>-</mo>
<mo>-</mo>
<mrow>
<mo>(</mo>
<mn>8</mn>
<mo>)</mo>
</mrow>
</mrow>
式(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的特征向量
<mrow>
<msup>
<mrow>
<mo>(</mo>
<msubsup>
<mi>Q</mi>
<mi>i</mi>
<mi>k</mi>
</msubsup>
<mo>)</mo>
</mrow>
<mi>&mu;</mi>
</msup>
<mo>=</mo>
<munder>
<mo>&Sigma;</mo>
<mrow>
<mi>e</mi>
<mo>&Element;</mo>
<msub>
<mi>C</mi>
<mi>k</mi>
</msub>
</mrow>
</munder>
<mi>s</mi>
<mrow>
<mo>(</mo>
<msub>
<mi>u</mi>
<mi>i</mi>
</msub>
<mo>,</mo>
<msub>
<mi>u</mi>
<mi>e</mi>
</msub>
<mo>)</mo>
</mrow>
<mo>&times;</mo>
<msup>
<mrow>
<mo>(</mo>
<msubsup>
<mi>Q</mi>
<mi>i</mi>
<mi>k</mi>
</msubsup>
<mo>)</mo>
</mrow>
<mrow>
<mi>&mu;</mi>
<mo>-</mo>
<mn>1</mn>
</mrow>
</msup>
<mo>+</mo>
<msub>
<mi>&phi;</mi>
<msup>
<mi>Q</mi>
<mi>k</mi>
</msup>
</msub>
<mo>,</mo>
<msub>
<mi>&phi;</mi>
<msup>
<mi>Q</mi>
<mi>k</mi>
</msup>
</msub>
<mo>~</mo>
<mi>N</mi>
<mrow>
<mo>(</mo>
<mn>0</mn>
<mo>,</mo>
<msubsup>
<mi>&sigma;</mi>
<mi>Q</mi>
<mn>2</mn>
</msubsup>
<mi>J</mi>
<mo>)</mo>
</mrow>
<mo>-</mo>
<mo>-</mo>
<mo>-</mo>
<mrow>
<mo>(</mo>
<mn>9</mn>
<mo>)</mo>
</mrow>
</mrow>
式(9)中,表示第k个类别Ck中第i个用户ui的特征向量的正则化项,并且服从均值为零,方差为的正态分布;
<mrow>
<msup>
<mrow>
<mo>(</mo>
<msubsup>
<mi>L</mi>
<mi>j</mi>
<mi>k</mi>
</msubsup>
<mo>)</mo>
</mrow>
<mi>&mu;</mi>
</msup>
<mo>=</mo>
<munder>
<mo>&Sigma;</mo>
<mrow>
<mi>p</mi>
<mo>&Element;</mo>
<msub>
<mi>C</mi>
<mi>k</mi>
</msub>
</mrow>
</munder>
<mi>z</mi>
<mrow>
<mo>(</mo>
<msub>
<mi>v</mi>
<mi>j</mi>
</msub>
<mo>,</mo>
<msub>
<mi>v</mi>
<mi>p</mi>
</msub>
<mo>)</mo>
</mrow>
<mo>&times;</mo>
<msup>
<mrow>
<mo>(</mo>
<msubsup>
<mi>L</mi>
<mi>j</mi>
<mi>k</mi>
</msubsup>
<mo>)</mo>
</mrow>
<mrow>
<mi>&mu;</mi>
<mo>-</mo>
<mn>1</mn>
</mrow>
</msup>
<mo>+</mo>
<msub>
<mi>&phi;</mi>
<msup>
<mi>L</mi>
<mi>k</mi>
</msup>
</msub>
<mo>,</mo>
<msub>
<mi>&phi;</mi>
<msup>
<mi>L</mi>
<mi>k</mi>
</msup>
</msub>
<mo>~</mo>
<mi>N</mi>
<mrow>
<mo>(</mo>
<mn>0</mn>
<mo>,</mo>
<msubsup>
<mi>&sigma;</mi>
<mi>L</mi>
<mn>2</mn>
</msubsup>
<mi>J</mi>
<mo>)</mo>
</mrow>
<mo>-</mo>
<mo>-</mo>
<mo>-</mo>
<mrow>
<mo>(</mo>
<mn>10</mn>
<mo>)</mo>
</mrow>
</mrow>
式(10)中,表示第k个类别Ck中第j个项目vj的特征向量的正则化项,并且服从均值为零,方差为的正态分布;
步骤3.7、利用式(11)和式(12)分别获得第μ次迭代的第i个用户ui的特征向量的梯度以及第μ次迭代的第j个项目vj的特征向量的梯度
<mrow>
<mtable>
<mtr>
<mtd>
<mrow>
<msup>
<mrow>
<mo>(</mo>
<mfrac>
<mrow>
<mo>&part;</mo>
<msup>
<mi>E</mi>
<mi>k</mi>
</msup>
</mrow>
<mrow>
<mo>&part;</mo>
<msubsup>
<mi>Q</mi>
<mi>i</mi>
<mi>k</mi>
</msubsup>
</mrow>
</mfrac>
<mo>)</mo>
</mrow>
<mrow>
<mo>(</mo>
<mi>&mu;</mi>
<mo>)</mo>
</mrow>
</msup>
<mo>=</mo>
<munderover>
<mo>&Sigma;</mo>
<mrow>
<mi>j</mi>
<mo>=</mo>
<mn>1</mn>
</mrow>
<msup>
<mi>y</mi>
<mi>k</mi>
</msup>
</munderover>
<mrow>
<mo>(</mo>
<mrow>
<msubsup>
<mi>r</mi>
<mrow>
<mi>i</mi>
<mi>j</mi>
</mrow>
<mi>k</mi>
</msubsup>
<mo>-</mo>
<msup>
<mrow>
<mo>(</mo>
<msup>
<mrow>
<mo>(</mo>
<msubsup>
<mi>Q</mi>
<mi>i</mi>
<mi>k</mi>
</msubsup>
<mo>)</mo>
</mrow>
<mrow>
<mo>(</mo>
<mi>&mu;</mi>
<mo>)</mo>
</mrow>
</msup>
<mo>)</mo>
</mrow>
<mi>T</mi>
</msup>
<msup>
<mrow>
<mo>(</mo>
<msubsup>
<mi>L</mi>
<mi>j</mi>
<mi>k</mi>
</msubsup>
<mo>)</mo>
</mrow>
<mrow>
<mo>(</mo>
<mi>&mu;</mi>
<mo>)</mo>
</mrow>
</msup>
</mrow>
<mo>)</mo>
</mrow>
<msup>
<mrow>
<mo>(</mo>
<mo>-</mo>
<msubsup>
<mi>L</mi>
<mi>j</mi>
<mi>k</mi>
</msubsup>
<mo>)</mo>
</mrow>
<mrow>
<mo>(</mo>
<mi>&mu;</mi>
<mo>)</mo>
</mrow>
</msup>
<mo>+</mo>
<msub>
<mi>&lambda;</mi>
<mi>Q</mi>
</msub>
<mrow>
<mo>(</mo>
<mrow>
<msup>
<mrow>
<mo>(</mo>
<msubsup>
<mi>Q</mi>
<mi>i</mi>
<mi>k</mi>
</msubsup>
<mo>)</mo>
</mrow>
<mrow>
<mo>(</mo>
<mi>&mu;</mi>
<mo>)</mo>
</mrow>
</msup>
<mo>-</mo>
<munder>
<mo>&Sigma;</mo>
<mrow>
<mi>e</mi>
<mo>&Element;</mo>
<msub>
<mi>C</mi>
<mi>k</mi>
</msub>
</mrow>
</munder>
<mi>s</mi>
<mrow>
<mo>(</mo>
<mrow>
<msub>
<mi>u</mi>
<mi>i</mi>
</msub>
<mo>,</mo>
<msub>
<mi>u</mi>
<mi>e</mi>
</msub>
</mrow>
<mo>)</mo>
</mrow>
<mo>&times;</mo>
<msup>
<mrow>
<mo>(</mo>
<msubsup>
<mi>Q</mi>
<mi>e</mi>
<mi>k</mi>
</msubsup>
<mo>)</mo>
</mrow>
<mrow>
<mo>(</mo>
<mi>&mu;</mi>
<mo>)</mo>
</mrow>
</msup>
</mrow>
<mo>)</mo>
</mrow>
</mrow>
</mtd>
</mtr>
<mtr>
<mtd>
<mrow>
<mo>-</mo>
<msub>
<mi>&lambda;</mi>
<mi>Q</mi>
</msub>
<munder>
<mo>&Sigma;</mo>
<mrow>
<mi>i</mi>
<mo>&Element;</mo>
<msub>
<mi>C</mi>
<mi>k</mi>
</msub>
</mrow>
</munder>
<mi>s</mi>
<mrow>
<mo>(</mo>
<msub>
<mi>u</mi>
<mi>e</mi>
</msub>
<mo>,</mo>
<msub>
<mi>u</mi>
<mi>i</mi>
</msub>
<mo>)</mo>
</mrow>
<mo>(</mo>
<mrow>
<msubsup>
<mi>Q</mi>
<mi>e</mi>
<mi>k</mi>
</msubsup>
<mo>-</mo>
<munder>
<mo>&Sigma;</mo>
<mrow>
<mi>j</mi>
<mo>&Element;</mo>
<msub>
<mi>C</mi>
<mi>k</mi>
</msub>
</mrow>
</munder>
<mi>z</mi>
<mrow>
<mo>(</mo>
<mrow>
<msub>
<mi>v</mi>
<mi>j</mi>
</msub>
<mo>,</mo>
<msub>
<mi>v</mi>
<mi>p</mi>
</msub>
</mrow>
<mo>)</mo>
</mrow>
<mo>&times;</mo>
<msup>
<mrow>
<mo>(</mo>
<msubsup>
<mi>Q</mi>
<mi>j</mi>
<mi>k</mi>
</msubsup>
<mo>)</mo>
</mrow>
<mrow>
<mo>(</mo>
<mi>&mu;</mi>
<mo>)</mo>
</mrow>
</msup>
</mrow>
<mo>)</mo>
</mrow>
</mtd>
</mtr>
</mtable>
<mo>-</mo>
<mo>-</mo>
<mo>-</mo>
<mrow>
<mo>(</mo>
<mn>11</mn>
<mo>)</mo>
</mrow>
</mrow>
<mrow>
<mtable>
<mtr>
<mtd>
<mrow>
<msup>
<mrow>
<mo>(</mo>
<mfrac>
<mrow>
<mo>&part;</mo>
<msup>
<mi>E</mi>
<mi>k</mi>
</msup>
</mrow>
<mrow>
<mo>&part;</mo>
<msubsup>
<mi>L</mi>
<mi>j</mi>
<mi>k</mi>
</msubsup>
</mrow>
</mfrac>
<mo>)</mo>
</mrow>
<mrow>
<mo>(</mo>
<mi>&mu;</mi>
<mo>)</mo>
</mrow>
</msup>
<mo>=</mo>
<munderover>
<mo>&Sigma;</mo>
<mrow>
<mi>i</mi>
<mo>=</mo>
<mn>1</mn>
</mrow>
<msup>
<mi>x</mi>
<mi>k</mi>
</msup>
</munderover>
<mrow>
<mo>(</mo>
<mrow>
<msubsup>
<mi>r</mi>
<mrow>
<mi>i</mi>
<mi>j</mi>
</mrow>
<mi>k</mi>
</msubsup>
<mo>-</mo>
<msup>
<mrow>
<mo>(</mo>
<msup>
<mrow>
<mo>(</mo>
<msubsup>
<mi>Q</mi>
<mi>i</mi>
<mi>k</mi>
</msubsup>
<mo>)</mo>
</mrow>
<mrow>
<mo>(</mo>
<mi>&mu;</mi>
<mo>)</mo>
</mrow>
</msup>
<mo>)</mo>
</mrow>
<mi>T</mi>
</msup>
<msup>
<mrow>
<mo>(</mo>
<msubsup>
<mi>L</mi>
<mi>j</mi>
<mi>k</mi>
</msubsup>
<mo>)</mo>
</mrow>
<mrow>
<mo>(</mo>
<mi>&mu;</mi>
<mo>)</mo>
</mrow>
</msup>
</mrow>
<mo>)</mo>
</mrow>
<msup>
<mrow>
<mo>(</mo>
<mo>-</mo>
<msubsup>
<mi>Q</mi>
<mi>i</mi>
<mi>k</mi>
</msubsup>
<mo>)</mo>
</mrow>
<mrow>
<mo>(</mo>
<mi>&mu;</mi>
<mo>)</mo>
</mrow>
</msup>
<mo>+</mo>
<msub>
<mi>&lambda;</mi>
<mi>L</mi>
</msub>
<mrow>
<mo>(</mo>
<mrow>
<msup>
<mrow>
<mo>(</mo>
<msubsup>
<mi>L</mi>
<mi>j</mi>
<mi>k</mi>
</msubsup>
<mo>)</mo>
</mrow>
<mrow>
<mo>(</mo>
<mi>&mu;</mi>
<mo>)</mo>
</mrow>
</msup>
<mo>-</mo>
<munder>
<mo>&Sigma;</mo>
<mrow>
<mi>p</mi>
<mo>&Element;</mo>
<msub>
<mi>C</mi>
<mi>k</mi>
</msub>
</mrow>
</munder>
<mi>z</mi>
<mrow>
<mo>(</mo>
<mrow>
<msub>
<mi>v</mi>
<mi>j</mi>
</msub>
<mo>,</mo>
<msub>
<mi>v</mi>
<mi>p</mi>
</msub>
</mrow>
<mo>)</mo>
</mrow>
<mo>&times;</mo>
<msup>
<mrow>
<mo>(</mo>
<msubsup>
<mi>L</mi>
<mi>p</mi>
<mi>k</mi>
</msubsup>
<mo>)</mo>
</mrow>
<mrow>
<mo>(</mo>
<mi>&mu;</mi>
<mo>)</mo>
</mrow>
</msup>
</mrow>
<mo>)</mo>
</mrow>
</mrow>
</mtd>
</mtr>
<mtr>
<mtd>
<mrow>
<mo>-</mo>
<msub>
<mi>&lambda;</mi>
<mi>L</mi>
</msub>
<munder>
<mo>&Sigma;</mo>
<mrow>
<mi>j</mi>
<mo>&Element;</mo>
<msub>
<mi>C</mi>
<mi>k</mi>
</msub>
</mrow>
</munder>
<mi>z</mi>
<mrow>
<mo>(</mo>
<msub>
<mi>v</mi>
<mi>p</mi>
</msub>
<mo>,</mo>
<msub>
<mi>v</mi>
<mi>j</mi>
</msub>
<mo>)</mo>
</mrow>
<mo>(</mo>
<mrow>
<msup>
<mrow>
<mo>(</mo>
<msubsup>
<mi>L</mi>
<mi>p</mi>
<mi>k</mi>
</msubsup>
<mo>)</mo>
</mrow>
<mrow>
<mo>(</mo>
<mi>&mu;</mi>
<mo>)</mo>
</mrow>
</msup>
<mo>-</mo>
<munder>
<mo>&Sigma;</mo>
<mrow>
<mi>i</mi>
<mo>&Element;</mo>
<msub>
<mi>C</mi>
<mi>k</mi>
</msub>
</mrow>
</munder>
<mi>s</mi>
<mrow>
<mo>(</mo>
<mrow>
<msub>
<mi>u</mi>
<mi>i</mi>
</msub>
<mo>,</mo>
<msub>
<mi>u</mi>
<mi>e</mi>
</msub>
</mrow>
<mo>)</mo>
</mrow>
<mo>&times;</mo>
<msup>
<mrow>
<mo>(</mo>
<msubsup>
<mi>L</mi>
<mi>i</mi>
<mi>k</mi>
</msubsup>
<mo>)</mo>
</mrow>
<mrow>
<mo>(</mo>
<mi>&mu;</mi>
<mo>)</mo>
</mrow>
</msup>
</mrow>
<mo>)</mo>
</mrow>
</mtd>
</mtr>
</mtable>
<mo>-</mo>
<mo>-</mo>
<mo>-</mo>
<mrow>
<mo>(</mo>
<mn>12</mn>
<mo>)</mo>
</mrow>
</mrow>
步骤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个类别预测评分矩阵,将满足评分要求的项目推荐给相应用户。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710833356.7A CN107577786B (zh) | 2017-09-15 | 2017-09-15 | 一种基于联合聚类的矩阵分解推荐方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710833356.7A CN107577786B (zh) | 2017-09-15 | 2017-09-15 | 一种基于联合聚类的矩阵分解推荐方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107577786A true CN107577786A (zh) | 2018-01-12 |
CN107577786B CN107577786B (zh) | 2019-09-10 |
Family
ID=61033600
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710833356.7A Active CN107577786B (zh) | 2017-09-15 | 2017-09-15 | 一种基于联合聚类的矩阵分解推荐方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN107577786B (zh) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108804605A (zh) * | 2018-05-29 | 2018-11-13 | 重庆大学 | 一种基于层次结构的推荐方法 |
CN109918562A (zh) * | 2019-01-18 | 2019-06-21 | 重庆邮电大学 | 一种基于用户社区和评分联合社区的推荐方法 |
CN110941771A (zh) * | 2019-12-24 | 2020-03-31 | 哈尔滨理工大学 | 一种电商平台中的商品并行动态推送方法 |
WO2020073534A1 (zh) * | 2018-10-12 | 2020-04-16 | 平安科技(深圳)有限公司 | 基于重聚类的推送方法、装置、计算机设备及存储介质 |
CN112291506A (zh) * | 2020-12-25 | 2021-01-29 | 北京电信易通信息技术股份有限公司 | 一种视频会议场景下流数据安全漏洞溯源方法及*** |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104216964A (zh) * | 2014-08-22 | 2014-12-17 | 哈尔滨工程大学 | 一种面向微博的非分词突发话题检测方法 |
US20150088953A1 (en) * | 2013-09-23 | 2015-03-26 | Infosys Limited | Methods, systems and computer-readable media for distributed probabilistic matrix factorization |
CN104636454A (zh) * | 2015-02-02 | 2015-05-20 | 哈尔滨工程大学 | 一种面向大规模异构数据的联合聚类方法 |
CN106126549A (zh) * | 2016-06-16 | 2016-11-16 | 传化公路港物流有限公司 | 一种基于概率矩阵分解的社区信任推荐方法及其*** |
-
2017
- 2017-09-15 CN CN201710833356.7A patent/CN107577786B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20150088953A1 (en) * | 2013-09-23 | 2015-03-26 | Infosys Limited | Methods, systems and computer-readable media for distributed probabilistic matrix factorization |
CN104216964A (zh) * | 2014-08-22 | 2014-12-17 | 哈尔滨工程大学 | 一种面向微博的非分词突发话题检测方法 |
CN104636454A (zh) * | 2015-02-02 | 2015-05-20 | 哈尔滨工程大学 | 一种面向大规模异构数据的联合聚类方法 |
CN106126549A (zh) * | 2016-06-16 | 2016-11-16 | 传化公路港物流有限公司 | 一种基于概率矩阵分解的社区信任推荐方法及其*** |
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108804605A (zh) * | 2018-05-29 | 2018-11-13 | 重庆大学 | 一种基于层次结构的推荐方法 |
CN108804605B (zh) * | 2018-05-29 | 2021-10-22 | 重庆大学 | 一种基于层次结构的推荐方法 |
WO2020073534A1 (zh) * | 2018-10-12 | 2020-04-16 | 平安科技(深圳)有限公司 | 基于重聚类的推送方法、装置、计算机设备及存储介质 |
CN109918562A (zh) * | 2019-01-18 | 2019-06-21 | 重庆邮电大学 | 一种基于用户社区和评分联合社区的推荐方法 |
CN109918562B (zh) * | 2019-01-18 | 2022-10-18 | 重庆邮电大学 | 一种基于用户社区和评分联合社区的推荐方法 |
CN110941771A (zh) * | 2019-12-24 | 2020-03-31 | 哈尔滨理工大学 | 一种电商平台中的商品并行动态推送方法 |
CN110941771B (zh) * | 2019-12-24 | 2022-08-23 | 哈尔滨理工大学 | 一种电商平台中的商品并行动态推送方法 |
CN112291506A (zh) * | 2020-12-25 | 2021-01-29 | 北京电信易通信息技术股份有限公司 | 一种视频会议场景下流数据安全漏洞溯源方法及*** |
Also Published As
Publication number | Publication date |
---|---|
CN107577786B (zh) | 2019-09-10 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111428147B (zh) | 结合社交和兴趣信息的异源图卷积网络的社交推荐方法 | |
CN105740401B (zh) | 一种基于个体行为和群体兴趣的兴趣地点推荐方法及装置 | |
CN107577786A (zh) | 一种基于联合聚类的矩阵分解推荐方法 | |
CN108287864B (zh) | 一种兴趣群组划分方法、装置、介质及计算设备 | |
CN103778227B (zh) | 从检索图像中筛选有用图像的方法 | |
CN104834748A (zh) | 一种利用基于深度语义排序哈希编码的图像检索方法 | |
CN114065048B (zh) | 基于多异构图图神经网络的物品推荐方法 | |
CN107944485A (zh) | 基于聚类群组发现的推荐***及方法、个性化推荐*** | |
CN106156333A (zh) | 一种融合社会化信息的改进单类协同过滤方法 | |
CN104915436A (zh) | 自适应多标签预测方法 | |
CN115688024A (zh) | 基于用户内容特征和行为特征的网络异常用户预测方法 | |
US20230267317A1 (en) | Sign-aware recommendation apparatus and method using graph neural network | |
CN112131261A (zh) | 基于社区网络的社区查询方法、装置和计算机设备 | |
Pham et al. | Unsupervised training of Bayesian networks for data clustering | |
CN108984551A (zh) | 一种基于多类别联合软聚类的推荐方法及*** | |
CN107274255B (zh) | 一种基于分解多目标进化算法的协同滤波推荐方法 | |
CN116911949A (zh) | 基于边界排名损失和邻域感知图神经网络的物品推荐方法 | |
Ifada et al. | Do-rank: DCG optimization for learning-to-rank in tag-based item recommendation systems | |
Chu et al. | Towards a deep learning autoencoder algorithm for collaborative filtering recommendation | |
Lv et al. | DSMN: An improved recommendation model for capturing the multiplicity and dynamics of consumer interests | |
CN115935067A (zh) | 面向社会化推荐的语义与结构视图融合的物品推荐方法 | |
CN112749345B (zh) | 一种基于神经网络的k近邻矩阵分解推荐方法 | |
CN113256024B (zh) | 一种融合群体行为的用户行为预测方法 | |
CN109885758A (zh) | 一种基于二部图的新型随机游走的推荐方法 | |
CN113032612B (zh) | 一种多目标图像检索模型的构建方法及检索方法和装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
TR01 | Transfer of patent right | ||
TR01 | Transfer of patent right |
Effective date of registration: 20220721 Address after: 610096 No. 505, floor 5, building 6, No. 599, shijicheng South Road, Chengdu hi tech Zone, Chengdu pilot Free Trade Zone, Sichuan Province Patentee after: Chengdu shihaixintu Microelectronics Co.,Ltd. Address before: Tunxi road in Baohe District of Hefei city of Anhui Province, No. 193 230009 Patentee before: Hefei University of Technology |