基于高阶奇异值分解的上下文推荐方法及装置与流程

文档序号:15492650发布日期:2018-09-21 20:56阅读:154来源:国知局
本发明涉及一种上下文推荐方法及装置,尤其是一种基于高阶奇异值分解的上下文推荐方法及装置,属于信息推荐领域。
背景技术
:随着互联网的飞速发展,人们进入了信息过载的时代。推荐系统作为缓解“信息过载”的有效手段之一,利用已有的选择过程或相似关系挖掘每个用户潜在的兴趣对象。在许多场景下,如用户处于移动环境时,用户的偏好受到其所处位置、天气、时间等上下文因素的影响,上下文感知推荐系统通过将上下文引入推荐,可以进一步提高推荐的准确度。目前,有部分专家学者提出了将高阶奇异值分解算法引入到上下文感知推荐系统中。在使用高阶奇异值分解的过程中,中心张量维度的选择以及上下文权重的计算是决定算法准确性的关键因素,但是之前的方法没有明确指出如何确定中心张量维度,并且在计算上下文权重的时候粒度太粗,影响了计算结果的准确性。技术实现要素:本发明的目的是为了解决上述现有技术的缺陷,提供了一种基于高阶奇异值分解的上下文推荐方法,该方法将上下文信息融合到推荐生成中,通过计算上下文权重以及确定中心张量维度,大大提高推荐结果的准确性。本发明的另一目的在于提供一种基于高阶奇异值分解的上下文推荐装置。本发明的目的可以通过采取如下技术方案达到:基于高阶奇异值分解的上下文推荐方法,所述方法包括:获取用户对项目的评分信息及相应的上下文信息;根据上下文类型的不同,构建对应于每个上下文的三阶张量;按照展开规则将每个三阶张量展开,得到三个二阶矩阵;根据每个二阶矩阵,确定中心张量维度,构建新的三阶张量;计算每个上下文的权重;根据新的三阶张量以及对应的上下文权重,构建n阶张量;根据目标用户id和项目id,找到目标用户在n阶张量对应的位置,为目标用户生成推荐列表。进一步的,所述方法还包括:当构建对应于每个上下文的三阶张量时,若有用户对用一个项目在同一个上下文中评分多次,则取平均值代替。进一步的,所述展开规则如下:假设n阶张量将它展开成矩阵在这个矩阵的第in行,第(in+1-1)in+2in+3…ini1i2…in-1+(in+2-1)in+3in+4…ini1i2…in-1+…(in-1)i1i2…in-1+(i1-1)i2i3…in-1+(i2-1)i3i4…in-1+…+in-1列的值为进一步的,所述根据每个二阶矩阵,确定中心张量维度,构建新的三阶张量,具体包括:通过对每个二阶矩阵进行奇异值分解,计算保留一定百分比信息时非零奇异值的个数,以此来确定中心张量的维度,最后根据中心张量以及对应维度的三个子奇异矩阵的乘积,构建新的三阶张量。进一步的,所述计算每个上下文的权重,具体包括:计算不同项目的第一评分波动系数;根据不同项目的第一评分波动系数,计算对应上下文的第二评分波动系数;根据第二评分波动系数,计算出每个上下文的权重。进一步的,所述计算不同项目的第一评分波动系数,如下式:其中,为第一评分波动系数,进一步的,所述根据不同项目的第一评分波动系数,计算对应上下文的第二评分波动系数,如下式:其中,为第二评分波动系数,进一步的,所述根据第二评分波动系数,计算出每个上下文的权重,如下式:其中,λn为每个上下文的权重,n为自然数。本发明的另一目的可以通过采取如下技术方案达到:基于高阶奇异值分解的上下文推荐装置,所述装置包括:信息获取模块,用于获取用户对项目的评分信息及相应的上下文信息;第一构建模块,用于根据上下文类型的不同,构建对应于每个上下文的三阶张量;展开模块,用于按照展开规则将每个三阶张量展开,得到三个二阶矩阵;第二构建模块,用于根据每个二阶矩阵,确定中心张量维度,构建新的三阶张量;计算模块,用于计算每个上下文的权重;第三构建模块,用于根据新的三阶张量以及对应的上下文权重,构建n阶张量;生成模块,用于根据目标用户id和项目id,找到目标用户在n阶张量对应的位置,为目标用户生成推荐列表。进一步的,所述装置还包括:代替模块,用于当构建对应于每个上下文的三阶张量时,若有用户对用一个项目在同一个上下文中评分多次,则取平均值代替。本发明相对于现有技术具有如下的有益效果:1、本发明的方法及装置可以将上下文信息融合到推荐生成中,并提出了一种上下文权重计算方法以及一种确定中心张量维度的方法,大大提高了推荐结果的准确性。2、本发明方法及装置提出的确定中心张量维度的方法,可以根据保留总特征值和一定百分比信息时所对应的特征值个数,来确定中心张量维度。3、本发明在上下文权重计算时先考虑了用户在同一上下文下对不同项目的评分波动系数,综合不同项目的评分波动系数计算出在该上下文下的波动系数,最后结合每个上下文的评分波动系数计算出上下文权重,较其他方法来说粒度更细,计算的准确度更高。附图说明图1为本发明实施例1的系统架构图。图2为本发明实施例1的上下文信息采集及处理部分的示意图。图3为本发明实施例1中基于高阶奇异值分解的上下文推荐方法流程图。图4为本发明实施例1的张量展开示意图。图5为本发明实施例1的中心张量维度确定方法流程图。图6为本发明实施例1的张量分解原理图。图7为本发明实施例1的上下文权重计算方法流程图;图8为本发明实施例1的推荐生成流程图。图9为本发明实施例2的基于高阶奇异值分解的上下文推荐装置结构框图。具体实施方式下面结合实施例及附图对本发明作进一步详细的描述,但本发明的实施方式不限于此。实施例1:如图1所示,为本实施例的系统架构图,包括两大部分:上下文信息采集及处理部分、推荐引擎部分;如图2所示,为本实施例的上下文信息采集及处理部分的示意图,首先从用户移动设备获取gps定位信息,再根据时间以及位置信息,利用第三方数据库得到天气信息;再根据一定规则将时间、位置、天气信息进行预处理,例如,对于“时间”上下文,上午6到12点定义为上午,用1表示,12到14点定义为中午,用2表示,14到18点定义为下午,用3表示,18点到24点定义为晚上,用4表示,24点到次日6点定义为凌晨,用5表示。这里可以根据具体应用采取不同的划分规则。如图3所示,为本实施例的基于高阶奇异值分解的上下文推荐方法的流程图,包括以下步骤:1)获取用户对项目的评分信息及相应的上下文信息利用用户对项目评分时移动设备的gps获得位置信息,再结合时间以及位置利用第三方数据库获得当时的天气信息,组成用户历史评分信息数据库。2)对获取的信息进行预处理为了减少无效数据,本实施例只选取评分数目≥5的用户的评分记录。3)根据上下文类型的不同,构建对应于每个上下文的三阶张量假设历史数据中有n维数据,除了用户和项目这两个维度之外,包含了n-2个上下文,则根据上下文类型的不同,构建n-2个三阶张量,在构建时,若有用户对用一个项目在同一个上下文中评分多次,则取平均值代替。具体地,本实施例选取的上下文为时间、位置、天气。由于原始的数据中用户id和项目id不是连续的,用户和项目张量中的位置与其在用户集和项目集中的相对位置相同,例如按照用户id排序后的部分数据如下表1所示。useriditemidtimelocationweatherrating15113114152143153152152122152163154表1按照用户id排序后的部分数据用户集中第一个用户为15,项目集中第一个项目为11,在构建“time”上下文对应的三阶张量时,坐标(1,1,3)对应的值为4,表示用户15在“time”为3的时候对项目11的评分为4,其他上下文类似;根据时间、位置、天气分别构建三个三阶张量,若有用户对同一个项目在同一个上下文中评分多次,则取平均值代替。伪代码描述如下:4)按照展开规则将每个三阶张量展开,得到三个二阶矩阵(即二维矩阵)如图4所示,所述展开规则如下:假设n阶张量将它展开成矩阵在这个矩阵的第in行,第(in+1-1)in+2in+3…ini1i2…in-1+(in+2-1)in+3in+4…ini1i2…in-1+…(in-1)i1i2…in-1+(i1-1)i2i3…in-1+(i2-1)i3i4…in-1+…+in-1列的值为每个三阶张量展开的伪代码如下:5)根据每个二阶矩阵,确定中心张量维度,构建新的三阶张量通过对每个二阶矩阵进行奇异值分解(singularvaluedecomposition,简称svd),计算保留一定百分比信息时非零奇异值的个数,以此来确定中心张量的维度,确定中心张量维度的流程如图5所示;最后根据中心张量以及对应维度的三个子奇异矩阵的乘积,构建新的三阶张量,即重构三阶张量。具体地,本实施例在matlab软件中对每个二阶矩阵进行奇异值分解,并采用tensor_toolbox工具箱中的tucker分解法进行张量分解,根据中心张量的维度构建中心张量,如图6所示,重构三阶张量。6)计算每个上下文的权重本实施例的计算每个上下文的权重,采用如图7所示的细粒度上下文权重计算方法,具体包括:6.1)计算不同项目的第一评分波动系数,如下式:其中,为第一评分波动系数,6.2)根据不同项目的第一评分波动系数,计算对应上下文的第二评分波动系数,如下式:其中,为第二评分波动系数,6.3)根据第二评分波动系数,计算出每个上下文的权重,如下式:其中,λn为每个上下文的权重,n为自然数。本实施例的计算每个上下文的权重,伪代码如下:其中,findgrainedvol为细粒度的计算上下文波动系数的方法,伪代码如下:7)重构n阶张量经过步骤5)得到的每个上下文对应的重构的三阶张量以及步骤6)得到的上下文权重,根据重构三阶张量以及对应的上下文权重,构建新的n阶张量,即重构n阶张量,伪代码如下:8)根据目标用户id和项目id,找到目标用户在n阶张量对应的位置,为目标用户生成推荐列表因为原始数据中,用户id和项目id并不是连续的,也不是从1开始的,在运用高阶奇异值分解之后得到的新的高阶张量后,要给对应的用户生成推荐,首先要找到目标用户对应于新的高阶张量的哪一维。在构建高阶张量的时候,是先对用户的id进行排序,根据用户的相对位置来构建张量,如第一个用户的id为15,那么在构建张量的时候对应的位置就是1.按照这个规律,在给目标用户生成推荐的时候,如果输入的是用户15,那么就应该先将用户15转化为在用户id序列中的位置1,再在新的张量中形成相应的推荐,当然,形成推荐之后的项目id也要恢复为原始的项目id。本实施例的推荐流程如图8所示,推荐过程的伪代码如下:本领域普通技术人员可以理解实现上述实施例方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,相应的程序可以存储于一计算机可读取存储介质中,该存储介质如rom/ram、磁盘或光盘等。实施例2:如图9所示,为本实施例的基于高阶奇异值分解的上下文推荐装置,该装置包括信息获取模块、第一构建模块、代替模块、展开模块、第二构建模块、计算模块、第三构建模块和生成模块,各个模块的具体功能如下:所述信息获取模块,用于获取用户对项目的评分信息及相应的上下文信息。所述第一构建模块,用于根据上下文类型的不同,构建对应于每个上下文的三阶张量。所述代替模块,用于当构建对应于每个上下文的三阶张量时,若有用户对用一个项目在同一个上下文中评分多次,则取平均值代替。所述展开模块,用于按照展开规则将每个三阶张量展开,得到三个二阶矩阵。所述第二构建模块,用于根据每个二阶矩阵,确定中心张量维度,构建新的三阶张量。所述计算模块,用于计算每个上下文的权重。所述第三构建模块,用于根据新的三阶张量以及对应的上下文权重,构建n阶张量。所述生成模块,用于根据目标用户id和项目id,找到目标用户在n阶张量对应的位置,为目标用户生成推荐列表。在此需要说明的是,本实施例的装置仅以上述各功能模块的划分进行举例说明,在实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。可以理解,上述实施例的装置所使用的术语“第一”、“第二”等可用于描述各种模块,但这些模块不受这些术语限制。这些术语仅用于将第一个模块与另一个模块区分。举例来说,在不脱离本发明的范围的情况下,可以将称为第一构建模块称为第二构建模块,且类似地,可将第二构建模块称为第一构建模块,第一构建模块和第二构建模块两者都是构建模块,但其不是同一构建模块。综上所述,本发明的方法及装置可以将用户评分时候的上下文信息加入到推荐过程中,并采用细粒度的上下文权重计算方法,能够根据用户当前所处上下文环境对其进行推荐,具有实际推广价值。以上所述,仅为本发明专利优选的实施例,但本发明专利的保护范围并不局限于此,任何熟悉本
技术领域
的技术人员在本发明专利所公开的范围内,根据本发明专利的技术方案及其发明构思加以等同替换或改变,都属于本发明专利的保护范围。当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1