一种基于非对称距离构建子矩阵的评分预测方法转让专利

申请号 : CN201811382976.4

文献号 : CN109636509B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 王邦杨雪娇刘生昊

申请人 : 华中科技大学

摘要 :

本发明公开了一种基于非对称距离构建子矩阵的评分预测方法,使用非对称距离衡量每个用户‑物品评分对与锚点之间的关系,让每个锚点邻域的兴趣尽可能集中在锚点附近,构成的子矩阵相比于使用对称距离更能反映某一群组用户的集中兴趣,对矩阵中空缺项的预测结果会更好;采用快速寻找密度峰的聚类方法来选择锚点,使每个锚点都有较大的邻域密度,并且彼此之间间隔较远,从而导致分割得到的子矩阵分布均匀,具有代表性,能够有效覆盖原始评分矩阵;使用非对称距离衡量矩阵中的每个用户‑物品评分对与锚点之间的关系,减小了对称距离下评分个数太少给距离带来的惩罚,对于评分个数较少的不活跃用户或冷门物品,会有更大的概率被划分到子矩阵中,提高了子矩阵对数据的覆盖程度。

权利要求 :

1.一种基于非对称距离构建子矩阵的评分预测方法,其特征在于,该方法包括以下步骤:S1.使用非负矩阵分解方法对用户-物品评分矩阵进行分解,得到用户特征矩阵和物品特征矩阵;

S2.根据用户特征矩阵,构建用户之间的非对称距离矩阵,根据物品特征矩阵,构建物品之间的非对称距离矩阵;

S3.根据用户之间的非对称距离矩阵,选取q个锚点用户,根据物品之间的非对称距离矩阵,选取q个锚点物品,锚点用户和锚点物品随机配对,构成q个锚点;

S4.对于每个锚点,根据用户特征矩阵,计算用户到锚点用户的非对称距离,根据物品特征矩阵,计算物品到锚点物品之间的非对称距离;

S5.对于每个锚点,根据用户到锚点用户的非对称距离和物品到锚点物品之间的非对称距离,计算用户-物品对与锚点的相似度,并根据相似度确定该锚点的邻域,该锚点和它的全部邻域构成以该锚点为核心的子矩阵;

S6.对于每个子矩阵,使用带权重的矩阵分解方法对该子矩阵进行训练,得到该子矩阵中用户对物品的预测评分;

S7.将q个子矩阵的预测评分进行加权平均,得到用户对物品的最终预测评分;

步骤S3包括以下子步骤:

S301.统计用户之间的非对称距离矩阵的第i行中小于距离阈值 的元素个数,作为用户i的密度 统计物品之间的非对称距离矩阵的第j行中小于距离阈值 的元素个数,作为物品j的密度S302.对于用户i,找到密度大于 的所有用户,分别计算这些用户中每个用户与用户i的平均距离,所有平均距离的最小值为用户i的分离距离 对于物品j,找到密度大于的所有物品,分别计算这些物品中每个物品与物品j的平均距离,所有平均距离的最小值为物品j的分离距离S303.计算用户i的代表度 选取用户代表度最大的q个用户作为锚点用户,计算物品j的代表度 选取物品代表度最大的q个物品作为锚点物品;

S304.将q个锚点用户和q个锚点物品随机配对,得到q个锚点用户-锚点物品对,锚点用户-锚点物品对构成锚点;

其中,i=1,2,…M,j=1,2,…N,M表示用户的数量,N表示物品的数量;

步骤S6具体为:将锚点(ut,vt)为核心的子矩阵分解为用户因子矩阵Ut和物品因子矩阵Vt,通过梯度下降方法不断的迭代训练,目标函数如下:其中, 表示用户-物品对(I,J)到锚点(ut,vt)的相似度,作为矩阵分解的权重;RIJ表示用户I对物品J的实际评分,λ表示正则化系数,训练收敛时的Ut和Vt就是要获得的用户因子矩阵和物品因子矩阵,t=1,2,…q;

该子矩阵中用户I对物品J的预测评分

2.如权利要求1所述的评分预测方法,其特征在于,步骤S2中,对于用户i′,使用用户特征矩阵,计算其他用户到它的非对称距离:其中,Dkl(Pj′||Pi′)表示用户j′到用户i′的距离,Pi′表示用户特征矩阵第i′行,K为用户特征矩阵的列数,i′=1,2,…M,j′=1,2,…M,M表示用户的数量; 即为用户之间非对称距离矩阵的第i′行第j′列的值;

对于物品i″,使用物品特征矩阵,计算其他物品到它的非对称距离:其中,Dkl(Qj″||Qi″)表示物品j″到物品i″的距离,Qi″表示物品特征矩阵第i″行,K为物品特征矩阵的列数,i″=1,2,…N,j″=1,2,…N,N表示物品的数量, 即为物品之间非对称距离矩阵的第i″行第j″列的值。

3.如权利要求1所述的评分预测方法,其特征在于,点a与点b的平均距离等于(disab+disba)/2,disab为点a到b的非对称距离,disba为点b到a的非对称距离。

4.如权利要求1所述的评分预测方法,其特征在于,阈值 的选取让用户的邻居个数平均值为用户总数的4%,阈值 的选取让物品的邻居个数平均值为物品总数的4%。

5.如权利要求1所述的评分预测方法,其特征在于,锚点个数q是根据数据集情况自动确定的,具体如下:(1)将所有用户代表度降序排列,在该排列中,计算第i个用户代表度与排在它之后10个用户代表度均值之差,若差值大于预设阈值,则将该用户加入候选锚点用户列表,继续计算第i+1个用户;若差值不大于预设阈值,则进入步骤(2);

(2)将所有物品代表度降序排列,在该排列中,计算第j个物品代表度与排在它之后10个物品代表度均值之差,若差值大于预设阈值,则将该物品加入候选锚点物品列表,继续计算第j+1个物品;若差值不大于预设阈值,则进入步骤(3);

(3)比较候选用户列表里的用户个数和候选物品列表里的物品个数,选择较大值作为锚点个数q。

6.如权利要求1所述的评分预测方法,其特征在于,步骤S5包括以下子步骤:S501.计算用户-物品对(I,J)到锚点(ut,vt)的相似度为 计算公式如下:其中,Dkl(s1||s2)表示s1到s2的非对称距离,h为距离阈值,t=1,2,…q;

S502.判断 是否不等于0,若是,则用户-物品对(I,J)是锚点(ut,vt)的邻域,否则,用户-物品对(I,J)不是锚点(ut,vt)的邻域;

S503.锚点(ut,vt)和它的全部邻域构成了以该锚点为核心的子矩阵。

7.如权利要求1所述的评分预测方法,其特征在于,步骤S7中用户对物品的最终预测评分的计算公式如下:其中, 表示用户I对物品J的最终预测评分, 表示第t个子矩阵中用户I对物品J的预测评分, 表示用户-物品对(I,J)到锚点(ut,vt)的相似度,(ut,vt)表示第t个锚点。

8.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如权利要求1至7任一项所述的评分预测方法。

说明书 :

一种基于非对称距离构建子矩阵的评分预测方法

技术领域

[0001] 本发明属于个性化推荐领域,更具体地,涉及一种基于非对称距离构建子矩阵的评分预测方法。

背景技术

