CN106156333B - 一种融合社会化信息的改进单类协同过滤方法 - Google Patents
一种融合社会化信息的改进单类协同过滤方法 Download PDFInfo
- Publication number
- CN106156333B CN106156333B CN201610530667.1A CN201610530667A CN106156333B CN 106156333 B CN106156333 B CN 106156333B CN 201610530667 A CN201610530667 A CN 201610530667A CN 106156333 B CN106156333 B CN 106156333B
- Authority
- CN
- China
- Prior art keywords
- mrow
- msub
- user
- msubsup
- msup
- 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.)
- Active
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/95—Retrieval from the web
- G06F16/953—Querying, e.g. by the use of web search engines
- G06F16/9535—Search customisation based on user profiles and personalisation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F18/00—Pattern recognition
- G06F18/20—Analysing
- G06F18/22—Matching criteria, e.g. proximity measures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
- G06Q30/00—Commerce
- G06Q30/02—Marketing; Price estimation or determination; Fundraising
- G06Q30/0241—Advertisements
- G06Q30/0251—Targeted advertisements
- G06Q30/0269—Targeted advertisements based on user profile or attribute
- G06Q30/0271—Personalized advertisement
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Business, Economics & Management (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- Accounting & Taxation (AREA)
- Development Economics (AREA)
- General Engineering & Computer Science (AREA)
- Finance (AREA)
- Strategic Management (AREA)
- Game Theory and Decision Science (AREA)
- Bioinformatics & Cheminformatics (AREA)
- Marketing (AREA)
- Economics (AREA)
- Entrepreneurship & Innovation (AREA)
- Life Sciences & Earth Sciences (AREA)
- Artificial Intelligence (AREA)
- General Business, Economics & Management (AREA)
- Bioinformatics & Computational Biology (AREA)
- Computer Vision & Pattern Recognition (AREA)
- Evolutionary Biology (AREA)
- Evolutionary Computation (AREA)
- Pharmaceuticals Containing Other Organic And Inorganic Compounds (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种融合社会化信息的改进单类协同过滤方法,包括:1构造三元组分别表示用户项目信息、项目标签信息、用户标签信息和群组好友信息;2计算用户与其组内好友的偏好相似度;3计算用户偏好与其未选项目的特征相似度;4对用户抽取添加负例;5对用户项目矩阵实施联合概率矩阵分解,获得用户特征矩阵和项目特征矩阵;6获取对每个用户预测分值最高的前N个项目形成该用户的推荐列表。本发明基于项目标签信息和用户已选正例数量进行负例抽取,同时将用户群组和项目标签的社会化信息融合到概率矩阵分解中,实施联合概率矩阵分解,从而得到面向单类数据的推荐结果,有效解决单类协同过滤方法中数据的高度不平衡性和稀疏性问题。
Description
技术领域
本发明属于个性化推荐领域,具体地说是一种融合社会化信息的改进单类协同过滤方法。
背景技术
随着信息技术的不断发展,如何从海量的数据中快速有效地找到用户所需的信息,满足各类用户不同的个性化需求,已受到研究者的广泛关注。在此背景下,推荐系统应运而生。推荐系统可以根据用户的历史评分数据来学习、预测用户的偏好从而推荐物品,被认为是当前能够解决信息过载的最有效方法之一。
其中,运用最广泛的是基于协同过滤的推荐算法。协同过滤算法的核心是基于目标用户最近邻居的评分数据,来预测目标用户对未评分项目的评分,从而将预测评分最高的若干项目推荐给目标用户。近年来协同过滤算法在国内外得到了广泛研究,按处理数据的不同主要分为两类:一类是能明确区分用户喜好倾向的数据,如评分;另一类则是未能表现出用户喜好倾向的单类数据,如是否购买过某种商品等,这类数据仅有正例可以明确区分开来,而负例不确定,故把该类问题称为单类协同过滤(One Class CollaborativeFiltering,OCCF)问题。在单类协同过滤中,数据的获取不需要用户额外的努力,仅搜集用户与网页的自然交互信息,收集成本更低、应用场景更广、数据规模更大,因此,研究如何利用单类数据进行个性化推荐,具有重要价值。
目前,针对单类数据的个性化推荐已经开始得到研究者的关注,并有一些研究者就此进行了相关研究。这些研究主要从两个角度展开,一个角度是研究如何恰当的引入负例,以解决数据的高度不平衡性问题。另一个角度是研究如何恰当的利用额外的数据信息,以解决数据的高度稀疏性问题。尽管这些研究都在一定程度上减小了数据不平衡性或稀疏性对推荐结果的影响,但是一方面,已有研究大多是从单一角度进行,只孤立的考虑了对数据不平衡性和稀疏性的一个问题的改进。另一方面,近些年来,随着社交媒体的不断发展,对于数据中带有评分的推荐问题,融合社会化信息的推荐方法已被证明可以很好地提升推荐精度,但是,对于更加稀疏的单类数据,这方面的研究还很少。
发明内容
本发明为解决上述现有技术中存在的不足之处,提供一种融合社会化信息的改进单类协同过滤方法,以期能充分考虑用户群组及项目标签的社会化信息,综合解决单类协同过滤方法中数据的高度不平衡性和稀疏性问题,从而提高面向单类数据的项目推荐准确率。
为了达到上述目的,本发明所采用的技术方案为:
本发明一种融合社会化信息的改进单类协同过滤方法的特点是按如下步骤进行:
步骤1、构造用户项目三元组P、项目标签三元组Q、用户标签三元组W和群组好友三元组G:
步骤1.1、令用户项目三元组P=<U,I,R>表示用户对项目的历史选择信息;U表示用户集,并有U={U1,U2,…,Ui,…,U|U|};Ui表示第i个用户;I表示项目集,并有I={I1,I2,…,Ij,…,I|I|};Ij表示第j个项目;R表示历史选择信息矩阵,并有{Ri,j}|U|×|I|;Ri,j=1表示第i个用户Ui已选择过第j个项目Ij;Ri,j为空表示第i个用户Ui未选择过第j个项目Ij;1≤i≤|U|;1≤j≤|I|;
步骤1.2、令项目标签三元组Q=<I,T,B>表示项目被标注的标签信息,用于表征项目的特征;T表示标签集,并有T={T1,T2,…,Th,…,T|T|};Th表示第h个标签;B表示项目标签矩阵,并有{Bj,h}|I|×|T|;Bj,h表示第j个项目Ij被标注第h个标签Th的次数;1≤h≤|T|;
步骤1.3、令用户标签三元组W=<U,T,D>表示用户对所有已选择项目标注的标签信息,用于表征用户的偏好特征;D表示用户标签矩阵,并有{Di,h}|U|×|T|;Di,h表示第i个用户Ui对自已所有已选择项目标注第h个标签Th的次数;
步骤1.4、令群组好友三元组G=<U,U,F>表示用户群组好友信息;F表示用户好友矩阵,并有表示第i个用户Ui和第个用户是属于同一个群组的组内好友;为空表示第i个用户Ui和第个用户不属于任何一个共同群组的组内好友;
步骤2、基于所述用户项目三元组P计算所述群组好友三元组G的用户与其群组好友的偏好相似度:
步骤2.1、根据群组好友三元组G,获得第i个用户Ui的群组好友集合表示第i个用户Ui的第个群组好友;0≤L<|U|;
利用式(1)得到第i个用户Ui与第个群组好友的Jaccard相似度
式(1)中,Ri,·表示第i个用户Ui的已选项目集;表示第个群组好友的已选项目集;
步骤2.2、对所有的用户,重复步骤2.1,从而获得所有|U|个用户与其群组好友之间偏好的相似度矩阵
步骤3、基于所述项目标签三元组Q和所述用户标签三元组W,计算所述用户项目三元组P的用户与其未选择项目之间的用户偏好特征与项目特征的相似度:
步骤3.1、根据所述项目标签三元组Q,利用TF-IDF方法计算第j个项目Ij中第h个标签Tj,h的权值b′j,h,从而获得第j个项目Ij的|T|个标签的权值向量B′j={b′j,1,b′j,2,…,b′j,h,…,b′j,|T|};
步骤3.2、对所有项目,重复步骤3.1,从而获得项目标签的权值矩阵B′={B′j,h}|I|×|T|;
步骤3.3、根据所述用户标签三元组W,利用TF-IDF方法计算第i个用户Ui中第h个标签T′i,h的权值d′i,h,从而获得第i个用户Ui的|T|个标签的权值向量D′i={d′i,1,d′i,2,…,d′i,h,…,d′i,|T|};
步骤3.4、对所有用户,重复步骤3.3,从而获得用户标签的权值矩阵D′={D′i,h}|U|×|T|;
步骤3.5、根据所述用户项目三元组P,获得第i个用户Ui的未选项目集合表示第i个用户Ui的第d个未选项目,0≤D<|I|;0≤d≤D;
根据所述项目标签的权值矩阵B′和用户标签的权值矩阵D′,利用式(2)得到第i个用户Ui与第d个未选项目的余弦相似度Si,d:
式(2)中,x表示所述用户标签的权值矩阵D′中第i个用户Ui对应的标签权值向量D′i,·,y表示所述项目标签的权值矩阵B′中第d个未选项目对应的标签权值向量B′d,·;
步骤3.6、对所有用户,重复步骤3.5,从而获得用户的偏好特征与其未选择项目的项目特征之间的相似度矩阵S={Si,d}|U|×|I|;
步骤4、基于所述用户项目三元组P、用户的偏好特征与其未选择项目的项目特征之间的相似度矩阵S对用户抽取并添加负例:
步骤4.1、根据所述用户项目三元组P,得到第i个用户Ui已选正例数量ai′;
利用式(3)得到第i个用户Ui应抽取的负例数量ai,进而得到所有用户应抽取的负例数量集合A={a1,a2,…,ai,…a|U|}:
ai=β×ai′ (3)
式(3)中,β表示抽取的负正例比例;
步骤4.2、根据所述相似度矩阵S,将第i个用户Ui的未选项目集合I(i)中的第d个未选项目按照余弦相似度Si,d的大小进行升序排序;对于余弦相似度Si,d为同一数值的所有项目进行随机排序,从而获得排序后的未选项目集合
从第i个用户Ui的排序后的未选项目集合I′(i)中抽取前ai个未选项目,形成对第i个用户Ui抽取的负例集合表示对第i个用户Ui抽取的第a″个负例,1≤a″≤ai;
步骤4.3、根据对第i个用户Ui抽取的负例集合List(i),将所述相似度矩阵S中Si,a″的值赋给所述用户项目三元组P中对应的用户项目的R的值;
步骤4.4、对所有用户,重复步骤4.2和步骤4.3,从而形成抽取完负例的新用户项目三元组P′=<U,I,R′>;R′表示添加完负例的历史选择信息矩阵;
步骤5、利用联合概率矩阵分解方法迭代获得最终的用户特征矩阵Z′和项目特征矩阵V′:
步骤5.1、利用式(4)构建添加完负例的历史选择信息矩阵R′的先验分布
式(4)中,Zi表示第i个用户Ui的特征向量;表示第i个用户Ui的特征向量Zi的转置;Vj表示第j个项目Ij的特征向量;Z表示所有用户的特征向量所构成的用户特征矩阵;V表示所有项目的特征向量所构成的项目特征矩阵;是指示函数,如果第i个用户Ui已选择过第j个项目Ij,则否则 表示第i个用户Ui对第j个项目Ij的历史选择R′i,j服从均值为方差为的高斯分布;并有:
式(5)表示将的值映射到[0,1]内;
步骤5.2、利用式(6)构建项目标签矩阵B的先验分布
式(6)中,表示第j个项目Ij的特征向量Vj的转置;Mh表示第h个标签Th的特征向量;M表示所有标签的特征向量所构成的标签特征矩阵;是指示函数,如果第j个项目Ij被第h个标签Th标注过,则否则 表示第j个项目Ij被第h个标签Th标注的次数Bj,h服从均值为方差为的高斯分布;并有:
式(7)表示将的值映射到[0,1]内;
步骤5.3、利用式(8)构建用户特征矩阵Z的先验分布
式(8)中,表示单位向量;表示第i个用户Ui的特征向量Zi的方差,表示第i个用户Ui的特征向量Zi服从均值为0,方差为的高斯分布;同理,表示第i个用户Ui的特征向量Zi服从均值为方差为的高斯分布;N(i)表示第i个用户Ui的所有组内好友在所述相似度矩阵J中的下标集合;表示第个用户的特征向量;
步骤5.4、利用式(9)构建所述项目特征矩阵V的先验分布
式(9)中,表示第j个项目Ij的特征向量Vj的方差,表示第j个项目Ij的特征向量Vj服从均值为0,方差为的高斯分布;
步骤5.5、利用式(10)构建所述标签特征矩阵M的先验分布
式(10)中,表示第h个标签Th的特征向量Mh的方差,表示第h个标签Th的特征向量Mh服从均值为0,方差为的高斯分布;
步骤5.6、由式(6)、式(7)、式(8)、式(9)和式(10)进行贝叶斯推断并取对数后再进行推导,得到如式(11)所示的目标函数E(Z,V,M,R′,J,B):
式(11)中,分别反映用户特征矩阵Z、项目特征矩阵V、项目标签矩阵B、用户好友相似度矩阵J和标签特征矩阵M对目标函数E(Z,V,M,R′,J,B)的影响程度大小;
步骤5.7、设定迭代次数阈值为δ,学习率为α以及用户特征矩阵Z、项目特征矩阵V、标签特征矩阵M的矩阵特征维度Y并初始化迭代次数X=0;
步骤5.8、随机初始化用户特征矩阵Z、项目特征矩阵V和标签特征矩阵M,得到第X=1次迭代的第i个用户Ui的特征向量第j个项目Ij特征向量和第h个标签Th的特征向量
步骤5.9、利用式(12)、式(13)和式(14)分别获得第X次迭代的第i个用户Ui的的特征向量Zi的梯度第j个项目Ij的特征向量Vj的梯度和第h个标签Th的特征向量Mh的梯度
式(12)中,表示第个用户的所有组内好友在所述相似度矩阵J中的下标集合;N′(i)表示第i个用户Ui的所有组内好友在所述相似度矩阵J中的下标集合;
步骤5.10、利用式(15)、式(16)和式(17)和第X次迭代的第i个用户Ui的特征向量第X次迭代的第j个项目Ij特征向量和第X次迭代的第h个标签Th的特征向量获得第X+1次迭代的第i个用户Ui的特征向量第j个项目Ij的特征向量和第h个标签Th的特征向量
步骤5.11、将X+1赋给X,判断X<δ是否成立,若成立,则重复步骤5.9和步骤5.10执行;否则,表示获得第δ次迭代的第i个用户Ui的特征向量第δ次迭代的第j个项目Ij的特征向量和第δ次迭代的第h个标签的特征向量从而获得所有用户最终的用户特征矩阵Z′,所有项目最终的项目特征矩阵V′和所有标签最终的标签特征矩阵M′;
步骤6、获取对每个用户预测分值最高的前N个项目所构成的推荐列表:One ClassCollaborative Filtering,OCCF
步骤6.1、利用式(18)得到第i个用户Ui对第j个项目Ij的预测分值
式(18)中,表示所述最终的用户特征矩阵Z′中第i个用户Ui的特征向量Z′i的第m个元系;表示最终的项目特征矩阵V′中第j个项目Ij的特征向量Vi′的第m个元素;
步骤6.2、重复步骤6.1,从而获得第i个用户Ui对所有项目的预测分值,并从所有项目的预测分值中选取分值最高的且第i个用户Ui未选择过的前N个项目组成第i个用户Ui的推荐列表,进而获得所有用户的推荐列表。
与已有技术相比,本发明的有益效果为:
1、本发明将用户和项目的社会化信息融合到单类协同过滤方法中,通过负例抽取和联合概率矩阵分解得到用户和项目的特征矩阵,进而得到用户的项目推荐列表,从而有效缓解了单类数据的高度不平衡性和稀疏性问题,明显提高了面向单类数据的单类协同过滤方法的推荐准确率。
2、本发明利用用户对其所有已选项目标注的标签的社会化信息来表征其偏好,结合项目被标注标签的社会化信息,计算用户偏好与其所有未选项目之间的相似度,然后基于这种相似度及用户已选正例数量对用户抽取添加负例,提出了一种融合社会化信息的负例抽取方法;与已有负例抽取方法相比,其推荐准确度明显提高。
3、本发明利用用户与其群组好友共同已选项目信息获得用户与其群组内好友之间的相似度矩阵,然后,将这种用户群组好友相似度矩阵和项目标签信息矩阵均融合到用户项目矩阵中,使用户项目矩阵和项目标签矩阵的数据信息通过共享的项目特征矩阵结合在一起,实施联合概率矩阵分解,得到用户对项目的预测分值;通过对用户和项目的社会化信息的融合,克服了数据的高度稀疏的困难,显著提升了面向单类数据推荐的质量。
4、本发明所提出的方法可用于向用户推荐学术论文、新闻、博客和旅游景点等多种项目,还可以用于预测用户的微博转发行为,网站点击浏览行为等,应用范围广泛。
附图说明
图1是本发明流程示意图;
图2是本发明所提方法推荐的平均F-measure均值实验结果图。
具体实施方式
本发明利用三元组分别表示用户项目信息、项目标签信息、用户标签信息和群组好友信息,并且计算用户与其组内好友的偏好相似度以及用户偏好特征与其所有未选项目的特征相似度。然后,基于用户已选正例数量及用户偏好特征与其未选项目的特征的相似度,对每个用户抽取添加负例。最后,将项目被标注的标签信息矩阵和用户与其群组好友的偏好相似度矩阵,融合到用户项目历史选择信息矩阵中,实施联合概率矩阵分解,获得用户特征矩阵Z∈RY×|U|、项目特征矩阵V∈RY×|I|和标签特征矩阵M∈BY×|Y|,使ZTV和MTV的值尽可能分别逼近用户历史选择信息矩阵R和项目标签信息B,从而对每个用户预测分值最高的前N个项目所构成的推荐列表。具体地说,如图1所示,本发明方法包括以下步骤:
步骤1、构造用户项目三元组P、项目标签三元组Q、用户标签三元组W和群组好友三元组G:
步骤1.1、令用户项目三元组P=<U,I,R>表示用户对项目的历史选择信息;U表示用户集,并有U={U1,U2,…,Ui,…,U|U|};Ui表示第i个用户;I表示项目集,并有I={I1,I2,…,Ij,…,I|I|};Ij表示第j个项目;R表示历史选择信息矩阵,并有{Ri,j}|U|×|I|;Ri,j=1表示第i个用户Ui已选择过第j个项目Ij;Ri,j为空表示第i个用户Ui未选择过第j个项目Ij;1≤i≤|U|;1≤j≤|I|;
步骤1.2、令项目标签三元组Q=<I,T,B>表示项目被标注的标签信息,用于表征项目的特征;T表示标签集,并有T={T1,T2,…,Th,…,T|T|};Th表示第h个标签;B表示项目标签矩阵,并有{Bj,h}|I|×|T|;Bj,h表示第j个项目Ij被标注第h个标签Th的次数;1≤h≤|T|;
步骤1.3、令用户标签三元组W=<U,T,D>表示用户对所有已选择项目标注的标签信息,用于表征用户的偏好特征;D表示用户标签矩阵,并有{Di,h}|U|×|T|;Di,h表示第i个用户Ui对自已所有已选择项目标注第h个标签Th的次数;
步骤1.4、令群组好友三元组G=<U,U,F>表示用户群组好友信息;F表示用户好友矩阵,并有表示第i个用户Ui和第个用户是属于同一个群组的组内好友;为空表示第i个用户Ui和第个用户不属于任何一个共同群组的组内好友;
步骤2、基于用户项目三元组P计算群组好友三元组G的用户与其群组好友的偏好相似度:
步骤2.1、根据群组好友三元组G,获得第i个用户Ui的群组好友集合表示第i个用户Ui的第个群组好友;0≤L<|U|;
利用式(1)得到第i个用户Ui与第个群组好友的Jaccard相似度
式(1)中,Ri,·表示第i个用户Ui的已选项目集;表示第个群组好友的已选项目集;表示第i个用户Ui的已选项目集与其第个群组好友的已选项目集的交集的数量;表示第i个用户Ui的已选项目集与其第个群组好友的已选项目集的并集的数量;
步骤2.2、对所有的用户,重复步骤2.1,从而获得所有|U|个用户与其群组好友之间偏好的相似度矩阵
步骤3、基于项目标签三元组Q和用户标签三元组W,计算用户项目三元组P的用户与其未选择项目之间的用户偏好特征与项目特征的相似度:
步骤3.1、根据项目标签三元组Q,利用TF-IDF方法计算第j个项目Ij中第h个标签Tj,h的权值b′j,h,从而获得第j个项目Ij的|T|个标签的权值向量B′j={b′j,1,b′j,2,…,b′j,h,…,b′j,T};
步骤3.2、对所有项目,重复步骤3.1,从而获得项目标签的权值矩阵B′={B′j,h}|I|×|T|;
步骤3.3、根据用户标签三元组W,利用TF-IDF方法计算第i个用户Ui中第h个标签Ti,h的权值d′i,h,从而获得第i个用户Ui的|T|个标签的权值向量D′i={d′i,1,d′i,2,…,d′i,h,…,d′i,|T|};
步骤3.4、对所有用户,重复步骤3.3,从而获得用户标签的权值矩阵D′={D′i,h}|U|×|T|;
步骤3.5、根据用户项目三元组P,获得第i个用户Ui的未选项目集合表示第i个用户Ui的第d个未选项目,0≤D<|I|;0≤d≤D;
根据项目标签的权值矩阵B′和用户标签的权值矩阵D′,利用式(2)得到第i个用户Ui与第d个未选项目的余弦相似度Si,d:
式(2)中,x表示用户标签的权值矩阵D′中第i个用户Ui对应的标签权值向量D′i,·,y表示项目标签的权值矩阵B′中第d个未选项目对应的标签权值向量B′d,·;||x||2表示向量x的模长;||y||2表示向量y的模长;
步骤3.6、对所有用户,重复步骤3.5,从而获得用户的偏好特征与其未选择项目的项目特征之间的相似度矩阵S={Si,d}|U|×|I|;
步骤4、基于用户项目三元组P、用户的偏好特征与其未选择项目的项目特征之间的相似度矩阵S对用户抽取并添加负例:
步骤4.1、根据用户项目三元组P,得到第i个用户Ui已选正例数量ai′;
利用式(3)得到第i个用户Ui应抽取的负例数量ai,进而得到所有用户应抽取的负例数量集合A={a1,a2,…,ai,…a|U|}:
ai=β×ai′ (3)
式(3)中,β表示抽取的负正例比例;通过第i个用户Ui已选择的项目正例数量来确定对Ui应抽取的负例数量,Ui已选择的正例越多,对其添加的负例相应的就越多,因为Ui已选择的正例越多,说明Ui见过的项目数量越多,其他没有被Ui选择的项目更多的是其看见了但是不喜欢,而不是没看见,因此从Ui未选择的项目中抽取的负例应该越多;
步骤4.2、根据相似度矩阵S,将第i个用户Ui的未选项目集合I(i)中的第d个未选项目按照余弦相似度Si,d的大小进行升序排序;对于余弦相似度Si,d为同一数值的所有项目进行随机排序,从而获得排序后的未选项目集合表示排序后的第i个用户Ui的第d个未选项目;
从第i个用户Ui的排序后的未选项目集合I′(i)中抽取前ai个未选项目,形成对第i个用户Ui抽取的负例集合因为Si,d的值越小,表示第i个用户Ui的偏好与其第d个未选项目的特征越不相似,是用户Ui看见了但是不喜欢没有选择的可能性就越大,越应该被选作负例;表示对第i个用户Ui抽取的第a″个负例,1≤a″≤ai;
步骤4.3、根据对第i个用户Ui抽取的负例集合List(i),将相似度矩阵S中Si,a″的值赋给用户项目三元组P中对应的用户项目的R的值;
步骤4.4、对所有用户,重复步骤4.2和步骤4.3,形成抽取完负例的新用户项目三元组P′=<U,I,R′>,从而缓解单类数据的高度稀疏性问题;R′表示添加完负例的历史选择信息矩阵;
步骤5、利用联合概率矩阵分解方法迭代获得最终的用户特征矩阵Z′和项目特征矩阵V′:
步骤5.1、利用式(4)构建添加完负例的历史选择信息矩阵R′的先验分布
式(4)中,Zi表示第i个用户Ui的特征向量;表示第i个用户Ui的特征向量Zi的转置;Vj表示第j个项目Ij的特征向量;Z表示所有用户的特征向量所构成的用户特征矩阵;V表示所有项目的特征向量所构成的项目特征矩阵;是指示函数,如果第i个用户Ui已选择过第j个项目Ij,则否则表示第i个用户Ui对第j个项目Ij的历史选择R′i,j服从均值为方差为的高斯分布;并有:
式(5)表示将的值映射到[0,1]内;
步骤5.2、利用式(6)构建项目标签矩阵B的先验分布
式(6)中,表示第j个项目Ij的特征向量Vj的转置;Mh表示第h个标签Th的特征向量;M表示所有标签的特征向量所构成的标签特征矩阵;是指示函数,如果第j个项目Ij被第h个标签Th标注过,则否则 表示第j个项目Ij被第h个标签Th标注的次数Bj,h服从均值为方差为的高斯分布;并有:
式(7)表示将的值映射到[0,1]内;
步骤5.3、利用式(8)构建用户特征矩阵Z的先验分布
式(8)中,表示单位向量;表示第i个用户Ui的特征向量Zi的方差,表示第i个用户Ui的特征向量Zi服从均值为0,方差为的高斯分布;同理,表示第i个用户Ui的特征向量Zi服从均值为方差为的高斯分布;N(i)表示第i个用户Ui的所有组内好友在相似度矩阵J中的下标集合;表示第个用户的特征向量;由式(8)可以看出,本发明在学习每个用户的特征向量时,不仅考虑了用户自身的特性,即服从均值为0的高斯分布以防止过拟合,同时还考虑了用户之间的相关性,即每个用户的特征向量还要与同一群组的组内好友的特征向量相似,并且两个用户之间的相似度越高,这两个用户的特征向量就越相似;
步骤5.4、利用式(9)构建项目特征矩阵V的先验分布
式(9)中,表示第j个项目Ij的特征向量Vj的方差,表示第j个项目Ij的特征向量Vj服从均值为0,方差为的高斯分布;
步骤5.5、利用式(10)构建标签特征矩阵M的先验分布
式(10)中,表示第h个标签Th的特征向量Mh的方差,表示第h个标签Th的特征向量Mh服从均值为0,方差为的高斯分布;
步骤5.6、由式(6)、式(7)、式(8)、式(9)和式(10)进行贝叶斯推断,得到如式(11)所示的用户特征矩阵Z、项目特征矩阵V和标签特征矩阵W的极大后验概率
由式(11)可以看出,本发明在进行矩阵分解时,通过对用户和项目的额外社会化信息的融合,即将用户与其群组好友的偏好相似度矩阵J和项目标签信息矩阵B均融合到用户项目矩阵R′中,使用户项目矩阵R′和项目标签矩阵B的数据信息通过共享的项目特征矩阵V结合在一起,从而缓解单类数据的高度稀疏性问题;
步骤5.7、对式(11)取对数得到式(12):
式(12)中,Y表示第第i个用户Ui的特征向量第j个项目Ij的特征向量Vj和第h个标签Th的特征向量Mh的维度;P是不依赖参数的常量;
步骤5.8、对式(12)进行推导,最大化式(12)可视为无约束问题,相当于最小化如式(13)这个目标函数E(Z,V,M,R′,J,B):
式(13)中,分别反映用户特征矩阵Z、项目特征矩阵V、项目标签矩阵B、用户好友相似度矩阵J和标签特征矩阵M对目标函数E(Z,V,M,R′,J,B)的影响程度大小;
步骤5.9、设定迭代次数阈值为δ,学习率为α,并初始化迭代次数X=0;
步骤5.10、随机初始化用户特征矩阵Z、项目特征矩阵V和标签特征矩阵M,得到第X=1次迭代的第i个用户Ui的特征向量第j个项目Ij特征向量和第h个标签Th的特征向量
步骤5.11、利用式(14)、式(15)和式(16)分别获得第X次迭代的第i个用户Ui的的特征向量Zi的梯度第j个项目Ij的特征向量Vj的梯度和第h个标签Th的特征向量Mh的梯度
式(14)中,表示第个用户的所有组内好友在相似度矩阵J中的下标集合;N′(i)表示第i个用户Ui的所有组内好友在相似度矩阵J中的下标集合;
步骤5.12、利用式(17)、式(18)和式(19)和第X次迭代的第i个用户Ui的特征向量第X次迭代的第j个项目Ij特征向量和第X次迭代的第h个标签Th的特征向量获得第X+1次迭代的第i个用户Ui的特征向量第j个项目Ij的特征向量和第h个标签Th的特征向量
步骤5.13、将X+1赋给X,判断X<δ是否成立,若成立,则重复步骤5.11和步骤5.12执行;否则,表示获得第δ次迭代的第i个用户Ui的特征向量第δ次迭代的第j个项目Ij的特征向量和第δ次迭代的第h个标签的特征向量从而获得所有用户最终的用户特征矩阵Z′,所有项目最终的项目特征矩阵V′和所有标签最终的标签特征矩阵M′;
步骤6、获取对每个用户预测分值最高的前N个项目所构成的推荐列表:
步骤6.1、利用式(20)得到第i个用户Ui对第j个项目Ij的预测分值
式(20)中,表示最终的用户特征矩阵Z′中第i个用户Ui的特征向量Z′i的第m个元素;表示最终的项目特征矩阵V′中第j个项目Ij的特征向量Vi′的第m个元素;1≤m≤Y;
步骤6.2、重复步骤6.1,从而获得第i个用户Ui对所有项目的预测分值,并从所有项目的预测分值中选取分值最高的且第i个用户Ui未选择过的前N个项目组成第i个用户Ui的推荐列表,进而获得所有用户的推荐列表。
针对本发明方法进行实验论证,具体包括:
1、标准数据集
本发明使用LastFM数据集作为标准数据集验证融合社会化信息的改进单类协同过滤方法的有效性,LastFM是一个针对音乐收听的在线平台。在LastFM数据集中,包括99405位用户、1393559首音乐、281818个标签、66429个用户群组信息的数据。
2、评价指标
本发明使用推荐系统领域常用的平均准确率均值(MAP),平均召回率均值(MAR),和平均F-measure均值(MAF)作为实验评价指标。MAP是对所有用户的平均准确率(averageprecision,简称AP)的再一次平均,MAP这一指标特别看重推荐列表的前几位是否命中,MAP越大,表示算法的推荐准确率越高。MAR是对所有用户的平均召回率(averagerecall,简称AR)的再一次平均,MAR值越大,表示推荐算法的在预测召回率上的表现越好。MAF是MAP和MAR的调和平均数,它同时综合考虑了MAP和MAR的值,并不掩盖任何一方面特别的不足,因此能较为全面地评价算法的优劣。MAP、MAR和MAF的定义如式(21)、(22)和(23)所示:
MAF=(2×MAP×MAR)/(MAP+MAR) (23)
式(21)和式(22)中,precision(k)是top-k的准确率,recall(k)是top-k的召回率,如果推荐列表中第k个项目Ik命中,则rec(k)=1;否则,rec(k)=0;N是推荐个数,C是测试集中用户感兴趣的项目总数。
3、实验流程
为了验证本发明所提方法的有效性,根据OCCF应用场景的特点,本发明选用了五种推荐领域常用方法作为对比方法:SVD、PMF、Social-PMF、OCCFAMAN、OCCF-EMAN。SVD、PMF和Social-PMF方法均忽视用户所有未选项目,然后对正例分别使用SVD、PMF和融入用户群组及项目标签的社会化信息的Social-PMF建模;OCCF-AMAN方法将用户所有未选项目作为负例,然后使用PMF建模;OCCF-EMAN方法从用户所有未选项目中随机抽取与其已选正例数量等同的负例,然后使用PMF,在正负例平衡的条件下训练模型。实验过程中,本发明随机选择80%的实验数据集作为训练集,20%作为测试集。同时,为了保证实验结果的可靠性,每次实验进行10次,最终结果取十次实验的平均值。另外,经过实验的反复测试,我们发现参数设定为θZ=θV=θM=0.005,θJ=0.01,θB=0.0005,特征向量的维度Y=20,推荐个数N=15,添加负例时的负例比例β=15时,方法效果最优,以下实验若非特别说明,上述所有参数均设定为最优值。
4、实验结果
为了验证本发明所提方法的有效性,本发明在LastFM数据集上进行实验,并将本发明所提方法及对比方法实验结果与测试集进行比较。实验结果如表1和图2所示,图2中横坐标表示推荐个数,纵坐标表示平均F-measure均值。
由表1可以看出,本发明所提OCCF-SI方法在MAP,MAR,MAF三个评价指标下均优于另外五种推荐方法,从表1中还可以看出,在SVD、PMF及Social-PMF方法的比较中,Social-PMF在三个评价指标下均取得了较大幅度的提高,在PMF、OCCF-AMAN及OCCF-EMAN方法的比较中,OCCF-EMAN在三个评价指标下也均取得了最优推荐结果。这一结果表明,对于OCCF数据而言,融入用户、项目的社会化信息和负例抽取分别有助于提高推荐质量,这也进一步验证了本发明提出的同时综合考虑社会化信息和负例抽取的OCCF-SI方法的有效性。
对于个性化推荐而言,最终的目的不是使预测出来的分数和真实分数的误差尽可能小,而是要在有限的推荐列表中尽可能准确全面的展示用户最感兴趣的项目,因此,研究推荐方法在不同推荐个数N下的推荐效果并确定一个最佳N值,具有重要意义。由图2可以看出,随着推荐个数的增加,推荐效果先是越来越好,当N的值大于一定数值后(本发明方法N=15最佳),推荐的MAF值开始降低。由图2还可以看出,在不同的推荐个数下,本发明提出的OCCF-SI方法都能取得较好的结果,说明了本发明提出的融合社会化信息的改进单类协同过滤方法的有效性和适应性。
表1 OCCF-SI与对比算法推荐结果比较(推荐个数N=15,特征维度Y=20)
Claims (1)
1.一种融合社会化信息的改进单类协同过滤方法,其特征是按如下步骤进行:
步骤1、构造用户项目三元组P、项目标签三元组Q、用户标签三元组W和群组好友三元组G:
步骤1.1、令用户项目三元组P=<U,I,R>表示用户对项目的历史选择信息;U表示用户集,并有U={U1,U2,...,Ui,...,U|U|};Ui表示第i个用户;I表示项目集,并有I={I1,I2,...,Ij,...,I|I|};Ij表示第j个项目;R表示历史选择信息矩阵,并有{Ri,j}|U|×|I|;Ri,j=1表示第i个用户Ui已选择过第j个项目Ij;Ri,j为空表示第i个用户Ui未选择过第j个项目Ij;1≤i≤|U|;1≤j≤|I|;
步骤1.2、令项目标签三元组Q=<I,T,B>表示项目被标注的标签信息,用于表征项目的特征;T表示标签集,并有T={T1,T2,...,Th,...,T|T|};Th表示第h个标签;B表示项目标签矩阵,并有{Bj,h}|I|×|T|;Bj,h表示第j个项目Ij被标注第h个标签Th的次数;1≤h≤|T|;
步骤1.3、令用户标签三元组W=<U,T,D>表示用户对所有已选择项目标注的标签信息,用于表征用户的偏好特征;D表示用户标签矩阵,并有{Di,h}|U|×|T|;Di,h表示第i个用户Ui对自已所有已选择项目标注第h个标签Th的次数;
步骤1.4、令群组好友三元组G=<U,U,F>表示用户群组好友信息;F表示用户好友矩阵,并有表示第i个用户Ui和第个用户是属于同一个群组的组内好友;为空表示第i个用户Ui和第个用户不属于任何一个共同群组的组内好友;
步骤2、基于所述用户项目三元组P计算所述群组好友三元组G的用户与其群组好友的偏好相似度:
步骤2.1、根据群组好友三元组G,获得第i个用户Ui的群组好友集合表示第i个用户Ui的第个群组好友;0≤L<|U|;
利用式(1)得到第i个用户Ui与第个群组好友的Jaccard相似度
<mrow>
<msub>
<mi>J</mi>
<mrow>
<mi>i</mi>
<mo>,</mo>
<mi>l</mi>
</mrow>
</msub>
<mo>=</mo>
<mfrac>
<mrow>
<mo>|</mo>
<msub>
<mi>R</mi>
<mrow>
<mi>i</mi>
<mo>,</mo>
<mo>&CenterDot;</mo>
</mrow>
</msub>
<mo>&cap;</mo>
<msub>
<mi>R</mi>
<mrow>
<mi>l</mi>
<mo>,</mo>
<mo>&CenterDot;</mo>
</mrow>
</msub>
<mo>|</mo>
</mrow>
<mrow>
<mo>|</mo>
<msub>
<mi>R</mi>
<mrow>
<mi>i</mi>
<mo>,</mo>
<mo>&CenterDot;</mo>
</mrow>
</msub>
<mo>&cup;</mo>
<msub>
<mi>R</mi>
<mrow>
<mi>l</mi>
<mo>,</mo>
<mo>&CenterDot;</mo>
</mrow>
</msub>
<mo>|</mo>
</mrow>
</mfrac>
<mo>-</mo>
<mo>-</mo>
<mo>-</mo>
<mrow>
<mo>(</mo>
<mn>1</mn>
<mo>)</mo>
</mrow>
</mrow>
式(1)中,Ri,·表示第i个用户Ui的已选项目集;表示第个群组好友的已选项目集;
步骤2.2、对所有的用户,重复步骤2.1,从而获得所有|U|个用户与其群组好友之间偏好的相似度矩阵
步骤3、基于所述项目标签三元组Q和所述用户标签三元组W,计算所述用户项目三元组P的用户与其未选择项目之间的用户偏好特征与项目特征的相似度:
步骤3.1、根据所述项目标签三元组Q,利用TF-IDF方法计算第j个项目Ij中第h个标签Tj,h的权值b′j,h,从而获得第j个项目Ij的|T|个标签的权值向量B′j={b′j,1,b′j,2,...,b′j,h,...,b′j,|T|};
步骤3.2、对所有项目,重复步骤3.1,从而获得项目标签的权值矩阵B′={B′j,h}|I|×|T|;
步骤3.3、根据所述用户标签三元组W,利用TF-IDF方法计算第i个用户Ui中第h个标签Ti,h的权值d′i,h,从而获得第i个用户Ui的|T|个标签的权值向量D′i={d′i,1,d′i,2,...,d′i,h,...,d′i,|T|};
步骤3.4、对所有用户,重复步骤3.3,从而获得用户标签的权值矩阵D′={D′i,h}|U|×|T|;
步骤3.5、根据所述用户项目三元组P,获得第i个用户Ui的未选项目集合表示第i个用户Ui的第d个未选项目,0≤D<|I|;0≤d≤D;
根据所述项目标签的权值矩阵B′和用户标签的权值矩阵D′,利用式(2)得到第i个用户Ui与第d个未选项目的余弦相似度Si,d:
<mrow>
<msub>
<mi>S</mi>
<mrow>
<mi>i</mi>
<mo>,</mo>
<mi>d</mi>
</mrow>
</msub>
<mo>=</mo>
<mi>c</mi>
<mi>o</mi>
<mi>s</mi>
<mrow>
<mo>(</mo>
<mi>x</mi>
<mo>,</mo>
<mi>y</mi>
<mo>)</mo>
</mrow>
<mo>=</mo>
<mfrac>
<mrow>
<mi>x</mi>
<mo>&CenterDot;</mo>
<mi>y</mi>
</mrow>
<mrow>
<mo>|</mo>
<mo>|</mo>
<mi>x</mi>
<mo>|</mo>
<msub>
<mo>|</mo>
<mn>2</mn>
</msub>
<mo>&times;</mo>
<mo>|</mo>
<mo>|</mo>
<mi>y</mi>
<mo>|</mo>
<msub>
<mo>|</mo>
<mn>2</mn>
</msub>
</mrow>
</mfrac>
<mo>-</mo>
<mo>-</mo>
<mo>-</mo>
<mrow>
<mo>(</mo>
<mn>2</mn>
<mo>)</mo>
</mrow>
</mrow>
式(2)中,x表示所述用户标签的权值矩阵D′中第i个用户Ui对应的标签权值向量D′i,·,y表示所述项目标签的权值矩阵B′中第d个未选项目对应的标签权值向量B′d,·;
步骤3.6、对所有用户,重复步骤3.5,从而获得用户的偏好特征与其未选择项目的项目特征之间的相似度矩阵S={Si,d}|U|×|I|;
步骤4、基于所述用户项目三元组P、用户的偏好特征与其未选择项目的项目特征之间的相似度矩阵S对用户抽取并添加负例:
步骤4.1、根据所述用户项目三元组P,得到第i个用户Ui已选正例数量ai′;
利用式(3)得到第i个用户Ui应抽取的负例数量ai,进而得到所有用户应抽取的负例数量集合A={a1,a2,...,ai,...a|U|}:
ai=β×ai′ (3)
式(3)中,β表示抽取的负正例比例;
步骤4.2、根据所述相似度矩阵S,将第i个用户Ui的未选项目集合I(i)中的第d个未选项目按照余弦相似度Si,d的大小进行升序排序;对于余弦相似度Si,d为同一数值的所有项目进行随机排序,从而获得排序后的未选项目集合
从第i个用户Ui的排序后的未选项目集合I′(i)中抽取前ai个未选项目,形成对第i个用户Ui抽取的负例集合表示对第i个用户Ui抽取的第a″个负例,1≤a″≤ai;
步骤4.3、根据对第i个用户Ui抽取的负例集合List(i),将所述相似度矩阵S中Si,a″的值赋给所述用户项目三元组P中对应的用户项目的R的值;
步骤4.4、对所有用户,重复步骤4.2和步骤4.3,从而形成抽取完负例的新用户项目三元组P′=<U,I,R′>;R′表示添加完负例的历史选择信息矩阵;
步骤5、利用联合概率矩阵分解方法迭代获得最终的用户特征矩阵Z′和项目特征矩阵V′:
步骤5.1、利用式(4)构建添加完负例的历史选择信息矩阵R′的先验分布
<mrow>
<mi>P</mi>
<mrow>
<mo>(</mo>
<msup>
<mi>R</mi>
<mo>&prime;</mo>
</msup>
<mo>|</mo>
<mi>Z</mi>
<mo>,</mo>
<mi>V</mi>
<mo>,</mo>
<msubsup>
<mi>&sigma;</mi>
<msup>
<mi>R</mi>
<mo>&prime;</mo>
</msup>
<mn>2</mn>
</msubsup>
<mo>)</mo>
</mrow>
<mo>=</mo>
<munderover>
<mo>&Pi;</mo>
<mrow>
<mi>i</mi>
<mo>=</mo>
<mn>1</mn>
</mrow>
<mrow>
<mo>|</mo>
<mi>U</mi>
<mo>|</mo>
</mrow>
</munderover>
<munderover>
<mo>&Pi;</mo>
<mrow>
<mi>j</mi>
<mo>=</mo>
<mn>1</mn>
</mrow>
<mrow>
<mo>|</mo>
<mi>I</mi>
<mo>|</mo>
</mrow>
</munderover>
<msup>
<mrow>
<mo>&lsqb;</mo>
<mi>N</mi>
<mrow>
<mo>(</mo>
<msubsup>
<mi>R</mi>
<mrow>
<mi>i</mi>
<mo>,</mo>
<mi>j</mi>
</mrow>
<mo>&prime;</mo>
</msubsup>
<mo>|</mo>
<mi>g</mi>
<mo>(</mo>
<msubsup>
<mi>Z</mi>
<mi>i</mi>
<mi>T</mi>
</msubsup>
<msub>
<mi>V</mi>
<mi>j</mi>
</msub>
<mo>)</mo>
</mrow>
<mo>,</mo>
<msubsup>
<mi>&sigma;</mi>
<msup>
<mi>R</mi>
<mo>&prime;</mo>
</msup>
<mn>2</mn>
</msubsup>
<mo>)</mo>
<mo>&rsqb;</mo>
</mrow>
<msubsup>
<mi>I</mi>
<mrow>
<mi>i</mi>
<mo>,</mo>
<mi>j</mi>
</mrow>
<msup>
<mi>R</mi>
<mo>&prime;</mo>
</msup>
</msubsup>
</msup>
<mo>-</mo>
<mo>-</mo>
<mo>-</mo>
<mrow>
<mo>(</mo>
<mn>4</mn>
<mo>)</mo>
</mrow>
</mrow>
式(4)中,Zi表示第i个用户Ui的特征向量;表示第i个用户Ui的特征向量Zi的转置;Vj表示第j个项目Ij的特征向量;Z表示所有用户的特征向量所构成的用户特征矩阵;V表示所有项目的特征向量所构成的项目特征矩阵;是指示函数,如果第i个用户Ui已选择过第j个项目Ij,则否则表示第i个用户Ui对第j个项目Ij的历史选择R′i,j服从均值为方差为的高斯分布;并有:
<mrow>
<mi>g</mi>
<mrow>
<mo>(</mo>
<msubsup>
<mi>Z</mi>
<mi>i</mi>
<mi>T</mi>
</msubsup>
<msub>
<mi>V</mi>
<mi>j</mi>
</msub>
<mo>)</mo>
</mrow>
<mo>=</mo>
<mn>1</mn>
<mo>/</mo>
<mo>&lsqb;</mo>
<mn>1</mn>
<mo>+</mo>
<mi>exp</mi>
<mrow>
<mo>(</mo>
<mo>-</mo>
<msubsup>
<mi>Z</mi>
<mi>i</mi>
<mi>T</mi>
</msubsup>
<msub>
<mi>V</mi>
<mi>j</mi>
</msub>
<mo>)</mo>
</mrow>
<mo>&rsqb;</mo>
<mo>-</mo>
<mo>-</mo>
<mo>-</mo>
<mrow>
<mo>(</mo>
<mn>5</mn>
<mo>)</mo>
</mrow>
</mrow>
式(5)表示将的值映射到[0,1]内;
步骤5.2、利用式(6)构建项目标签矩阵B的先验分布
<mrow>
<mi>P</mi>
<mrow>
<mo>(</mo>
<mi>B</mi>
<mo>|</mo>
<mi>V</mi>
<mo>,</mo>
<mi>M</mi>
<mo>,</mo>
<msubsup>
<mi>&sigma;</mi>
<mi>B</mi>
<mn>2</mn>
</msubsup>
<mo>)</mo>
</mrow>
<mo>=</mo>
<munderover>
<mo>&Sigma;</mo>
<mrow>
<mi>j</mi>
<mo>=</mo>
<mn>1</mn>
</mrow>
<mrow>
<mo>|</mo>
<mi>I</mi>
<mo>|</mo>
</mrow>
</munderover>
<munderover>
<mo>&Sigma;</mo>
<mrow>
<mi>h</mi>
<mo>=</mo>
<mn>1</mn>
</mrow>
<mrow>
<mo>|</mo>
<mi>T</mi>
<mo>|</mo>
</mrow>
</munderover>
<msup>
<mrow>
<mo>&lsqb;</mo>
<mi>N</mi>
<mrow>
<mo>(</mo>
<msub>
<mi>B</mi>
<mrow>
<mi>j</mi>
<mo>,</mo>
<mi>h</mi>
</mrow>
</msub>
<mo>|</mo>
<mi>g</mi>
<mo>(</mo>
<msubsup>
<mi>V</mi>
<mi>j</mi>
<mi>T</mi>
</msubsup>
<msub>
<mi>M</mi>
<mi>h</mi>
</msub>
<mo>)</mo>
</mrow>
<mo>,</mo>
<msubsup>
<mi>&sigma;</mi>
<mi>B</mi>
<mn>2</mn>
</msubsup>
<mo>)</mo>
<mo>&rsqb;</mo>
</mrow>
<msubsup>
<mi>I</mi>
<mrow>
<mi>j</mi>
<mo>,</mo>
<mi>h</mi>
</mrow>
<mi>B</mi>
</msubsup>
</msup>
<mo>-</mo>
<mo>-</mo>
<mo>-</mo>
<mrow>
<mo>(</mo>
<mn>6</mn>
<mo>)</mo>
</mrow>
</mrow>
式(6)中,表示第j个项目Ij的特征向量Vj的转置;Mh表示第h个标签Th的特征向量;M表示所有标签的特征向量所构成的标签特征矩阵;是指示函数,如果第j个项目Ij被第h个标签Th标注过,则否则表示第j个项目Ij被第h个标签Th标注的次数Bj,h服从均值为方差为的高斯分布;并有:
<mrow>
<mi>g</mi>
<mrow>
<mo>(</mo>
<msubsup>
<mi>V</mi>
<mi>j</mi>
<mi>T</mi>
</msubsup>
<msub>
<mi>M</mi>
<mi>h</mi>
</msub>
<mo>)</mo>
</mrow>
<mo>=</mo>
<mn>1</mn>
<mo>/</mo>
<mo>&lsqb;</mo>
<mn>1</mn>
<mo>+</mo>
<mi>exp</mi>
<mrow>
<mo>(</mo>
<mo>-</mo>
<msubsup>
<mi>V</mi>
<mi>j</mi>
<mi>T</mi>
</msubsup>
<msub>
<mi>M</mi>
<mi>h</mi>
</msub>
<mo>)</mo>
</mrow>
<mo>&rsqb;</mo>
<mo>-</mo>
<mo>-</mo>
<mo>-</mo>
<mrow>
<mo>(</mo>
<mn>7</mn>
<mo>)</mo>
</mrow>
</mrow>
式(7)表示将的值映射到[0,1]内;
步骤5.3、利用式(8)构建用户特征矩阵Z的先验分布
<mrow>
<mi>P</mi>
<mrow>
<mo>(</mo>
<mi>Z</mi>
<mo>|</mo>
<mi>J</mi>
<mo>,</mo>
<msubsup>
<mi>&sigma;</mi>
<mi>Z</mi>
<mn>2</mn>
</msubsup>
<mo>,</mo>
<msubsup>
<mi>&sigma;</mi>
<mi>J</mi>
<mn>2</mn>
</msubsup>
<mo>)</mo>
</mrow>
<mo>=</mo>
<munderover>
<mo>&Pi;</mo>
<mrow>
<mi>i</mi>
<mo>=</mo>
<mn>1</mn>
</mrow>
<mrow>
<mo>|</mo>
<mi>U</mi>
<mo>|</mo>
</mrow>
</munderover>
<mi>N</mi>
<mrow>
<mo>(</mo>
<msub>
<mi>Z</mi>
<mi>i</mi>
</msub>
<mo>|</mo>
<mn>0</mn>
<mo>,</mo>
<msubsup>
<mi>&sigma;</mi>
<mi>Z</mi>
<mn>2</mn>
</msubsup>
<mover>
<mi>I</mi>
<mo>^</mo>
</mover>
<mo>)</mo>
</mrow>
<mo>&times;</mo>
<munderover>
<mo>&Pi;</mo>
<mrow>
<mi>i</mi>
<mo>=</mo>
<mn>1</mn>
</mrow>
<mrow>
<mo>|</mo>
<mi>U</mi>
<mo>|</mo>
</mrow>
</munderover>
<mi>N</mi>
<mrow>
<mo>(</mo>
<msub>
<mi>Z</mi>
<mi>i</mi>
</msub>
<mo>|</mo>
<munder>
<mi>&Sigma;</mi>
<mrow>
<mi>l</mi>
<mo>&Element;</mo>
<mi>N</mi>
<mrow>
<mo>(</mo>
<mi>i</mi>
<mo>)</mo>
</mrow>
</mrow>
</munder>
<msub>
<mi>J</mi>
<mrow>
<mi>i</mi>
<mo>,</mo>
<mi>l</mi>
</mrow>
</msub>
<msub>
<mi>Z</mi>
<mi>l</mi>
</msub>
<mo>,</mo>
<msubsup>
<mi>&sigma;</mi>
<mi>J</mi>
<mn>2</mn>
</msubsup>
<mover>
<mi>I</mi>
<mo>^</mo>
</mover>
<mo>)</mo>
</mrow>
<mo>-</mo>
<mo>-</mo>
<mo>-</mo>
<mrow>
<mo>(</mo>
<mn>8</mn>
<mo>)</mo>
</mrow>
</mrow>
式(8)中,表示单位向量;表示第i个用户Ui的特征向量Zi的方差,表示第i个用户Ui的特征向量Zi服从均值为0,方差为的高斯分布;同理,表示第i个用户Ui的特征向量Zi服从均值为方差为的高斯分布;N(i)表示第i个用户Ui的所有组内好友在所述相似度矩阵J中的下标集合;表示第个用户的特征向量;
步骤5.4、利用式(9)构建所述项目特征矩阵V的先验分布
<mrow>
<mi>P</mi>
<mrow>
<mo>(</mo>
<mi>V</mi>
<mo>|</mo>
<msubsup>
<mi>&sigma;</mi>
<mi>V</mi>
<mn>2</mn>
</msubsup>
<mo>)</mo>
</mrow>
<mo>=</mo>
<munderover>
<mo>&Pi;</mo>
<mrow>
<mi>j</mi>
<mo>=</mo>
<mn>1</mn>
</mrow>
<mrow>
<mo>|</mo>
<mi>I</mi>
<mo>|</mo>
</mrow>
</munderover>
<mi>N</mi>
<mrow>
<mo>(</mo>
<msub>
<mi>V</mi>
<mi>j</mi>
</msub>
<mo>|</mo>
<mn>0</mn>
<mo>,</mo>
<msubsup>
<mi>&sigma;</mi>
<mi>V</mi>
<mn>2</mn>
</msubsup>
<mover>
<mi>I</mi>
<mo>^</mo>
</mover>
<mo>)</mo>
</mrow>
<mo>-</mo>
<mo>-</mo>
<mo>-</mo>
<mrow>
<mo>(</mo>
<mn>9</mn>
<mo>)</mo>
</mrow>
</mrow>
式(9)中,表示第j个项目Ij的特征向量Vj的方差,表示第j个项目Ij的特征向量Vj服从均值为0,方差为的高斯分布;
步骤5.5、利用式(10)构建所述标签特征矩阵M的先验分布
<mrow>
<mi>P</mi>
<mrow>
<mo>(</mo>
<mi>M</mi>
<mo>|</mo>
<msubsup>
<mi>&sigma;</mi>
<mi>M</mi>
<mn>2</mn>
</msubsup>
<mo>)</mo>
</mrow>
<mo>=</mo>
<munderover>
<mo>&Sigma;</mo>
<mrow>
<mi>h</mi>
<mo>=</mo>
<mn>1</mn>
</mrow>
<mrow>
<mo>|</mo>
<mi>T</mi>
<mo>|</mo>
</mrow>
</munderover>
<mi>N</mi>
<mrow>
<mo>(</mo>
<msub>
<mi>M</mi>
<mi>h</mi>
</msub>
<mo>|</mo>
<mn>0</mn>
<mo>,</mo>
<msubsup>
<mi>&sigma;</mi>
<mi>M</mi>
<mn>2</mn>
</msubsup>
<mover>
<mi>I</mi>
<mo>^</mo>
</mover>
<mo>)</mo>
</mrow>
<mo>-</mo>
<mo>-</mo>
<mo>-</mo>
<mrow>
<mo>(</mo>
<mn>10</mn>
<mo>)</mo>
</mrow>
</mrow>
式(10)中,表示第h个标签Th的特征向量Mh的方差,表示第h个标签Th的特征向量Mh服从均值为0,方差为的高斯分布;
步骤5.6、由式(6)、式(7)、式(8)、式(9)和式(10)进行贝叶斯推断并取对数后再进行推导,得到如式(11)所示的目标函数E(Z,V,M,R′,J,B):
<mrow>
<mtable>
<mtr>
<mtd>
<mrow>
<mi>E</mi>
<mrow>
<mo>(</mo>
<mrow>
<mi>Z</mi>
<mo>,</mo>
<mi>V</mi>
<mo>,</mo>
<mi>M</mi>
<mo>,</mo>
<msup>
<mi>R</mi>
<mo>&prime;</mo>
</msup>
<mo>,</mo>
<mi>J</mi>
<mo>,</mo>
<mi>B</mi>
</mrow>
<mo>)</mo>
</mrow>
<mo>=</mo>
<mfrac>
<mn>1</mn>
<mn>2</mn>
</mfrac>
<munderover>
<mi>&Sigma;</mi>
<mrow>
<mi>i</mi>
<mo>=</mo>
<mn>1</mn>
</mrow>
<mrow>
<mo>|</mo>
<mi>U</mi>
<mo>|</mo>
</mrow>
</munderover>
<munderover>
<mi>&Sigma;</mi>
<mrow>
<mi>j</mi>
<mo>=</mo>
<mn>1</mn>
</mrow>
<mrow>
<mo>|</mo>
<mi>I</mi>
<mo>|</mo>
</mrow>
</munderover>
<msubsup>
<mi>I</mi>
<mrow>
<mi>i</mi>
<mo>,</mo>
<mi>j</mi>
</mrow>
<msup>
<mi>R</mi>
<mo>&prime;</mo>
</msup>
</msubsup>
<msup>
<mrow>
<mo>(</mo>
<mrow>
<msubsup>
<mi>R</mi>
<mrow>
<mi>i</mi>
<mo>,</mo>
<mi>j</mi>
</mrow>
<mo>&prime;</mo>
</msubsup>
<mo>-</mo>
<mi>g</mi>
<mrow>
<mo>(</mo>
<mrow>
<msubsup>
<mi>Z</mi>
<mi>i</mi>
<mi>T</mi>
</msubsup>
<msub>
<mi>V</mi>
<mi>j</mi>
</msub>
</mrow>
<mo>)</mo>
</mrow>
</mrow>
<mo>)</mo>
</mrow>
<mn>2</mn>
</msup>
<mo>+</mo>
</mrow>
</mtd>
</mtr>
<mtr>
<mtd>
<mrow>
<mfrac>
<msub>
<mi>&theta;</mi>
<mi>B</mi>
</msub>
<mn>2</mn>
</mfrac>
<munderover>
<mi>&Sigma;</mi>
<mi>j</mi>
<mrow>
<mo>|</mo>
<mi>I</mi>
<mo>|</mo>
</mrow>
</munderover>
<munderover>
<mi>&Sigma;</mi>
<mrow>
<mi>h</mi>
<mo>=</mo>
<mn>1</mn>
</mrow>
<mrow>
<mo>|</mo>
<mi>T</mi>
<mo>|</mo>
</mrow>
</munderover>
<msubsup>
<mi>I</mi>
<mrow>
<mi>j</mi>
<mo>,</mo>
<mi>h</mi>
</mrow>
<mi>B</mi>
</msubsup>
<msup>
<mrow>
<mo>(</mo>
<mrow>
<msub>
<mi>B</mi>
<mrow>
<mi>j</mi>
<mo>,</mo>
<mi>h</mi>
</mrow>
</msub>
<mo>-</mo>
<mi>g</mi>
<mrow>
<mo>(</mo>
<mrow>
<msubsup>
<mi>V</mi>
<mi>j</mi>
<mi>T</mi>
</msubsup>
<msub>
<mi>M</mi>
<mi>h</mi>
</msub>
</mrow>
<mo>)</mo>
</mrow>
</mrow>
<mo>)</mo>
</mrow>
<mn>2</mn>
</msup>
<mo>+</mo>
</mrow>
</mtd>
</mtr>
<mtr>
<mtd>
<mrow>
<mfrac>
<msub>
<mi>&theta;</mi>
<mi>J</mi>
</msub>
<mn>2</mn>
</mfrac>
<munderover>
<mi>&Sigma;</mi>
<mrow>
<mi>i</mi>
<mo>=</mo>
<mn>1</mn>
</mrow>
<mrow>
<mo>|</mo>
<mi>U</mi>
<mo>|</mo>
</mrow>
</munderover>
<msup>
<mrow>
<mo>(</mo>
<mrow>
<msub>
<mi>Z</mi>
<mi>i</mi>
</msub>
<mo>-</mo>
<munder>
<mi>&Sigma;</mi>
<mrow>
<mi>l</mi>
<mo>&Element;</mo>
<mi>N</mi>
<mrow>
<mo>(</mo>
<mi>i</mi>
<mo>)</mo>
</mrow>
</mrow>
</munder>
<msub>
<mi>J</mi>
<mrow>
<mi>i</mi>
<mo>,</mo>
<mi>l</mi>
</mrow>
</msub>
<msub>
<mi>Z</mi>
<mi>l</mi>
</msub>
</mrow>
<mo>)</mo>
</mrow>
<mi>T</mi>
</msup>
<mrow>
<mo>(</mo>
<mrow>
<msub>
<mi>Z</mi>
<mi>i</mi>
</msub>
<mo>-</mo>
<munder>
<mi>&Sigma;</mi>
<mrow>
<mi>l</mi>
<mo>&Element;</mo>
<mi>N</mi>
<mrow>
<mo>(</mo>
<mi>i</mi>
<mo>)</mo>
</mrow>
</mrow>
</munder>
<msub>
<mi>J</mi>
<mrow>
<mi>i</mi>
<mo>,</mo>
<mi>l</mi>
</mrow>
</msub>
<msub>
<mi>Z</mi>
<mi>l</mi>
</msub>
</mrow>
<mo>)</mo>
</mrow>
<mo>+</mo>
</mrow>
</mtd>
</mtr>
<mtr>
<mtd>
<mrow>
<mfrac>
<msub>
<mi>&theta;</mi>
<mi>Z</mi>
</msub>
<mn>2</mn>
</mfrac>
<munderover>
<mi>&Sigma;</mi>
<mrow>
<mi>i</mi>
<mo>=</mo>
<mn>1</mn>
</mrow>
<mrow>
<mo>|</mo>
<mi>U</mi>
<mo>|</mo>
</mrow>
</munderover>
<msubsup>
<mi>Z</mi>
<mi>i</mi>
<mi>T</mi>
</msubsup>
<msub>
<mi>Z</mi>
<mi>i</mi>
</msub>
<mo>+</mo>
<mfrac>
<msub>
<mi>&theta;</mi>
<mi>V</mi>
</msub>
<mn>2</mn>
</mfrac>
<munderover>
<mi>&Sigma;</mi>
<mrow>
<mi>j</mi>
<mo>=</mo>
<mn>1</mn>
</mrow>
<mrow>
<mo>|</mo>
<mi>I</mi>
<mo>|</mo>
</mrow>
</munderover>
<msubsup>
<mi>V</mi>
<mi>j</mi>
<mi>T</mi>
</msubsup>
<msub>
<mi>V</mi>
<mi>j</mi>
</msub>
<mo>+</mo>
<mfrac>
<msub>
<mi>&theta;</mi>
<mi>M</mi>
</msub>
<mn>2</mn>
</mfrac>
<munderover>
<mi>&Sigma;</mi>
<mrow>
<mi>h</mi>
<mo>=</mo>
<mn>1</mn>
</mrow>
<mrow>
<mo>|</mo>
<mi>T</mi>
<mo>|</mo>
</mrow>
</munderover>
<msubsup>
<mi>M</mi>
<mi>h</mi>
<mi>T</mi>
</msubsup>
<msub>
<mi>M</mi>
<mi>h</mi>
</msub>
</mrow>
</mtd>
</mtr>
</mtable>
<mo>-</mo>
<mo>-</mo>
<mo>-</mo>
<mrow>
<mo>(</mo>
<mn>11</mn>
<mo>)</mo>
</mrow>
</mrow>
式(11)中,分别反映用户特征矩阵Z、项目特征矩阵V、项目标签矩阵B、用户好友相似度矩阵J和标签特征矩阵M对目标函数E(Z,V,M,R′,J,B)的影响程度大小;
步骤5.7、设定迭代次数阈值为δ,学习率为α以及用户特征矩阵Z、项目特征矩阵V、标签特征矩阵M的矩阵特征维度Y并初始化迭代次数X=0;
步骤5.8、随机初始化用户特征矩阵Z、项目特征矩阵V和标签特征矩阵M,得到第X=1次迭代的第i个用户Ui的特征向量第j个项目Ij特征向量和第h个标签Th的特征向量
步骤5.9、利用式(12)、式(13)和式(14)分别获得第X次迭代的第i个用户Ui的的特征向量Zi的梯度第j个项目Ij的特征向量Vj的梯度和第h个标签Th的特征向量Mh的梯度
<mrow>
<mtable>
<mtr>
<mtd>
<mrow>
<msup>
<mrow>
<mo>(</mo>
<mfrac>
<mrow>
<mo>&part;</mo>
<mi>E</mi>
</mrow>
<mrow>
<mo>&part;</mo>
<msub>
<mi>Z</mi>
<mi>i</mi>
</msub>
</mrow>
</mfrac>
<mo>)</mo>
</mrow>
<mrow>
<mo>(</mo>
<mi>X</mi>
<mo>)</mo>
</mrow>
</msup>
<mo>=</mo>
<munderover>
<mi>&Sigma;</mi>
<mrow>
<mi>j</mi>
<mo>=</mo>
<mn>1</mn>
</mrow>
<mrow>
<mo>|</mo>
<mi>I</mi>
<mo>|</mo>
</mrow>
</munderover>
<msubsup>
<mi>I</mi>
<mrow>
<mi>i</mi>
<mo>,</mo>
<mi>j</mi>
</mrow>
<msup>
<mi>R</mi>
<mo>&prime;</mo>
</msup>
</msubsup>
<mrow>
<mo>&lsqb;</mo>
<mrow>
<mi>g</mi>
<mrow>
<mo>(</mo>
<mrow>
<msup>
<mrow>
<mo>(</mo>
<msubsup>
<mi>Z</mi>
<mi>i</mi>
<mrow>
<mo>(</mo>
<mi>X</mi>
<mo>)</mo>
</mrow>
</msubsup>
<mo>)</mo>
</mrow>
<mi>T</mi>
</msup>
<msup>
<msub>
<mi>V</mi>
<mi>j</mi>
</msub>
<mrow>
<mo>(</mo>
<mi>X</mi>
<mo>)</mo>
</mrow>
</msup>
</mrow>
<mo>)</mo>
</mrow>
<mo>-</mo>
<msubsup>
<mi>R</mi>
<mrow>
<mi>i</mi>
<mo>,</mo>
<mi>j</mi>
</mrow>
<mo>&prime;</mo>
</msubsup>
</mrow>
<mo>&rsqb;</mo>
</mrow>
<msup>
<mi>g</mi>
<mo>&prime;</mo>
</msup>
<mrow>
<mo>(</mo>
<mrow>
<msup>
<mrow>
<mo>(</mo>
<msubsup>
<mi>Z</mi>
<mi>i</mi>
<mrow>
<mo>(</mo>
<mi>X</mi>
<mo>)</mo>
</mrow>
</msubsup>
<mo>)</mo>
</mrow>
<mi>T</mi>
</msup>
<msup>
<msub>
<mi>V</mi>
<mi>j</mi>
</msub>
<mrow>
<mo>(</mo>
<mi>X</mi>
<mo>)</mo>
</mrow>
</msup>
</mrow>
<mo>)</mo>
</mrow>
<msup>
<msub>
<mi>V</mi>
<mi>j</mi>
</msub>
<mrow>
<mo>(</mo>
<mi>X</mi>
<mo>)</mo>
</mrow>
</msup>
<mo>+</mo>
</mrow>
</mtd>
</mtr>
<mtr>
<mtd>
<mrow>
<msub>
<mi>&theta;</mi>
<mi>Z</mi>
</msub>
<msup>
<msub>
<mi>Z</mi>
<mi>i</mi>
</msub>
<mrow>
<mo>(</mo>
<mi>X</mi>
<mo>)</mo>
</mrow>
</msup>
<mo>+</mo>
<msub>
<mi>&theta;</mi>
<mi>J</mi>
</msub>
<mrow>
<mo>&lsqb;</mo>
<mrow>
<msup>
<msub>
<mi>Z</mi>
<mi>i</mi>
</msub>
<mrow>
<mo>(</mo>
<mi>X</mi>
<mo>)</mo>
</mrow>
</msup>
<mo>-</mo>
<munder>
<mi>&Sigma;</mi>
<mrow>
<mi>l</mi>
<mo>&Element;</mo>
<msup>
<mi>N</mi>
<mo>&prime;</mo>
</msup>
<mrow>
<mo>(</mo>
<mi>i</mi>
<mo>)</mo>
</mrow>
</mrow>
</munder>
<msub>
<mi>J</mi>
<mrow>
<mi>i</mi>
<mo>,</mo>
<mi>l</mi>
</mrow>
</msub>
<msup>
<msub>
<mi>Z</mi>
<mi>l</mi>
</msub>
<mrow>
<mo>(</mo>
<mi>X</mi>
<mo>)</mo>
</mrow>
</msup>
</mrow>
<mo>&rsqb;</mo>
</mrow>
<mo>-</mo>
<msub>
<mi>&theta;</mi>
<mi>J</mi>
</msub>
<munder>
<mi>&Sigma;</mi>
<mrow>
<mo>{</mo>
<mrow>
<mi>l</mi>
<mo>|</mo>
<mi>l</mi>
<mo>&Element;</mo>
<msup>
<mi>N</mi>
<mo>&prime;</mo>
</msup>
<mrow>
<mo>(</mo>
<mi>i</mi>
<mo>)</mo>
</mrow>
</mrow>
<mo>}</mo>
</mrow>
</munder>
<msub>
<mi>J</mi>
<mrow>
<mi>i</mi>
<mo>,</mo>
<mi>l</mi>
</mrow>
</msub>
<mrow>
<mo>&lsqb;</mo>
<mrow>
<msup>
<msub>
<mi>Z</mi>
<mi>l</mi>
</msub>
<mrow>
<mo>(</mo>
<mi>X</mi>
<mo>)</mo>
</mrow>
</msup>
<mo>-</mo>
<munder>
<mi>&Sigma;</mi>
<mrow>
<mi>w</mi>
<mo>&Element;</mo>
<mi>N</mi>
<mrow>
<mo>(</mo>
<mi>l</mi>
<mo>)</mo>
</mrow>
</mrow>
</munder>
<msub>
<mi>J</mi>
<mrow>
<mi>l</mi>
<mo>,</mo>
<mi>w</mi>
</mrow>
</msub>
<msup>
<msub>
<mi>Z</mi>
<mi>w</mi>
</msub>
<mrow>
<mo>(</mo>
<mi>X</mi>
<mo>)</mo>
</mrow>
</msup>
</mrow>
<mo>&rsqb;</mo>
</mrow>
</mrow>
</mtd>
</mtr>
</mtable>
<mo>-</mo>
<mo>-</mo>
<mo>-</mo>
<mrow>
<mo>(</mo>
<mn>12</mn>
<mo>)</mo>
</mrow>
</mrow>
<mrow>
<mtable>
<mtr>
<mtd>
<mrow>
<msup>
<mrow>
<mo>(</mo>
<mfrac>
<mrow>
<mo>&part;</mo>
<mi>E</mi>
</mrow>
<mrow>
<mo>&part;</mo>
<msub>
<mi>V</mi>
<mi>j</mi>
</msub>
</mrow>
</mfrac>
<mo>)</mo>
</mrow>
<mrow>
<mo>(</mo>
<mi>X</mi>
<mo>)</mo>
</mrow>
</msup>
<mo>=</mo>
<munderover>
<mi>&Sigma;</mi>
<mrow>
<mi>i</mi>
<mo>=</mo>
<mn>1</mn>
</mrow>
<mrow>
<mo>|</mo>
<mi>U</mi>
<mo>|</mo>
</mrow>
</munderover>
<msubsup>
<mi>I</mi>
<mrow>
<mi>i</mi>
<mo>,</mo>
<mi>j</mi>
</mrow>
<msup>
<mi>R</mi>
<mo>&prime;</mo>
</msup>
</msubsup>
<mrow>
<mo>&lsqb;</mo>
<mrow>
<mi>g</mi>
<mrow>
<mo>(</mo>
<mrow>
<msup>
<mrow>
<mo>(</mo>
<msubsup>
<mi>Z</mi>
<mi>i</mi>
<mrow>
<mo>(</mo>
<mi>X</mi>
<mo>)</mo>
</mrow>
</msubsup>
<mo>)</mo>
</mrow>
<mi>T</mi>
</msup>
<msup>
<msub>
<mi>V</mi>
<mi>j</mi>
</msub>
<mrow>
<mo>(</mo>
<mi>X</mi>
<mo>)</mo>
</mrow>
</msup>
</mrow>
<mo>)</mo>
</mrow>
<mo>-</mo>
<msubsup>
<mi>R</mi>
<mrow>
<mi>i</mi>
<mo>,</mo>
<mi>j</mi>
</mrow>
<mo>&prime;</mo>
</msubsup>
</mrow>
<mo>&rsqb;</mo>
</mrow>
<msup>
<mi>g</mi>
<mo>&prime;</mo>
</msup>
<mrow>
<mo>(</mo>
<mrow>
<msup>
<mrow>
<mo>(</mo>
<msubsup>
<mi>Z</mi>
<mi>i</mi>
<mrow>
<mo>(</mo>
<mi>X</mi>
<mo>)</mo>
</mrow>
</msubsup>
<mo>)</mo>
</mrow>
<mi>T</mi>
</msup>
<msup>
<msub>
<mi>V</mi>
<mi>j</mi>
</msub>
<mrow>
<mo>(</mo>
<mi>X</mi>
<mo>)</mo>
</mrow>
</msup>
</mrow>
<mo>)</mo>
</mrow>
<msubsup>
<mi>Z</mi>
<mi>i</mi>
<mrow>
<mo>(</mo>
<mi>X</mi>
<mo>)</mo>
</mrow>
</msubsup>
<mo>+</mo>
</mrow>
</mtd>
</mtr>
<mtr>
<mtd>
<mrow>
<msub>
<mi>&theta;</mi>
<mi>B</mi>
</msub>
<munderover>
<mo>&Sigma;</mo>
<mrow>
<mi>h</mi>
<mo>=</mo>
<mn>1</mn>
</mrow>
<mrow>
<mo>|</mo>
<mi>T</mi>
<mo>|</mo>
</mrow>
</munderover>
<msubsup>
<mi>I</mi>
<mrow>
<mi>j</mi>
<mo>,</mo>
<mi>h</mi>
</mrow>
<mi>B</mi>
</msubsup>
<mo>&lsqb;</mo>
<mi>g</mi>
<mrow>
<mo>(</mo>
<msup>
<mrow>
<mo>(</mo>
<mrow>
<msup>
<msub>
<mi>V</mi>
<mi>j</mi>
</msub>
<mrow>
<mo>(</mo>
<mi>X</mi>
<mo>)</mo>
</mrow>
</msup>
</mrow>
<mo>)</mo>
</mrow>
<mi>T</mi>
</msup>
<msup>
<msub>
<mi>M</mi>
<mi>h</mi>
</msub>
<mrow>
<mo>(</mo>
<mi>X</mi>
<mo>)</mo>
</mrow>
</msup>
<mo>)</mo>
</mrow>
<mo>-</mo>
<msub>
<mi>B</mi>
<mrow>
<mi>j</mi>
<mo>,</mo>
<mi>h</mi>
</mrow>
</msub>
<mo>&rsqb;</mo>
<msup>
<mi>g</mi>
<mo>&prime;</mo>
</msup>
<mrow>
<mo>(</mo>
<msup>
<mrow>
<mo>(</mo>
<mrow>
<msup>
<msub>
<mi>V</mi>
<mi>j</mi>
</msub>
<mrow>
<mo>(</mo>
<mi>X</mi>
<mo>)</mo>
</mrow>
</msup>
</mrow>
<mo>)</mo>
</mrow>
<mi>T</mi>
</msup>
<msup>
<msub>
<mi>M</mi>
<mi>h</mi>
</msub>
<mrow>
<mo>(</mo>
<mi>X</mi>
<mo>)</mo>
</mrow>
</msup>
<mo>)</mo>
</mrow>
<msup>
<msub>
<mi>M</mi>
<mi>h</mi>
</msub>
<mrow>
<mo>(</mo>
<mi>X</mi>
<mo>)</mo>
</mrow>
</msup>
<mo>+</mo>
<msub>
<mi>&theta;</mi>
<mi>V</mi>
</msub>
<msup>
<msub>
<mi>V</mi>
<mi>j</mi>
</msub>
<mrow>
<mo>(</mo>
<mi>X</mi>
<mo>)</mo>
</mrow>
</msup>
</mrow>
</mtd>
</mtr>
</mtable>
<mo>-</mo>
<mo>-</mo>
<mo>-</mo>
<mrow>
<mo>(</mo>
<mn>13</mn>
<mo>)</mo>
</mrow>
</mrow>
4
<mrow>
<msup>
<mrow>
<mo>(</mo>
<mfrac>
<mrow>
<mo>&part;</mo>
<mi>E</mi>
</mrow>
<mrow>
<mo>&part;</mo>
<msub>
<mi>M</mi>
<mi>h</mi>
</msub>
</mrow>
</mfrac>
<mo>)</mo>
</mrow>
<mrow>
<mo>(</mo>
<mi>X</mi>
<mo>)</mo>
</mrow>
</msup>
<mo>=</mo>
<msub>
<mi>&theta;</mi>
<mi>B</mi>
</msub>
<munderover>
<mo>&Sigma;</mo>
<mrow>
<mi>j</mi>
<mo>=</mo>
<mn>1</mn>
</mrow>
<mrow>
<mo>|</mo>
<mi>I</mi>
<mo>|</mo>
</mrow>
</munderover>
<msubsup>
<mi>I</mi>
<mrow>
<mi>j</mi>
<mo>,</mo>
<mi>h</mi>
</mrow>
<mi>B</mi>
</msubsup>
<mo>&lsqb;</mo>
<mi>g</mi>
<mrow>
<mo>(</mo>
<msup>
<mrow>
<mo>(</mo>
<msubsup>
<mi>V</mi>
<mi>j</mi>
<mrow>
<mo>(</mo>
<mi>X</mi>
<mo>)</mo>
</mrow>
</msubsup>
<mo>)</mo>
</mrow>
<mi>T</mi>
</msup>
<msubsup>
<mi>M</mi>
<mi>h</mi>
<mrow>
<mo>(</mo>
<mi>X</mi>
<mo>)</mo>
</mrow>
</msubsup>
<mo>)</mo>
</mrow>
<mo>-</mo>
<msub>
<mi>B</mi>
<mrow>
<mi>j</mi>
<mo>,</mo>
<mi>h</mi>
</mrow>
</msub>
<mo>&rsqb;</mo>
<msup>
<mi>g</mi>
<mo>&prime;</mo>
</msup>
<mrow>
<mo>(</mo>
<msup>
<mrow>
<mo>(</mo>
<msubsup>
<mi>V</mi>
<mi>j</mi>
<mrow>
<mo>(</mo>
<mi>X</mi>
<mo>)</mo>
</mrow>
</msubsup>
<mo>)</mo>
</mrow>
<mi>T</mi>
</msup>
<msubsup>
<mi>M</mi>
<mi>h</mi>
<mrow>
<mo>(</mo>
<mi>X</mi>
<mo>)</mo>
</mrow>
</msubsup>
<mo>)</mo>
</mrow>
<msubsup>
<mi>V</mi>
<mi>j</mi>
<mrow>
<mo>(</mo>
<mi>X</mi>
<mo>)</mo>
</mrow>
</msubsup>
<mo>+</mo>
<msub>
<mi>&theta;</mi>
<mi>M</mi>
</msub>
<msubsup>
<mi>M</mi>
<mi>h</mi>
<mrow>
<mo>(</mo>
<mi>X</mi>
<mo>)</mo>
</mrow>
</msubsup>
<mo>-</mo>
<mo>-</mo>
<mo>-</mo>
<mrow>
<mo>(</mo>
<mn>14</mn>
<mo>)</mo>
</mrow>
</mrow>
式(12)中,表示第个用户的所有组内好友在所述相似度矩阵J中的下标集合;N′(i)表示第i个用户Ui的所有组内好友在所述相似度矩阵J中的下标集合;
步骤5.10、利用式(15)、式(16)和式(17)和第X次迭代的第i个用户Ui的特征向量第X次迭代的第j个项目Ij特征向量和第X次迭代的第h个标签Th的特征向量获得第X+1次迭代的第i个用户Ui的特征向量第j个项目Ij的特征向量和第h个标签Th的特征向量
<mrow>
<msubsup>
<mi>Z</mi>
<mi>i</mi>
<mrow>
<mo>(</mo>
<mi>X</mi>
<mo>+</mo>
<mn>1</mn>
<mo>)</mo>
</mrow>
</msubsup>
<mo>=</mo>
<msubsup>
<mi>Z</mi>
<mi>i</mi>
<mrow>
<mo>(</mo>
<mi>X</mi>
<mo>)</mo>
</mrow>
</msubsup>
<mo>-</mo>
<mi>&alpha;</mi>
<msup>
<mrow>
<mo>(</mo>
<mfrac>
<mrow>
<mo>&part;</mo>
<mi>E</mi>
</mrow>
<mrow>
<mo>&part;</mo>
<msub>
<mi>Z</mi>
<mi>i</mi>
</msub>
</mrow>
</mfrac>
<mo>)</mo>
</mrow>
<mrow>
<mo>(</mo>
<mi>X</mi>
<mo>)</mo>
</mrow>
</msup>
<mo>-</mo>
<mo>-</mo>
<mo>-</mo>
<mrow>
<mo>(</mo>
<mn>15</mn>
<mo>)</mo>
</mrow>
</mrow>
<mrow>
<msubsup>
<mi>V</mi>
<mi>i</mi>
<mrow>
<mo>(</mo>
<mi>X</mi>
<mo>+</mo>
<mn>1</mn>
<mo>)</mo>
</mrow>
</msubsup>
<mo>=</mo>
<msubsup>
<mi>V</mi>
<mi>i</mi>
<mrow>
<mo>(</mo>
<mi>X</mi>
<mo>)</mo>
</mrow>
</msubsup>
<mo>-</mo>
<mi>&alpha;</mi>
<msup>
<mrow>
<mo>(</mo>
<mfrac>
<mrow>
<mo>&part;</mo>
<mi>E</mi>
</mrow>
<mrow>
<mo>&part;</mo>
<msub>
<mi>V</mi>
<mi>i</mi>
</msub>
</mrow>
</mfrac>
<mo>)</mo>
</mrow>
<mrow>
<mo>(</mo>
<mi>X</mi>
<mo>)</mo>
</mrow>
</msup>
<mo>-</mo>
<mo>-</mo>
<mo>-</mo>
<mrow>
<mo>(</mo>
<mn>16</mn>
<mo>)</mo>
</mrow>
</mrow>
<mrow>
<msubsup>
<mi>M</mi>
<mi>i</mi>
<mrow>
<mo>(</mo>
<mi>X</mi>
<mo>+</mo>
<mn>1</mn>
<mo>)</mo>
</mrow>
</msubsup>
<mo>=</mo>
<msubsup>
<mi>M</mi>
<mi>i</mi>
<mrow>
<mo>(</mo>
<mi>X</mi>
<mo>)</mo>
</mrow>
</msubsup>
<mo>-</mo>
<mi>&alpha;</mi>
<msup>
<mrow>
<mo>(</mo>
<mfrac>
<mrow>
<mo>&part;</mo>
<mi>E</mi>
</mrow>
<mrow>
<mo>&part;</mo>
<msub>
<mi>M</mi>
<mi>i</mi>
</msub>
</mrow>
</mfrac>
<mo>)</mo>
</mrow>
<mrow>
<mo>(</mo>
<mi>X</mi>
<mo>)</mo>
</mrow>
</msup>
<mo>-</mo>
<mo>-</mo>
<mo>-</mo>
<mrow>
<mo>(</mo>
<mn>17</mn>
<mo>)</mo>
</mrow>
</mrow>
步骤5.11、将X+1赋给X,判断X<δ是否成立,若成立,则重复步骤5.9和步骤5.10执行;否则,表示获得第δ次迭代的第i个用户Ui的特征向量第δ次迭代的第j个项目Ij的特征向量和第δ次迭代的第h个标签的特征向量从而获得所有用户最终的用户特征矩阵Z′,所有项目最终的项目特征矩阵V′和所有标签最终的标签特征矩阵M′;
步骤6、获取对每个用户预测分值最高的前N个项目所构成的推荐列表;
步骤6.1、利用式(18)得到第i个用户Ui对第j个项目Ij的预测分值
<mrow>
<msub>
<mover>
<mi>R</mi>
<mo>^</mo>
</mover>
<mrow>
<mi>i</mi>
<mo>,</mo>
<mi>j</mi>
</mrow>
</msub>
<mo>=</mo>
<munderover>
<mo>&Sigma;</mo>
<mrow>
<mi>m</mi>
<mo>=</mo>
<mn>1</mn>
</mrow>
<mi>Y</mi>
</munderover>
<msubsup>
<mi>Z</mi>
<mi>i</mi>
<mrow>
<mo>&prime;</mo>
<mrow>
<mo>(</mo>
<mi>m</mi>
<mo>)</mo>
</mrow>
</mrow>
</msubsup>
<msubsup>
<mi>V</mi>
<mi>j</mi>
<mrow>
<mo>&prime;</mo>
<mrow>
<mo>(</mo>
<mi>m</mi>
<mo>)</mo>
</mrow>
</mrow>
</msubsup>
<mo>-</mo>
<mo>-</mo>
<mo>-</mo>
<mrow>
<mo>(</mo>
<mn>18</mn>
<mo>)</mo>
</mrow>
</mrow>
式(18)中,表示所述最终的用户特征矩阵Z′中第i个用户Ui的特征向量Z′i的第m个元素;表示最终的项目特征矩阵V′中第j个项目Ij的特征向量Vi′的第m个元素;1≤m≤Y;
步骤6.2、重复步骤6.1,从而获得第i个用户Ui对所有项目的预测分值,并从所有项目的预测分值中选取分值最高的且第i个用户Ui未选择过的前N个项目组成第i个用户Ui的推荐列表,进而获得所有用户的推荐列表。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610530667.1A CN106156333B (zh) | 2016-07-06 | 2016-07-06 | 一种融合社会化信息的改进单类协同过滤方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610530667.1A CN106156333B (zh) | 2016-07-06 | 2016-07-06 | 一种融合社会化信息的改进单类协同过滤方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN106156333A CN106156333A (zh) | 2016-11-23 |
CN106156333B true CN106156333B (zh) | 2017-09-22 |
Family
ID=58061668
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610530667.1A Active CN106156333B (zh) | 2016-07-06 | 2016-07-06 | 一种融合社会化信息的改进单类协同过滤方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN106156333B (zh) |
Families Citing this family (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106649824A (zh) * | 2016-12-29 | 2017-05-10 | 东方网力科技股份有限公司 | 一种行为预测方法和装置 |
CN106919647B (zh) * | 2017-01-17 | 2020-10-30 | 浙江工业大学 | 一种基于聚类的网络结构相似性推荐方法 |
CN107239993B (zh) * | 2017-05-24 | 2020-11-24 | 海南大学 | 一种基于拓展标签的矩阵分解推荐方法及系统 |
CN107704631B (zh) * | 2017-10-30 | 2020-12-01 | 西华大学 | 一种基于众包的音乐标注原子库的构建方法 |
CN108388624B (zh) * | 2018-02-12 | 2022-05-17 | 科大讯飞股份有限公司 | 多媒体信息推荐方法及装置 |
CN109753993A (zh) * | 2018-12-11 | 2019-05-14 | 东软集团股份有限公司 | 用户画像方法、装置、计算机可读存储介质及电子设备 |
CN110334284B (zh) * | 2019-04-03 | 2021-07-30 | 厦门大学 | 一种新型融合多因素决策的推荐方法 |
CN110197404B (zh) * | 2019-06-12 | 2022-04-01 | 合肥工业大学 | 可降低流行度偏差的个性化长尾商品推荐方法和系统 |
CN111368203A (zh) * | 2020-03-09 | 2020-07-03 | 电子科技大学 | 一种基于图神经网络的新闻推荐方法及其系统 |
CN113392323B (zh) * | 2021-06-15 | 2022-04-19 | 电子科技大学 | 基于多源数据联合学习的商务角色预测方法 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103092911A (zh) * | 2012-11-20 | 2013-05-08 | 北京航空航天大学 | 一种融合社会标签相似度基于k近邻的协同过滤推荐系统 |
CN103309967A (zh) * | 2013-06-05 | 2013-09-18 | 清华大学 | 基于相似性传递的协同过滤方法及系统 |
CN104239390A (zh) * | 2014-06-11 | 2014-12-24 | 杭州联汇数字科技有限公司 | 一种基于改进型协同过滤算法的音频推荐方法 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104166732B (zh) * | 2014-08-29 | 2017-04-12 | 合肥工业大学 | 一种基于全局评分信息的项目协同过滤推荐方法 |
US20160191450A1 (en) * | 2014-12-31 | 2016-06-30 | Socialtopias, Llc | Recommendations Engine in a Layered Social Media Webpage |
-
2016
- 2016-07-06 CN CN201610530667.1A patent/CN106156333B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103092911A (zh) * | 2012-11-20 | 2013-05-08 | 北京航空航天大学 | 一种融合社会标签相似度基于k近邻的协同过滤推荐系统 |
CN103309967A (zh) * | 2013-06-05 | 2013-09-18 | 清华大学 | 基于相似性传递的协同过滤方法及系统 |
CN104239390A (zh) * | 2014-06-11 | 2014-12-24 | 杭州联汇数字科技有限公司 | 一种基于改进型协同过滤算法的音频推荐方法 |
Non-Patent Citations (2)
Title |
---|
基于矩阵分解的推荐系统算法研究;王鹏;《中国优秀硕士学位论文全文数据库 信息科技辑》;20151015;第I138-612页 * |
改进的单类协同过滤推荐方法;王鹏等;《计算机科学与探索》;20140516;第8卷(第10期);第1231-1238页 * |
Also Published As
Publication number | Publication date |
---|---|
CN106156333A (zh) | 2016-11-23 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106156333B (zh) | 一种融合社会化信息的改进单类协同过滤方法 | |
CN110059198B (zh) | 一种基于相似性保持的跨模态数据的离散哈希检索方法 | |
CN103744981B (zh) | 一种基于网站内容用于网站自动分类分析的系统 | |
CN101685458B (zh) | 一种基于协同过滤的推荐方法和系统 | |
CN104317834B (zh) | 一种基于深度神经网络的跨媒体排序方法 | |
CN102129470A (zh) | 标签聚类方法和系统 | |
CN103488713B (zh) | 一种可直接度量不同模态数据间相似性的跨模态检索方法 | |
CN103593474B (zh) | 基于深度学习的图像检索排序方法 | |
CN102254043A (zh) | 一种基于语义映射的服装图像检索方法 | |
CN104915861A (zh) | 基于评分和标签构建用户群体模型的电子商务推荐方法 | |
CN105373597A (zh) | 基于k-medoids项目聚类和局部兴趣融合的用户协同过滤推荐方法 | |
CN104008165A (zh) | 一种基于网络拓扑结构和节点属性的社团检测方法 | |
CN110795571A (zh) | 基于深度学习和知识图谱的文化旅游资源推荐方法 | |
CN105893609A (zh) | 一种基于加权混合的移动app推荐方法 | |
CN110110225B (zh) | 基于用户行为数据分析的在线教育推荐模型及构建方法 | |
CN104268142B (zh) | 基于可拒绝策略的元搜索结果排序方法 | |
CN102750347B (zh) | 一种用于图像或视频搜索重排序的方法 | |
CN103761237A (zh) | 一种基于用户特征及其信任度的协同过滤推荐方法 | |
CN101963971A (zh) | 使用相关性反馈进行数据库搜索的方法及相应的储存介质 | |
CN104166732B (zh) | 一种基于全局评分信息的项目协同过滤推荐方法 | |
CN105354260B (zh) | 一种融合社会网络和项目特征的移动应用推荐方法 | |
CN108345697A (zh) | 面向大学生群体的智慧课程推荐方法、系统及存储介质 | |
CN110263257A (zh) | 基于深度学习的多源异构数据混合推荐模型 | |
CN109241527B (zh) | 一种中文商品虚假评论数据集自动生成方法 | |
CN110489523A (zh) | 一种基于网购评价的细粒度情感分析方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |