一种基于矩阵分解的产品推荐方法技术

技术编号:20845257 阅读:20 留言:0更新日期:2019-04-13 09:01
本发明专利技术公开了一种基于矩阵分解的产品推荐方法,包括:(1)对历史评分数据进行预处理,得到用户对产品的评分矩阵;(2)对评分矩阵中同一用户对不同产品的喜好程度进行排序,并根据排序结果确定损失函数;(3)对评分矩进行分解,并根据损失函数对分解结果进行调整,从而得到使得损失函数取值最小的第一特征向量和第二特征向量,由此完成矩阵分解并得到向用户推荐产品的推荐列表。本发明专利技术所提供的基于矩阵分解的产品推荐方法,在确定损失函数时,将同一用户对不同产品的喜好程度的排序关系考虑在内,能够在损失函数中更为充分地体现用户与被推荐产品之间的复杂关系,从而有效提高产品推荐的准确度。

【技术实现步骤摘要】
一种基于矩阵分解的产品推荐方法
本专利技术属于数据挖掘和个性化推荐领域,更具体地,涉及一种基于矩阵分解的产品推荐方法。
技术介绍
根据用户对产品的喜好程度向用户推荐产品时,常用的方法包括协同过滤法和矩阵分解法。协同分解法又分为基于用户的协同过滤法和基于产品的协同过滤方法,前者利用不同用户之间的相似度来向用户推荐产品,后者则利用产品之间的相似度来向用户推荐产品,相似度之间的计算方式有多种,例如余弦相似度,Jaccard相似度等。在实际的使用中,基于用户的协同过滤协同方法主要使用在用户数远多于产品数的场景下,基于产品的协同过滤方法主要使用在产品数远多于用户数的场景下。协同过滤法适用于大数据应用场景,其计算量较大,不能做到实时地向用户推荐产品,基于模型的协同过滤算法有效的解决了这一问题,矩阵分解(MatrixFactorization,MF)法是基于模型的协同过滤算法中的一种。基于矩阵分解的传统推荐模型是将用于表示用户与产品关系的评分矩阵分解成用户矩阵和产品矩阵,用户矩阵用于表示用户与隐藏特征的关系,产品矩阵用于表示产品与隐藏特征的关系,隐藏特征可以理解为影响用户选择产品的因子,可以手动设置个数。分解形式为:R=PQ。它是将用户产品关系矩阵R通过学习训练参数,最终可以得到两个分解矩阵P和Q,损失函数的定义如下所示。在上述损失函数中,rui为用户产品关系矩阵R中的元素,pu和qi分别为矩阵P和矩阵Q中的向量,λ为正则化系数。通过定义的损失函数,可以求得模型参数。损失函数是一个凸函数,凸函数必然存在最小值,这是一个凸优化问题,通过梯度下降法不断迭代,可求解出两个矩阵,最后通过两个矩阵相等得到的评分高低可以得到向用户推荐产品的推荐列表。传统的矩阵分解法能够实时的实现个性化推荐,但是,由于用户与被推荐产品的关系是多种多样的,传统的矩阵分解法并没有充分考虑这一因素,导致推荐的准确度不高。
技术实现思路
针对现有技术的缺陷和改进需求,本专利技术提供了一种基于矩阵分解的产品推荐方法,其目的在于,在损失函数中充分考虑用户与被推荐产品之间的关系,以提高基于矩阵分解向用户推荐产品的推荐准确度。为实现上述目的,本专利技术提供了一种基于矩阵分解的产品推荐方法,包括如下步骤:(1)对历史评分数据进行预处理,得到用户对产品的评分矩阵;(2)对评分矩阵中同一用户对不同产品的喜好程度进行排序,并根据排序结果确定损失函数;(3)对评分矩阵进行分解,并根据损失函数对分解结果进行调整,从而得到使得损失函数取值最小的的第一特征向量和第二特征向量,由此完成矩阵分解并得到向用户推荐产品的推荐列表;其中,第一特征向量用于表示用户与隐藏特征的关系,第二特征向量用于表示产品与隐藏特征的关系。进一步地,步骤(1)包括:利用历史评分数据生成用户对产品的第一评分矩阵;若第一评分矩阵的规模大于预设的数据集阈值,则对第一评分矩阵进行降维操作,从而得到第二评分矩阵,并将第二评分矩阵作为评分矩阵;否则,将第一评分矩阵作为评分矩阵;合理设定数据集阈值并将评分矩阵的规模限定在阈值内,是为了避免因所生成的评分矩阵规模过大,而导致模型训练耗时过长;降维操作也是一个矩阵分解的过程,具体过程包括对特征值大小排序、筛选较大的特征值以及合成,PCA(principalComponentAnalysis,主成成分提取)算法是一种常用的降维操作算法。进一步地,步骤(2)包括:计算每一个有序三元组中,用户对两个产品的评分差值,并对评分差值进行归一化后取其对数;将所有归一化评分差值的对数相加求和,作为迭代项;根据分解所得两个矩阵的矩阵范数构建第一正则化项;根据迭代项和第一正则化项确定损失函数;或者,获得任意两个用户之间的用户相似度以及任意两个产品之间的产品相似度,以构建第二正则化项,并根据迭代项、第一正则化项以及第二正则化项确定损失函数;其中,第一正则化项和第二正则化项均用于防止过拟合,排序规则为:对于评分矩阵中的任意一个用户u',用户u'对于其评分过的所有产品的喜好程度均相同,u'用户对于其未评分过的所有产品的喜好程度均相同,并且用户u'对于其评分过的任意一个产品的喜好程度大于其未评分过的所有产品的喜好程度。在确定损失函数时,将同一用户对不同产品喜好程度的排序关系也考虑在内,能够有效提高产品推荐的准确度。更进一步地,根据迭代项和第一正则化项所确定的损失函数,其表达式为:其中,C1为损失函数,S为有所有有序三元组构成的集合,u为用户编号i和j均为产品编号,P和Q分别表示由评分矩阵分解所得的用户矩阵和产品矩阵,pu表示用户矩阵中与用户u相对应的特征向量,qi和qj分别表示产品矩阵中与产品i和产品j相对应的特征向量,λ为正则化系数,F表示Frobenius范数。更进一步地,获得任意两个用户之间的用户相似度以及任意两个产品之间的产品相似度的方法包括:以评分矩阵中的用户和产品为顶点,构建一个有向图;若用户对产品进行过评分,则在有向图中生成一条从该用户指向该产品的有向边;根据有向图分别获得用户对应的顶点的出度集合和产品对应的顶点的入度集合;任意两个用户的用户相似度为两个用户对应顶点的出度集合的交集与并集之比;任意两个产品的产品相似度为两个产品对应顶点的入度集合的交集与并集之比。通过以上方法将用户和产品的关系建立成有向图,就能利用过用户节点的出度集合表示用户的偏好集合,并利用产品节点的入度集合表示偏好产品的用户集合。更进一步地,用户相似度和产品相似度的计算表达式分别为:其中,sim1()和sim2()分别表示用户相似度函数和产品相似度函数,u1和u2均为用户编号,i1和i2均为产品编号,Uout(u1)和Uout(u2)分别表示有向图中用户u1和用户u2的出度集合,Iin(i1)和Iin(i2)分别表示有向图中产品i1和产品i2的入度集合。更进一步地,根据迭代项、第一正则化项以及第二正则化项确定的损失函数的表达式为:其中,C2为损失函数,S为由所有有序三元组构成的集合,u和u1均为用户编号,i、j和i1均为产品编号,P和Q分别表示由评分矩阵分解所得的用户矩阵和产品矩阵,pu和分别表示用户矩阵中与用户u和用户u1相对应的特征向量,qi、qj和分别表示产品矩阵中与产品i、产品j和产品i1相对应的特征向量,sim1()和sim2()分别表示用户相似度函数和产品相似度函数,U1表示与用户u的用户相似度大于预设的用户相似度阈值的用户集合,I1表示与产品i的产品相似度大于预设的产品相似阈值的产品集合,λ、β和γ均为正则化系数,F表示Frobenius范数;分析可知,sim1(u,u1)的值越大,说明用户u与用户u1的用户相似度越高,那么特征向量pu就越接近特征向量若用户u与用户u1的用户相似度较高,那么对应的值会很小,反之,用户u与用户u1的用户相似度较低,那么对应的值会很大;同理,sim2(i,i1)的值越大,产品i和产品i1的产品相似度就越高,那么特征向量qi就越接近特征向量若产品i和产品i1的产品相似度较高,那么对应的值会很小,反之,产品i和产品i1的产品相似度较低,那么对应的值会很大;在上述损失函数的表达式中,将反映用户相似度的和反映产品相似度的作为正则化项加入到损失函数中,能够有效地提高产品推荐的准确度。进一本文档来自技高网
...

