一种基于三维张量迭代填补的推荐方法与流程

专利2022-06-29  74


本发明涉及一种智能推荐技术领域,尤其涉及一种基于三维张量迭代填补的推荐方法。



背景技术:

传统的推荐方法主要是依据用户对项目的评分数据来进行推荐,而在实际的推荐系统中,所能获得的数据除了用户对项目的评分,通常还包括项目的分类信息。例如,小说可以分为科幻、历史、言情等类别,电影可以分为文艺、战争、动画等类别。传统的推荐方法仅仅依据评分数据进行推荐,而忽略了项目的类别信息,推荐效果不佳。

推荐技术一般都是采用一些算法对空缺的评分数据进行预测或估计(通常,项目数量巨大,用户只对很少的项目有评分,因此评分数据是很稀疏的),然后依据预测或估计的评分进行推荐。已有的矩阵和张量填补算法都需要设置一些超参数,例如低秩约束中秩的上界,范数的惩罚系数等。但是,对于无监督的学习来说,很难选择合适的超参数,这些超参数的选择不仅要耗费大量的计算时间,而且会影响甚至决定推荐的性能。此外,张量填补是一个复杂的优化问题,现有的填补方案往往需要很大的计算量。



技术实现要素:

本发明实施例所要解决的技术问题在于,提供一种结合用户评分数据和项目类别信息的推荐方法,可以不需要设置超参数,并用较小的计算量向用户推荐其喜欢的项目。

为了解决上述技术问题,本发明实施例提供了一种基于三维张量迭代填补的推荐方法,包括以下步骤:

s1:获取所有用户对各个项目的评分数据,以及各个项目所属的项目类别信息,构建三维张量a,具体地,

如果用户i对项目j有评分,且项目j属于类别k,则aijk为评分值;否则,aijk为0,其中,i,j和k分别表示用户、项目和类别的编号,a的三个维度的大小分别为用户的数量,项目的数量和项目类别的数量;

s2:计算所述三维张量a中不为零元素的坐标集合ω;

s3:初始化一个与所述三维张量a具有相同维度的填补张量x,初始化一个与所述三维张量a具有相同维度的方向张量z=0;

s4:进行迭代计算,更新所述填补张量x和方向张量z的值,具体地,

首先计算张量的近似值y和迭代步长λ的值,然后用0.5*z 0.5*y更新所述方向张量z的值,用x λz更新所述填补张量x的值,

其中,表示一个张量,如果坐标(i,j,k)属于ω,那么否则

s5:判断本代计算得到的所述填补张量x与上三代的x是否足够接近,若否,则跳转到步骤s4;若是,将本代计算得到的所述填补张量x的值作为对所述三维张量a的填补结果,记为b;

s6:根据所述填补后的三维张量b计算推荐程度矩阵t,具体地,

判断用户i对项目j是否评过分;

若是,则向用户i推荐项目j的推荐程度tij等于零,

否则,用户i和项目j在所述填补后的三维张量b中对应一个向量,将这个向量中元素的和作为向用户i推荐项目j的推荐程度tij;

s7:根据在所述推荐程度矩阵t中用户对应的各个项目推荐程度值的排序,向所述用户推荐若干个项目。

进一步地,所述步骤s4中所述张量近似值y的计算方法如下:

将三维张量分别沿着第1维,第2维和第3维展开得到三个矩阵m1,m2和m3;分别求得这三个矩阵的最大奇异值以及第二大奇异值比较的值,其中i1,i2和i3分别表示用户,项目和项目类别的数量,将当中最小的记为d等于1,2或者3;选择第d维作为矩阵化的展开方向;

分别为所述矩阵md最大奇异值对应的左右奇异列向量;

所述张量近似值y沿第d维展开得到的矩阵为

更进一步地,所述步骤s4中所述迭代步长λ的计算方法如下:

实施本发明实施例,具有如下有益效果:

1)本发明技术方案基于“用户-项目-类别”的三维张量进行推荐,既考虑了用户对项目的评分数据,又考虑了项目的类别信息,有助于提升推荐质量。

2)三维张量填补是一个复杂的优化问题,现有的填补方案计算量大,而本发明给出了一种计算量较小的高效填补方案。

3)本发明技术方案基于张量填补进行推荐,但与已有的张量和矩阵填补算法不同,本发明提出的方法不需要设置超参数,省去了调节参数这一复杂繁琐的工作,更容易使用。

4)在每次迭代中,借助张量的矩阵化和矩阵的奇异值分解对方向张量进行近似,既充分考虑了张量中数据之间的相关性,又能对缺失的值进行更新,并且计算开销很小。

5)在每次迭代中,通过对张量展开方向的精心选择,以及对迭代步长的精心设计,使得迭代过程能较快的收敛,具有很高的计算效率。