[0002] 随着web2.0时代的到来和网络带宽的极大提升,各种各样的社交网络平台开始出现,碎片化的信息开始充斥着人们的生活。为了解决信息过载问题,个性化推荐系统越来越显现出它的重要价值。例如在电商领域,推荐系统根据用户的历史行为信息构建用户的兴趣模型,计算用户对他们没有购买过的物品的喜欢程度,然后给用户推荐他可能会喜欢的物品。
[0003] 在实际应用中,对用户偏好的预测通常采用协同过滤方法进行,其基本思想是:基于用户对物品的评分找到和其偏好相似的邻居用户,然后将该邻居用户所喜欢的物品推荐给当前用户,其中最著名的就是矩阵分解技术。矩阵分解技术通过假设原始评分矩阵为全局低秩的,利用SVD的思想,将其拆解为用户因子矩阵和物品因子矩阵,让这两个矩阵的乘积尽可能还原原始评分矩阵,同时对原始评分矩阵的空缺项进行预测。不同于这些基于全局低秩的矩阵分解方法,近年来提出一种基于局部低秩的分解方法,在评分矩阵中随机选择若干个锚点,根据每个数据到不同锚点的距离将其分配到不同的子矩阵进行预测。
[0004] 然而,该方法依赖每个点到锚点的对称距离来进行子矩阵划分,所得到的子矩阵并不能很好地反映一组相似用户的集中兴趣,同时子矩阵的划分方式受预设锚点(锚点的个数及分布)的影响较大,且存在少量数据点因没有被划分到任何一个子矩阵而成为“孤立点”,这些问题导致评分预测结果准确度受限。

发明内容