【技术保护点】
1.一种基于矩阵分解的产品推荐方法,其特征在于,包括如下步骤:(1)对历史评分数据进行预处理,得到用户对产品的评分矩阵;(2)对所述评分矩阵中同一用户对不同产品的喜好程度进行排序,并根据排序结果确定损失函数;(3)对所述评分矩进行分解,并根据所述损失函数对分解结果进行调整,从而得到使得所述损失函数取值最小的第一特征向量和第二特征向量,由此完成矩阵分解并得到向用户推荐产品的推荐列表;其中,所述第一特征向量用于表示用户与隐藏特征的关系,所述第二特征向量用于表示产品与隐藏特征的关系。

【技术特征摘要】
1.一种基于矩阵分解的产品推荐方法,其特征在于,包括如下步骤:(1)对历史评分数据进行预处理,得到用户对产品的评分矩阵;(2)对所述评分矩阵中同一用户对不同产品的喜好程度进行排序,并根据排序结果确定损失函数;(3)对所述评分矩进行分解,并根据所述损失函数对分解结果进行调整,从而得到使得所述损失函数取值最小的第一特征向量和第二特征向量,由此完成矩阵分解并得到向用户推荐产品的推荐列表;其中,所述第一特征向量用于表示用户与隐藏特征的关系,所述第二特征向量用于表示产品与隐藏特征的关系。2.如权利要求1所述的基于矩阵分解的产品推荐方法,其特征在于,所述步骤(1)包括:利用所述历史评分数据生成用户对产品的第一评分矩阵;若所述第一评分矩阵的规模大于预设的数据集阈值,则对所述第一评分矩阵进行降维操作,从而得到第二评分矩阵,并将所述第二评分矩阵作为所述评分矩阵;否则,将所述第一评分矩阵作为所述评分矩阵。3.如权利要求1或2所述的基于矩阵分解的产品推荐方法,其特征在于,所述步骤(2)包括:对于所述评分矩阵中的任意一个用户,若根据排序规则,该用户对第一产品的喜好程度大于该用户对第二产品的喜好程度,则由该用户、所述第一产品和所述第二产品构成一个有序三元组;计算每一个有序三元组中,用户对两个产品的评分差值,并对所述评分差值进行归一化后取其对数;将所有归一化评分差值的对数相加求和,作为迭代项;根据分解所得两个矩阵的矩阵范数构建第一正则化项;根据所述迭代项和所述第一正则化项确定所述损失函数;或者,获得任意两个用户之间的用户相似度以及任意两个产品之间的产品相似度,以构建第二正则化项,并根据所述迭代项、所述第一正则化项以及所述第二正则化项确定所述损失函数;其中,所述第一正则化项和所述第二正则化项均用于防止过拟合,所述排序规则为:对于所述评分矩阵中的任意一个用户u',所述用户u'对于其评分过的所有产品喜好程度均相同,所述u'用户对于其未评分过的所有产品喜好程度均相同,并且所述用户u'对于其评分过的任意一个产品的喜好程度大于其未评分过的所有产品的喜好程度。4.如权利要求3所述的基于矩阵分解的产品推荐方法,其特征在于,根据所述迭代项和所述第一正则化项所确定的损失函数,其表达式为:其中,C1为损失函数,S为由所有有序三元组构成的集合,u为用户编号,i和j均为产品编号,P和Q分别表示由所述评分矩阵分解所得的用户矩阵和产品矩阵...

【专利技术属性】
技术研发人员:路松峰吴旭王穆
申请(专利权)人:华中科技大学
类型:发明
国别省市:湖北,42

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1