附图说明

图1是本发明方法的基本的流程示意图;

图2是步长公式的函数图像;

图3是3×4×2的三维张量的示意图。

具体实施方式

为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明作进一步地详细描述。

如图1所示,本发明实施例的一种基于三维张量迭代填补的推荐方法,包括以下步骤。

1、获取所有用户对各个项目的评分数据,以及各个项目所属的项目类别信息,构建三维张量a。具体地,如果用户i对项目j有评分,且项目j属于类别k,则aijk为评分值;否则,aijk为0,其中,i,j和k分别表示用户、项目和类别的编号。a的三个维度的大小分别为用户的数量,项目的数量和项目类别的数量。

2、计算所述三维张量a中不为零元素的坐标集合ω。

3、初始化一个与所述三维张量a具有相同维度的填补张量x,初始化一个与所述三维张量a具有相同维度的方向张量z=0。

4、进行迭代计算,更新所述填补张量x和方向张量z的值。具体地,首先计算张量的近似值y和迭代步长λ的值,然后用0.5*z 0.5*y更新所述方向张量z的值,用x λz更新所述填补张量x的值,其中,表示一个张量,如果坐标(i,j,k)属于ω,那么否则

其中,所述张量近似值y的计算方法如下:

将三维张量分别沿着第1维,第2维和第3维展开得到三个矩阵m1,m2和m3;分别求得这三个矩阵的最大奇异值以及第二大奇异值比较的值,其中i1,i2和i3分别表示用户,项目和项目类别的数量,将当中最小的记为d等于1,2或者3;选择第d维作为矩阵化的展开方向;

分别为所述矩阵md最大奇异值对应的左右奇异列向量;

所述张量近似值y沿第d维展开得到的矩阵为

其中,所述步骤s4中所述迭代步长λ的计算方法如下:

5、判断本代计算得到的所述填补张量x与上三代的x是否足够接近,若否,则跳转到步骤s4;若是,将本代计算得到的所述填补张量x的值作为对所述三维张量a的填补结果,记为b。

6、根据所述填补后的三维张量b计算推荐程度矩阵t,具体地为:

判断用户i对项目j是否评过分;

若是,则向用户i推荐项目j的推荐程度tij等于零,

否则,用户i和项目j在所述填补后的三维张量b中对应一个向量,将这个向量中元素的和作为向用户i推荐项目j的推荐程度tij。

7、根据在所述推荐程度矩阵t中用户对应的各个项目推荐程度值的排序,向所述用户推荐若干个项目。

需要说明的是:

1)上述步骤4中的迭代公式的设计思想如下:

首先,迭代公式xn 1=xn λ(a-xn)表示让x不断朝着a的方向迭代逼近a,其中,a-xn为方向,λ为迭代步长。

其次,a在ω范围内的值是已知的,在ω范围外的值是未知的,因此(a-xn)被替换成了迭代公式变成了

最后,如果直接以作为方向,将会使得迭代过程中方向急转过来,急转过去,形成z字形的路径,收敛速度很慢,因此,本发明将本次计算的方向与上次的方向进行加权,使得方向不会变化得太过突然,以减小路径的摆动,加快收敛速度。

2)张量的填补通常希望填补后的张量是低秩的,常用的做法是对x添加约束条件,例如限制x的秩或核范数,但是这样会引入超参数,例如秩或核范数的上限值。对于无监督的学习来说,很难选择合适的超参数,这些超参数的选择不仅要耗费大量的计算时间,而且会影响甚至决定算法的性能。针对这一问题,本发明提出了一种无约束、无参数的,高效的迭代填补方法。该方法虽然在迭代过程中没有对x增加约束条件,但是在每次迭代中,不仅根据数据的相关性计算缺失的值,而且考虑了张量的低秩特性和迭代的收敛速度。

3)本方法仅用张量展开矩阵的最大奇异值及其对应的特征向量来近似张量的值,这样做的原因如下:首先,矩阵的最大奇异值及其对应的特征向量能很好的近似原矩阵,且包含的噪声较小;其次,这样可以使得该张量的近似值在ω范围外也有值;再次,计算开销比较小;最后,奇异值分解很好地考虑了数据之间的相关性,保证了张量填补的合理性。

4)在选择张量的展开方向时,本方法选择使得最小的d作为展开方向,原因如下:

首先,张量填补是希望填补后的张量是低秩的。为张量秩的一个上界,其值越小,将有利于使得迭代后的x的秩越小。

其次,本方法采用的展开矩阵的最大奇异值及其对应的特征向量来近似的值。如果越小,意味着我们忽略的奇异值越小,从而近似效果较好,因此我们希望越小越好。