[0005] 针对现有技术的缺陷,本发明的目的在于解决现有技术中推荐系统的评分预测结果准确度受限的技术问题。
[0006] 为实现上述目的,第一方面,本发明实施例提供了一种基于非对称距离构建子矩阵的评分预测方法,该方法包括以下步骤:
[0007] S1.使用非负矩阵分解方法对用户-物品评分矩阵进行分解,得到用户特征矩阵和物品特征矩阵;
[0008] S2.根据用户特征矩阵,构建用户之间的非对称距离矩阵,根据物品特征矩阵,构建物品之间的非对称距离矩阵;
[0009] S3.根据用户之间的非对称距离矩阵,选取q个锚点用户,根据物品之间的非对称距离矩阵,选取q个锚点物品,锚点用户和锚点物品随机配对,构成q个锚点;
[0010] S4.对于每个锚点,根据用户特征矩阵,计算用户到锚点用户的非对称距离,根据物品特征矩阵,计算物品到锚点物品之间的非对称距离;
[0011] S5.对于每个锚点,根据用户到锚点用户的非对称距离和物品到锚点物品之间的非对称距离,计算用户-物品对与锚点的相似度,并根据相似度确定该锚点的邻域,该锚点和它的全部邻域构成以该锚点为核心的子矩阵;
[0012] S6.对于每个子矩阵,使用带权重的矩阵分解方法对该子矩阵进行训练,得到该子矩阵中用户对物品的预测评分;
[0013] S7.将q个子矩阵的预测评分进行加权平均,得到用户对物品的最终预测评分。
[0014] 具体地,步骤S2中,对于用户i′,使用用户特征矩阵,计算其他用户到它的非对称距离:
[0015]
[0016] 其中,Dkl(Pj′||Pi′)表示用户j′到用户i′的距离,Pi′表示用户特征矩阵第i′行,K为用户特征矩阵的列数,i′=1,2,…M,j′=1,2,…M,M表示用户的数量; 即为用户之间非对称距离矩阵的第i′行第j′列的值;
[0017] 对于物品i″,使用物品特征矩阵,计算其他物品到它的非对称距离:
[0018]
[0019] 其中,Dkl(Qj″||Qi″)表示物品j″到物品i″的距离,Qi″表示物品特征矩阵第i″行,K为物品特征矩阵的列数,i″=1,2,…N,j″=1,2,…N,N表示物品的数量, 即为物品之间非对称距离矩阵的第i″行第j″列的值。
[0020] 具体地,步骤S3包括以下子步骤:
[0021] S301.统计用户之间的非对称距离矩阵的第i行中小于距离阈值 的元素个数,作为用户i的密度 统计物品之间的非对称距离矩阵的第j行中小于距离阈值 的元素个数,作为物品j的密度
[0022] S302.对于用户i,找到密度大于 的所有用户,分别计算这些用户中每个用户与用户i的平均距离,所有平均距离的最小值为用户i的分离距离 对于物品j,找到密度大于 的所有物品,分别计算这些物品中每个物品与物品j的平均距离,所有平均距离的最小值为物品j的分离距离
[0023] S303.计算用户i的代表度 选取用户代表度最大的q个用户作为锚点用户,计算物品j的代表度 选取物品代表度最大的q个物品作为锚点物品;
[0024] S304.将q个锚点用户和q个锚点物品随机配对,得到q个锚点用户-锚点物品对,锚点用户-锚点物品对构成锚点;
[0025] 其中,i=1,2,…M,j=1,2,…N,M表示用户的数量,N表示物品的数量。
[0026] 具体地,点a与点b的平均距离等于(disab+disba)/2,disab为点a到b的非对称距离,disba为点b到a的非对称距离。
[0027] 具体地,阈值 的选取尽可能让用户的邻居个数平均值接近用户总数的4%,阈值的选取尽可能让物品的邻居个数平均值接近物品总数的4%。
[0028] 具体地,锚点个数q是根据数据集情况自动确定的,具体如下:
[0029] (1)将所有用户代表度降序排列,在该排列中,计算第i个用户代表度与排在它之后10个用户代表度均值之差,若差值大于预设阈值,则将该用户加入候选锚点用户列表,继续计算第i+1个用户;若差值不大于预设阈值,则进入步骤(2);
[0030] (2)将所有物品代表度降序排列,在该排列中,计算第j个物品代表度与排在它之后10个物品代表度均值之差,若差值大于预设阈值,则将该物品加入候选锚点物品列表,继续计算第j+1个物品;若差值不大于预设阈值,则进入步骤(3);
[0031] (3)比较候选用户列表里的用户个数和候选物品列表里的物品个数,选择较大值作为锚点个数q。
[0032] 具体地,步骤S5包括以下子步骤:
[0033] S501.计算用户-物品对(I,J)到锚点(ut,vt)的相似度为 计算公式如下:
[0034]
[0035]
[0036] 其中,Dkl(s1||s2)表示s1到s2的非对称距离,h为距离阈值,t=1,2,…q;
[0037] S502.判断 是否不等于0,若是,则用户-物品对(I,J)是锚点(ut,vt)的邻域,否则,用户-物品对(I,J)不是锚点(ut,vt)的邻域;
[0038] S503.锚点(ut,vt)和它的全部邻域构成了以该锚点为核心的子矩阵。
[0039] 具体地,步骤S6具体为:将锚点(ut,vt)为核心的子矩阵分解为用户因子矩阵Ut和物品因子矩阵Vt,通过梯度下降方法不断的迭代训练,目标函数如下:
[0040]
[0041] 其中, 表示用户-物品对(I,J)到锚点(ut,vt)的相似度,作为矩阵分解的权重;RIJ表示用户I对物品J的实际评分,λ表示正则化系数,训练收敛时的Ut和Vt就是我们要获得的用户因子矩阵和物品因子矩阵,t=1,2,…q;
[0042] 该子矩阵中用户I对物品J的预测评分
[0043] 具体地,步骤S7中用户对物品的最终预测评分的计算公式如下:
[0044]
[0045] 其中, 表示用户I对物品J的最终预测评分, 表示第t个子矩阵中用户I对物品J的预测评分, 表示用户-物品对(I,J)到锚点(ut,vt)的相似度,(ut,vt)表示第t个锚点。
[0046] 第二方面,本发明实施例提供了一种计算机可读存储介质,该计算机可读存储介质上存储有计算机程序,该计算机程序被处理器执行时实现上述第一方面所述的评分预测方法。
[0047] 总体而言,通过本发明所构思的以上技术方案与现有技术相比,具有以下有益效果:
[0048] 1.本发明使用非对称距离衡量矩阵中的每个用户-物品评分对与锚点之间的关系,让每个锚点邻域的兴趣尽可能集中在锚点附近,因此构成的子矩阵相比于使用对称距离更能反映某一群组用户的集中兴趣,对矩阵中空缺项的预测结果会更好,预测精确度更高。
[0049] 2.本发明采用一种快速寻找密度峰的聚类方法来选择锚点,使每个锚点都有较大的邻域密度,并且彼此之间间隔较远,从而导致分割得到的子矩阵分布均匀,具有代表性,能够有效覆盖原始评分矩阵。
[0050] 3.本发明在选择锚点的过程中所衡量的每个点的邻域密度和间距具有一定的分布特性,从而能够自动确定锚点个数,使锚点个数能根据数据集大小自适应地调整,提高了训练效率。
[0051] 4.本发明使用非对称距离衡量矩阵中的每个用户-物品评分对与锚点之间的关系,减小了对称距离下评分个数太少给距离带来的惩罚,对于评分个数较少的不活跃用户或冷门物品,会有更大的概率被划分到子矩阵中,提高了子矩阵对数据的覆盖程度,预测精确度更高。