综合上述两方面,越小越好。

5)本方法迭代步长的公式设计为

首先,本方法采用展开矩阵的最大奇异值及其对应的特征向量来近似的值。如果越大,意味着忽略的奇异值也会越大,从而近似效果不好,因此需要用较小的步长(避免误差过大);反之,如果越小,意味着我们忽略的奇异值也会越小,从而近似效果较好,因此可以用较大的步长(加快收敛速度)。即,越大,步长λ应该越小。即,越小,步长λ越小。

其次,随着迭代的进行,张量会越来越小,相应地,其展开矩阵的最大奇异值也会越来越小,而在迭代中步长λ也应该随着迭代的进行越来越小。也就是说,越小,步长λ应该越小。

最后,步长的取值保证在0到1之间。

本方法设计的步长公式能够同时满足上述要求,其函数图像如图2所示。

6)为了便于理解张量的矩阵化,即张量的展开,下面给出一个三阶张量的示例。假设x为图3所示的3×4×2的张量,那么,张量x沿第1维,第2维和第3维展开的矩阵分别为

以上所揭露的仅为本发明一种较佳实施例而已,当然不能以此来限定本发明之权利范围,因此依本发明权利要求所作的等同变化,仍属本发明所涵盖的范围。


技术特征:

1.一种基于三维张量迭代填补的推荐方法,其特征在于,包括以下步骤:

s1:获取所有用户对各个项目的评分数据,以及各个项目所属的项目类别信息,构建三维张量a;

如果用户i对项目j有评分,且项目j属于类别k,则aijk为评分值;否则,aijk为0,其中,i,j和k分别表示用户、项目和类别的编号,a的三个维度的大小分别为用户的数量,项目的数量和项目类别的数量;

s2:计算所述三维张量a中不为零元素的坐标集合ω;

s3:初始化一个与所述三维张量a具有相同维度的填补张量x,初始化一个与所述三维张量a具有相同维度的方向张量z=0;

s4:进行迭代计算,更新所述填补张量x和方向张量z的值;

首先计算张量的近似值y和迭代步长λ的值,然后用0.5*z 0.5*y更新所述方向张量z的值,用x λz更新所述填补张量x的值,

其中,表示一个张量,如果坐标(i,j,k)属于ω,那么否则

s5:判断本代计算得到的所述填补张量x与上三代的x是否足够接近,若否,则跳转到步骤s4;若是,将本代计算得到的所述填补张量x的值作为对所述三维张量a的填补结果,记为b;

s6:根据所述填补后的三维张量b计算推荐程度矩阵t,具体地,

判断用户i对项目j是否评过分;

若是,则向用户i推荐项目j的推荐程度tij等于零,

否则,用户i和项目j在所述填补后的三维张量b中对应一个向量,将这个向量中元素的和作为向用户i推荐项目j的推荐程度tij;

s7:根据在所述推荐程度矩阵t中用户对应的各个项目推荐程度值的排序,向所述用户推荐若干个项目。

2.根据权利要求1所述的基于三维张量迭代填补的推荐方法,其特征在于,所述步骤s4中所述张量近似值y的计算方法如下:

将所述张量分别沿着第1维,第2维和第3维展开得到三个矩阵m1,m2和m3;分别求得这三个矩阵的最大奇异值以及第二大奇异值比较的值,其中i1,i2和i3分别表示用户,项目和项目类别的数量,将当中最小的记为d等于1,2或者3;选择第d维作为矩阵化的展开方向;

分别为所述矩阵md最大奇异值对应的左右奇异列向量;

所述张量近似值y沿第d维展开得到的矩阵为

3.根据权利要求1所述的基于三维张量迭代填补的推荐方法,其特征在于,所述步骤s4中所述迭代步长λ的计算方法如下:

技术总结
本发明实施例公开了一种基于三维张量迭代填补的推荐方法,包括步骤:获取所有用户对各个项目的评分数据,以及各个项目所属的项目类别信息,构建三维张量A;初始化填补张量X,方向张量Z;迭代计算更新所述X和Z的值,将最终X的值作为对所述三维张量A的填补结果,记为B;根据所述填补后的三维张量B计算推荐程度矩阵T;根据在所述推荐程度矩阵T中用户对应的各个项目推荐程度值的排序,向所述用户推荐若干个项目。采用本发明,既考虑了用户对项目的评分数据,又考虑了项目的类别信息,有助于提升推荐质量,且具有使用容易、计算开销小等优点。

技术研发人员:熊智;徐恺
受保护的技术使用者:汕头大学
技术研发日:2020.02.11
技术公布日:2020.06.09

转载请注明原文地址: https://bbs.8miu.com/read-23454.html

最新回复(0)