附图说明

[0052] 图1为本发明实施例提供的一种基于非对称距离构建子矩阵的评分预测方法流程图;
[0053] 图2为本发明实施例中选择锚点过程中指标代表度γ降序排列示意图;
[0054] 图3为本发明实施例提供的使用非对称距离确定的锚点邻域示意图;
[0055] 图4为现有技术中使用对称距离确定的锚点邻域示意图;
[0056] 图5为本发明实施例提供的根据锚点构建子矩阵的示意图。

具体实施方式

[0057] 为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
[0058] 本发明的整体思路在于,首先根据数据集中每个用户、物品的密度大小和与密度更大点的距离,自动确定最佳锚点个数,并挑选出合适的用户和物品组成锚点;然后依据数据集中其它用户或物品到锚点的非对称距离,为每个锚点寻找邻域,从而组成一个个子矩阵;之后在每个子矩阵中进行带权重的矩阵分解,对目标项进行评分预测。最后将每个子矩阵里的预测结果进行结合,形成最终的预测结果。
[0059] 如图1所示,一种基于非对称距离构建子矩阵的评分预测方法,该方法包括以下步骤:
[0060] S1.使用非负矩阵分解方法对用户-物品评分矩阵进行分解,得到用户特征矩阵和物品特征矩阵;
[0061] S2.根据用户特征矩阵,构建用户之间的非对称距离矩阵,根据物品特征矩阵,构建物品之间的非对称距离矩阵;
[0062] S3.根据用户之间的非对称距离矩阵,选取q个锚点用户,根据物品之间的非对称距离矩阵,选取q个锚点物品,锚点用户和锚点物品随机配对,构成q个锚点;
[0063] S4.对于每个锚点,根据用户特征矩阵,计算用户到锚点用户的非对称距离,根据物品特征矩阵,计算物品到锚点物品之间的非对称距离;
[0064] S5.对于每个锚点,根据用户到锚点用户的非对称距离和物品到锚点物品之间的非对称距离,计算用户-物品对与锚点的相似度,并根据相似度确定该锚点的邻域,该锚点和它的全部邻域构成以该锚点为核心的子矩阵;
[0065] S6.对于每个子矩阵,使用带权重的矩阵分解方法对该子矩阵进行训练,得到该子矩阵中用户对物品的预测评分;
[0066] S7.将q个子矩阵的预测评分进行加权平均,得到用户对物品的最终预测评分。
[0067] 步骤S1.使用非负矩阵分解方法对用户-物品评分矩阵进行分解,得到用户特征矩阵和物品特征矩阵。
[0068] 根据用户数据、物品数据、用户对物品的评分的数据,构建用户-物品评分矩阵RM×N。
[0069]
[0070] 其中,M表示用户的数量,N表示物品的数量,Rij表示用户i对物品j的评分,i=1,2,…M,j=1,2,…N。
[0071] 使用非负矩阵分解方法分解用户-物品评分矩阵RM×N,得到用户特征矩阵PM×K和物品特征矩阵QN×K。
[0072]
[0073] 同一时候要求:
[0074]
[0075] 其中,PM×K表示M个用户与K个主题之间的关系,QN×K表示N个物品与K个主题之间的关系。PM×K的每一行代表一个用户K维的特征向量,QN×K的每一行代表了一个物品K维的特征向量。
[0076] 通过非负矩阵分解提取用户、物品的特征向量,避免了直接使用评分矩阵中的一行或一列作为特征向量而导致的过于稀疏的问题。同时,非负矩阵分解保证了特征向量每个维度都是正值,有利于接下来的处理。
[0077] 步骤S2.根据用户特征矩阵,构建用户之间的非对称距离矩阵,根据物品特征矩阵,构建物品之间的非对称距离矩阵。
[0078] 非对称距离是指点a到点b的距离不等于点b到点a的距离。设点a到b的距离为disab,点b到a的距离为disba,disab≠disba。
[0079] 对于用户i′,使用用户特征矩阵PM×K,计算其他用户到它的非对称距离[0080]
[0081] 其中,Dkl(Pj′||Pi′)表示用户j′到用户i′的距离,Pi′表示用户特征矩阵第i′行,K为用户特征矩阵的列数。最终构成了非对称距离矩阵 矩阵第i′行表示其他用户到第i′个用户的非对称距离 其中,i′=1,2,…M,j′=1,2,…M。
[0082] 对于物品i″,使用物品特征矩阵QN×K,计算其他物品到它的非对称距离[0083]
[0084] 其中,Dkl(Qj″||Qi″)表示物品j″到物品i″的距离,Qi″表示物品特征矩阵第i″行,K为物品特征矩阵的列数。最终构成了非对称距离矩阵 矩阵第i″行表示其他物品到第i″个物品的非对称距离 其中,i″=1,2,…N,j″=1,2,…N。
[0085] 步骤S3.根据用户之间的非对称距离矩阵,选取q个锚点用户,根据物品之间的非对称距离矩阵,选取q个锚点物品,锚点用户和锚点物品随机配对,构成q个锚点。
[0086] S301.统计非对称距离矩阵 第i行中小于距离阈值 的元素个数,作为用户i的密度 统计非对称距离矩阵 第j行中小于距离阈值 的元素个数,作为物品j的密度 i=1,2,…M,j=1,2,…N。
[0087] 若用户j′到用户i′的距离小于距离阈值,则用户j′为用户i′的邻居。非对称距离矩阵 第i行中小于距离阈值 的元素个数,即为用户i的邻居个数。阈值 的选取尽可能让用户的邻居个数平均值约为用户总数的4%。
[0088] 若物品j″到物品i″的距离小于距离阈值,则物品j″为物品i″的邻居。非对称距离矩阵 第j行中小于距离阈值 的元素个数,即为物品j的邻居个数。阈值 的选取尽可能让物品的邻居个数平均值约为物品总数的4%。
[0089] S302.对于用户i,找到密度大于 的所有用户,分别计算这些用户中每个用户与用户i的平均距离,所有平均距离的最小值为用户i的分离距离 对于物品j,找到密度大于 的所有物品,分别计算这些物品中每个物品与物品j的平均距离,所有平均距离的最小值为物品j的分离距离
[0090] 点a与点b的平均距离等于(disab+disba)/2,disab为点a到b的非对称距离,disba为点b到a的非对称距离。
[0091] S303.计算用户i的代表度 选取用户代表度最大的q个用户作为锚点用户,计算物品j的代表度 选取物品代表度最大的q个物品作为锚点物品。
[0092] ρ和δ越大,γ也越大,说明该点越适合作为锚点。锚点的选取标准为:锚点有较大邻域密度、锚点与密度更大的点距离较远。通过限制锚点要有较大邻域密度、并且与密度更大的点距离较远,以每个锚点为核心构成的子矩阵不仅有足够的训练数据,同时彼此之间也有一定的差异,这使分割得到的子矩阵更为合理,也让子矩阵能尽可能更大地覆盖原始矩阵。
[0093] 锚点个数q是根据数据集情况自动确定的,具体如下:
[0094] (1)将所有用户代表度降序排列,在该排列中,计算第i个用户代表度与排在它之后10个用户代表度均值之差,若差值大于预设阈值,则将该用户加入候选锚点用户列表,继续计算第i+1个用户;若差值不大于预设阈值,则停止计算,i=1,2,…M;
[0095] (2)将所有物品代表度降序排列,在该排列中,计算第j个物品代表度与排在它之后10个物品代表度均值之差,若差值大于预设阈值,则将该物品加入候选锚点物品列表,继续计算第j+1个物品;若差值不大于预设阈值,则停止计算,j=1,2,…N;
[0096] (3)比较候选用户列表里的用户个数和候选物品列表里的物品个数,选择较大值作为锚点个数q。
[0097] 预设阈值优选为0.1。若差值不大于阈值,则认为γ值已经趋于平缓。根据每个数据集的不同,自动选择锚点个数方法能够自适应地确定适合每个数据集的最少锚点个数,可以减少无用子矩阵的构建,提高效率。
[0098] 如图2所示,横坐标n表示γ降序排列后这些点的排序序号,纵坐标γ表示这些点的代表度。在γ的降序排列中,越靠前的点越适合作为锚点。适合作为锚点的用户γ变化较大,不适合作为锚点的用户γ比较平滑,并且两者之间存在一定的跳跃。通过寻找γ的跳跃之处,可以确定锚点个数q。虚线处分隔了适合作锚点的点和其余各点,可以看出,自动选择锚点能根据数据集实际情况挑选适宜个数的锚点,提高了效率。
[0099] S304.将q个锚点用户和q个锚点物品随机配对,得到q个锚点用户-锚点物品对,锚点用户-锚点物品对构成锚点。
[0100] 步骤S4.对于每个锚点,根据用户特征矩阵,计算用户到锚点用户的非对称距离,根据物品特征矩阵,计算物品到锚点物品之间的非对称距离。
[0101] 用户到锚点用户的非对称距离采用公式(4)计算,物品到锚点物品之间的非对称距离采用公式(5)计算。
[0102] 步骤S5.对于每个锚点,根据用户到锚点用户的非对称距离和物品到锚点物品之间的非对称距离,计算用户-物品对与锚点的相似度,并根据相似度确定该锚点的邻域,该锚点和它的全部邻域构成以该锚点为核心的子矩阵。
[0103] S501.计算用户-物品对(I,J)到锚点(u,v)的相似度为 计算公式如下:
[0104]
[0105]
[0106] 其中,Dkl(s1||s2)表示s1到s2的非对称距离,h为距离阈值,其取值为8。
[0107] S502.判断 是否不等于0,若是,则用户-物品对(I,J)是锚点(u,v)的邻域,否则,用户-物品对(I,J)不是锚点(u,v)的邻域。
[0108] 只有同时满足用户I是锚点用户u的邻居、物品J是锚点物品v的邻居,用户-物品对(I,J)才是锚点(u,v)的邻域。
[0109] 如图3所示,使用非对称距离度量用户A和用户B的距离,若A的兴趣分布是B兴趣分布的子集,则A到B的距离小,但B到A的距离不一定小。用非对称距离度量锚点用户和其它用户的距离,得到的邻域用户的兴趣分布基本上都在该锚点用户的兴趣分布之内,因此邻域用户的兴趣会比较集中。那么无论锚点的邻域物品特征向量如何分布,该子矩阵中用户的兴趣都几乎是一致的。如图4所示,使用对称距离度量用户A和B的距离,A在B的兴趣分布之外,很有可能还有别的兴趣分布。因此锚点的邻域用户的兴趣分布在锚点用户的兴趣分布内一致度大,在锚点用户的兴趣分布外一致度小。若邻域物品的兴趣分布刚好在锚点用户的兴趣分布之外,这些邻域用户的兴趣就无法保持一致,因而构成的子矩阵也不一定能代表该群组用户的集中兴趣。
[0110] 由此可知,采用了非对称距离为每个锚点寻找邻域,所构成的子矩阵会比使用对称距离寻找邻域所构成的子矩阵更能反应某一群组用户的集中兴趣,矩阵分解的预测结果会更好。同时非对称距离减小了对称距离下评分个数太少给距离带来的惩罚,对于评分个数较少的不活跃用户或冷门物品,会有更大的概率被划分到子矩阵中,这大大减少了孤立点的存在。
[0111] S503.锚点(u,v)和它的全部邻域构成了以该锚点为核心的子矩阵。
[0112] 每个锚点和它的邻域构成了以该锚点为核心的子评分矩阵,q个锚点就会形成q个子矩阵。例如,对于锚点(ut,vt),所有 不等于0的点(I,J)一起构成以(ut,vt)为核心构成的子矩阵。
[0113] 步骤S6.对于每个子矩阵,使用带权重的矩阵分解方法对该子矩阵进行训练,得到该子矩阵中用户对物品的预测评分。
[0114] 将子矩阵分解为用户因子矩阵U和物品因子矩阵V,通过梯度下降方法不断的迭代训练,使得U和V的乘积越来越接近真实矩阵。预测值接近真实值就是使其损失函数最小,这是我们的目标函数。
[0115]
[0116] 其中, 表示用户-物品对(I,J)到锚点(ut,vt)的相似度,作为矩阵分解的权重;RIJ表示用户I对物品J的实际评分,λ表示正则化系数,一般取0.001-0.1。
[0117] 训练收敛时的Ut和Vt就是我们要获得的用户因子矩阵和物品因子矩阵,t=1,2,…q;
[0118] 该子矩阵中用户I对物品J的预测评分 Ut表示第t个子矩阵的用户因子矩阵,Vt表示第t个子矩阵的物品因子矩阵,t=1,2,…q。
[0119] 如图5所示,选择q个锚点之后,为每个锚点找到邻域数据,进而可以构成q个子矩阵。对每个子矩阵进行矩阵分解,从而得到每个子矩阵的预测评分。
[0120] 步骤S7.将q个子矩阵的预测评分进行加权平均,得到用户对物品的最终预测评分。
[0121]
[0122] 其中, 表示用户I对物品J的最终预测评分,(ut,vt)表示第t个锚点。
[0123] 为验证本发明提出的预测方法的预测效果,选取知乎Live、movielens-100k和movielens-1m三个数据集作为研究对象,对比本发明方法、使用大矩阵的全局评分预测方法、基于对称距离及随机锚点选取构建子矩阵的评分预测方法、基于对称距离及偏好锚点选取构建子矩阵的评分预测方法的预测误差,对比结果如表1-3所示。
[0124]
[0125] 表1
[0126]
[0127] 表2
[0128]
[0129]
[0130] 表3
[0131] 由上述对比结果可知,本发明提出的基于非对称距离构建子矩阵的评分预测方法,在RMSE和MAE的评价指标上较传统的评分预测方法有明显的提高,在测试集覆盖率上显著改善了其它基于构建子矩阵的评分预测方法中子矩阵无法完全覆盖测试数据的问题。这是由于在构建子矩阵的时候选择了邻域较多、间隔又较远的锚点,同时使用非对称距离寻找锚点的邻域,从而构成的子矩阵区分度较大,对大矩阵的覆盖更为全面,也更能反应群组用户的集中兴趣,因此减小了预测误差。
[0132] 以上,仅为本申请较佳的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应该以权利要求的保护范围为准。