一种基于拓展标签的矩阵分解推荐方法及系统与流程

文档序号:11217210阅读:545来源:国知局
一种基于拓展标签的矩阵分解推荐方法及系统与流程

本发明涉及个性化推荐技术领域,具体涉及一种基于拓展标签的矩阵分解推荐方法及系统。



背景技术:

近些年来,越来越多的推荐系统增加了协同标注功能。协同标注系统(collaborativetaggingsystem)的出现促进用户与系统的交互程度。标注系统允许用户根据自身理解挑选概括资源特征的标签对资源标注。在标签系统中,用户能够使用标签来标注资源的特征和类别,因此标签能在一定程度上反映资源的特点,通过分析资源的标签信息可以为资源做更精确的分类。同时,由于用户标注标签的差异性能体现出用户间不同的个性化信息,用户的标签信息也用于用户的个性化兴趣偏好的分析和挖掘。因此,标签作为一种重要的数据为推荐系统带来了新的挑战和机遇。

现有的基于标签的推荐算法在提高推荐的准确性方面获得了明显的效果,能够为用户提供更加个性化和精准的推荐。现有的研究方法虽然为推荐系统提供了丰富的理论基础和实践指导,但是仍然存在不足之处。大多数方法根据标签匹配来计算用户和用户、物品和物品的相似度,极少数方法考虑到标签稀疏问题。标签的稀疏性是基于标签的协同过滤算法面临的难题之一。导致标签稀疏的原因通常有两个,一是用户很少为物品标注标签或者仅为物品标注少量标签,二是用户的标注方式不同使标签信息里存在部分不同但是含义相近的标签。鉴于标签对推荐技术的重要意义和实用价值,解决标签稀疏性问题是提升推荐技术的一项关键任务。

基于矩阵分解的推荐算法因其解决大规模用户-物品评分矩阵的高效性,受到广泛的应用和研究。矩阵分解技术是基于用户对物品的历史评分记录的训练结果。但是实际中许多用户对物品评分的记录稀少甚至部分用户对物品没有评分记录,对于缺乏评分记录的场景来说,矩阵分解方法缺乏有效性。因此,为有效提高预测的准确率和缓解物品的冷启动问题,有必要提供一种技术方案以缓解用户评分数据稀疏和标签稀疏所带来的问题。



技术实现要素:

本发明的目的在于解决矩阵分解方法中物品标签的稀疏性问题和冷启动问题。为此,本发明提供了一种基于拓展标签的矩阵分解推荐方法,该方法通过在矩阵分解的过程中考虑物品的拓展标签信息来提高推荐算法的预测精度。具体技术方案如下:

一种基于拓展标签的矩阵分解推荐方法,包括如下步骤:

基于物品标签数据构建物品-标签矩阵并计算标签相似度;

基于所述物品-标签矩阵构建第一物品对-标签向量;

根据所述标签相似度将所述第一物品对-标签向量拓展为第二物品对-标签向量;

基于所述第二物品对-标签向量计算物品相似度,并建立物品相似度矩阵;

基于所述物品相似度矩阵和预先构建的物品评分矩阵,求解用户隐含特征矩阵和物品隐含特征矩阵;

根据所述用户隐含特征矩阵和所述物品隐含特征矩阵,预测用户对未评分物品的评分分值;

根据所述评分分值,构建针对所述用户的物品推荐列表。

进一步地,所述基于物品标签数据构建物品-标签矩阵并计算标签相似度之前,还包括从源数据中提取物品标签信息三元组;

所述求解用户隐含特征矩阵和物品隐含特征矩阵之前,还包括从源数据中提取物品评分信息三元组。

进一步地,所述求解用户隐含特征矩阵和物品隐含特征矩阵,包括:

随机初始化所述用户隐含特征矩阵和所述物品隐含特征矩阵;

采用所述物品相似度约束所述用户隐含特征矩阵和所述物品隐含特征矩阵分解的过程,建立损失函数;

基于所述损失函数,使用梯度下降法不断迭代学习得到所述用户隐含特征矩阵和所述物品隐含特征矩阵。

进一步地,所述基于所述损失函数,使用梯度下降法不断迭代学习得到所述用户隐含特征矩阵和所述物品隐含特征矩阵,包括:

设定迭代阈值和收敛条件,并初始化迭代次数;

基于所述损失函数和所述用户隐含特征矩阵,使用梯度下降法获取所述用户隐含特征矩阵的梯度;

基于所述损失函数和所述物品隐含特征矩阵,使用梯度下降法获取所述物品隐含特征矩阵的梯度;

迭代并更新所述用户隐含特征矩阵的梯度和所述物品隐含特征矩阵的梯度;

判断迭代次数是否到达所述迭代阈值,

若迭代次数达到所述迭代阈值,则输出所述用户隐含特征矩阵和所述物品隐含特征矩阵;

若迭代次数未达到所述迭代阈值,则判断迭代结果是否满足所述收敛条件;

若迭代结果满足所述收敛条件,则执行所述输出所述用户隐含特征矩阵和所述物品隐含特征矩阵;若迭代结果不满足所述收敛条件,则执行所述基于所述损失函数和所述用户隐含特征矩阵,使用梯度下降法获取所述用户隐含特征矩阵的梯度。

进一步地,所述基于所述损失函数,使用梯度下降法不断迭代学习得到所述用户隐含特征矩阵和所述物品隐含特征矩阵,包括:

设置迭代阈值和收敛条件,并初始化迭代次数;

基于所述损失函数和所述用户隐含特征矩阵,使用梯度下降法获取所述用户隐含特征矩阵的梯度;

基于所述损失函数和所述物品隐含特征矩阵,使用梯度下降法获取所述物品隐含特征矩阵的梯度;

迭代并更新所述用户隐含特征矩阵的梯度和所述物品隐含特征矩阵的梯度;

判断迭代结果是否满足所述收敛条件;

若迭代结果满足所述收敛条件,则输出所述用户隐含特征矩阵和所述物品隐含特征矩阵;

若迭代结果不满足所述收敛条件,则判断迭代次数是否到达所述迭代阈值;

若迭代次数达到所述迭代阈值,则执行所述输出所述用户隐含特征矩阵和所述物品隐含特征矩阵;

若迭代次数未达到所述迭代阈值,则执行所述基于所述损失函数和所述用户隐含特征矩阵,使用梯度下降法获取所述用户隐含特征矩阵的梯度。

本发明还提供了一种基于拓展标签的矩阵分解推荐系统,具体技术方案如下:

一种基于拓展标签的矩阵分解推荐系统,包括如下模块:

标签相似度计算模块,用于基于物品标签数据构建物品-标签矩阵并计算标签相似度;

第一向量构建模块,用于基于所述物品-标签矩阵构建第一物品对-标签向量;

第二向量构建模块,用于根据所述标签相似度将所述第一物品对-标签向量拓展为第二物品对-标签向量;

物品相似度计算模块,用于基于所述第二物品对-标签向量计算物品相似度,并建立物品相似度矩阵;

隐含矩阵求解模块,用于基于所述物品相似度矩阵和预先构建的物品评分矩阵,求解用户隐含特征矩阵和物品隐含特征矩阵;

预测模块,用于根据所述用户隐含特征矩阵和所述物品隐含特征矩阵,预测用户对未评分物品的评分分值;

推荐模块,用于根据所述评分分值,构建针对所述用户的物品推荐列表。

进一步地,还包括:

第一提取模块,用于在所述基于物品标签数据构建物品-标签矩阵并计算标签相似度之前,从源数据中提取物品标签信息三元组;

第二提取模块,用于在所述求解用户隐含特征矩阵和物品隐含特征矩阵之前,从源数据中提取物品评分信息三元组。

进一步地,所述隐含矩阵求解模块包括:

第一初始化模块,用于随机初始化所述用户隐含特征矩阵和所述物品隐含特征矩阵;

损失函数建立模块,用于采用所述物品相似度约束所述用户隐含特征矩阵和所述物品隐含特征矩阵分解的过程,建立损失函数;

迭代模块,用于基于所述损失函数,使用梯度下降法不断迭代学习得到所述用户隐含特征矩阵和所述物品隐含特征矩阵。

进一步地,所述迭代模块包括:

第二初始化模块,用于设定迭代阈值和收敛条件,并初始化迭代次数;

第一梯度计算模块,用于基于所述损失函数和所述用户隐含特征矩阵,使用梯度下降法获取所述用户隐含特征矩阵的梯度;

第二梯度计算模块,用于基于所述损失函数和所述物品隐含特征矩阵,使用梯度下降法获取所述物品隐含特征矩阵的梯度;

迭代更新模块,用于迭代并更新所述用户隐含特征矩阵的梯度和所述物品隐含特征矩阵的梯度;

第一判断模块,用于判断迭代次数是否达到所述迭代阈值;

第一输出模块,用于若迭代次数达到所述迭代阈值,则输出所述用户隐含特征矩阵和所述物品隐含特征矩阵;

第二判断模块,用于若迭代次数未达到所述迭代阈值,则判断迭代结果是否满足所述收敛条件;

第二输出模块,用于若迭代结果满足所述收敛条件,则执行所述输出所述用户隐含特征矩阵和所述物品隐含特征矩阵;

调用模块,用于若迭代结果不满足所述收敛条件,则执行所述基于所述损失函数和所述用户隐含特征矩阵,使用梯度下降法获取所述用户隐含特征矩阵的梯度。

进一步地,所述迭代模块包括:

第二初始化模块,用于设置迭代阈值和收敛条件,并初始化迭代次数;

第一梯度计算模块,用于基于所述损失函数和所述用户隐含特征矩阵,使用梯度下降法获取所述用户隐含特征矩阵的梯度;

第二梯度计算模块,用于基于所述损失函数和所述物品隐含特征矩阵,使用梯度下降法获取所述物品隐含特征矩阵的梯度;

迭代更新模块,用于迭代并更新所述用户隐含特征矩阵的梯度和所述物品隐含特征矩阵的梯度;

第一判断模块,用于判断迭代结果是否满足所述收敛条件;

第一输出模块,用于若迭代结果满足所述收敛条件,则输出所述用户隐含特征矩阵和所述物品隐含特征矩阵;

第二判断模块,用于若迭代结果不满足所述收敛条件,则判断迭代次数是否到达所述迭代阈值;

第二输出模块,用于若迭代次数达到所述迭代阈值,则执行所述输出所述用户隐含特征矩阵和所述物品隐含特征矩阵;

调用模块,用于若迭代次数未达到所述迭代阈值,则执行所述基于所述损失函数和所述用户隐含特征矩阵,使用梯度下降法获取所述用户隐含特征矩阵的梯度。

标签在一定程度上反映了物品的性质,根据用户为物品标注的标签可以计算出物品之间的相似度。由于用户较少为物品标注标签以及不同用户的标注习惯不同(比如,用户可能会为同一物品标注含义相近但不同的标签),导致物品对应的标签是较为稀疏的。因此,在计算物品之间的相似度之前,需要先解决标签稀疏的问题。

本发明基于两个不同标签同时出现在同一物品中的次数越多,这两个标签关联越大的假设,建立了相似标签矩阵;根据标签的相似性拓展物品的标签;基于拓展后的物品标签,计算出更准确的物品相似度。完成上述工作后,就可以利用物品相似度约束矩阵分解的学习过程,提高推荐方法的精度,获得更准确的推荐结果。

与现有技术相比,本发明的实施能够带来如下有益效果:

1、本发明提供的一种基于拓展标签的矩阵分解推荐方法及系统,考虑了物品对应的标签的稀疏性问题,物品之间的相似度是基于拓展后的物品标签计算获得的,避免了物品标签的差异带来的偏差数据信息,显著提高了相似度的计算精度,能够在标签稀疏的情况下为用户提供更准确的个性化推荐。

2、本发明提供的一种基于拓展标签的矩阵分解推荐方法及系统在预测评分过程中使用的物品对应的标签信息,既包括原有标签信息,还包括拓展标签信息,在一定程度上缓解了物品的冷启动问题。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其它附图。

图1是本发明实施例提供的一种基于拓展标签的矩阵分解推荐方法的计算机终端的硬件结构框图;

图2是本发明实施例提供的一种基于拓展标签的矩阵分解推荐方法的流程图;

图3是本发明实施例提供的求解用户隐含特征矩阵和物品隐含特征矩阵的流程图;

图4是本发明实施例提供的通过迭代学习得到所述用户隐含特征矩阵和所述物品隐含特征矩阵的流程图;

图5是本发明实施例在movielens数据集下提供的标签信息对推荐结果的影响示意图;

图6是本发明实施例在bookcrossing数据集下提供的标签信息对推荐结果的影响示意图;

图7是本发明实施例在movielens数据集下提供的隐含特征向量维度取值对推荐结果的影响示意图;

图8是本发明实施例在bookcrossing数据集下提供的隐含特征向量维度取值对推荐结果的影响示意图;

图9是本发明实施例提供的一种基于拓展标签的矩阵分解推荐系统的结构框图;

图10是本发明实施例提供的隐含矩阵求解模块的结构框图;

图11是本发明实施例提供的迭代模块的结构框图;

图12是本发明实施例提供的计算机终端的结构框图。

具体实施方式

为了使本技术领域的人员更好地理解本发明方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分的实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本发明保护的范围。

需要说明的是,本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本发明的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。

实施例1

本发明提供了一种基于拓展标签的矩阵分解推荐方法及系统,需要说明的是,在附图的流程图示出的步骤可以在诸如一组计算机可执行指令的计算机系统中执行,并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。

本申请实施例1所提供的方法实施例可以在移动终端、计算机终端或者类似的运算装置中执行。以运行在计算机终端上为例,图1是根据本发明实施例的一种基于拓展标签的矩阵分解推荐方法的计算机终端的硬件结构框图。如图1所示,计算机终端100可以包括一个或多个(图中仅示出一个)处理器102(处理器102可以包括但不限于微处理器mcu或可编程逻辑器件fpga等的处理装置)、用于存储数据的存储器104、以及用于通信功能的传输装置106。本领域普通技术人员可以理解,图1所示的结构仅为示意,其并不对上述电子装置的结构造成限定。例如,计算机终端100还可包括比图12中所示更多或者更少的组件,或者具有与图1所示不同的配置。

存储器104可用于存储应用软件的软件程序以及模块,如本发明实施例中的一种基于拓展标签的矩阵分解推荐方法对应的程序指令/模块,处理器102通过运行存储在存储器104内的软件程序以及模块,从而执行各种功能应用以及数据处理,即实现上述的一种基于拓展标签的矩阵分解推荐方法。存储器104可包括高速随机存储器,还可包括非易失性存储器,如一个或者多个磁性存储装置、闪存、或者其他非易失性固态存储器。在一些实例中,存储器104可进一步包括相对于处理器102远程设置的存储器,这些远程存储器可以通过网络连接至计算机终端10。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。

传输装置106用于经由一个网络接收或者发送数据。上述的网络具体实例可包括计算机终端100的通信供应商提供的无线网络。在一个实例中,传输装置106包括一个网络适配器(networkinterfacecontroller,简称为nic),其可通过基站与其他网络设备相连从而可与互联网进行通讯。在一个实例中,传输装置106可以为射频(radiofrequency,简称为rf)模块,其用于通过无线方式与互联网进行通讯。

在上述运行环境下,本申请提供了如图2所示的一种基于拓展标签的矩阵分解推荐方法。该方法可以应用于计算机终端中,也可以应用于智能终端设备中,由智能终端设备中的处理器执行,智能终端设备可以是智能手机、平板电脑等。智能终端设备中安装有至少一个应用程序,本发明实施例并不限定应用程序的种类,可以为系统类应用程序,也可以为软件类应用程序。

图2是根据本发明一个实施例提供的一种基于拓展标签的矩阵分解推荐方法的流程图。如图2所示,该一种基于拓展标签的矩阵分解推荐方法的一种可选的方案包括如下步骤:

s101:基于物品标签数据构建物品-标签矩阵并计算标签相似度;

具体地,所述基于物品标签数据构建物品-标签矩阵并计算标签相似度之前,还包括从源数据中提取物品标签信息三元组p=<i,t,f>。其中t={t1,t2,…,tt,…,t|t|}表示标签集合,其中tt表示第t个标签。f={fit}n*|t|表示物品-标签信息矩阵,fit表示物品i被标注标签t的次数。

具体地,基于“两个不同标签同时出现在同一物品中的次数越多,两个标签关联越大”的假设,利用式(1)计算标签t和标签z的相似度;

式(1)中,nt,i表示物品i被标注为标签t的次数,nz,i表示物品i被标注为标签z的次数,n(t)表示被标注为标签t的物品集合,n(z)表示被标注为标签z的物品集合,n(t)∩n(z)表示既被标注为标签t也被标注为标签z的物品集合。

s102:基于所述物品-标签矩阵构建第一物品对-标签向量;

具体地,根据物品的标签信息,把每对物品的标签集映射到这两个物品的共有标签空间中,构建物品对的标签向量。

定义向量为物品i对物品j的标签向量,为物品j对物品i的标签向量,其中n(ti)和n(tj)分别表示物品i和物品j的标签个数,n(ti∩j)表示物品i与物品j共享的标签个数。物品i对物品j的标签向量中的元素是第k个标签在物品i中出现的次数。

s103:根据所述标签相似度将所述第一物品对-标签向量拓展为第二物品对-标签向量;

具体地,根据基于标签共现次数的所述标签相似度来拓展物品的标签,利用式(2)计算第二物品对-标签的向量:

式(2)中,ti是物品i对应的标签集合,是标签t在物品i中出现的次数,sim(t,z)是标签t与标签z的相似度,是出现在物品i中的标签个数。

s104:基于所述第二物品对-标签向量计算,并建立物品相似度矩阵;

具体地,基于所述第二物品对-标签向量(所述第二物品对-标签向量包括已知的标签出现次数和估计的拓展标签出现次数),利用余弦相似度计算物品间的相似度:

式(3)中,表示拓展标签后物品i与物品j共享的标签集合,nik和njk分别表示标签k在物品i和物品j中出现的次数,ti*分别表示拓展标签后物品i与物品j的标签集合。

基于所述物品相似度,建立基于拓展标签的物品相似度矩阵s∈n×n

式(4)中的元素sij=sim(vi,vj)表示物品vi与物品vj的相似度。

s105:基于所述物品相似度矩阵和预先构建的物品评分矩阵,求解用户隐含特征矩阵和物品隐含特征矩阵;

具体地,所述求解用户隐含特征矩阵和物品隐含特征矩阵之前,还包括从源数据中提取物品评分信息三元组t=<u,i,r>。其中,u={u1,u2,…,ui,…,um}表示用户集合,其中ui表示第i个用户。i={i1,i2,…,ij,…,in}表示物品集合,其中ij表示第j个用户。r={rij}m*n表示评分矩阵,其中rij表示第i个用户对第j个物品的评分。

具体地,所述物品评分信息三元组用于构建所述物品评分矩阵。

图3是本发明实施例提供的求解用户隐含特征矩阵和物品隐含特征矩阵的流程图,如图3所示,所述求解用户隐含特征矩阵和物品隐含特征矩阵,包括如下步骤:

s1051:随机初始化所述用户隐含特征矩阵和所述物品隐含特征矩阵;

s1052:采用所述物品相似度约束所述用户隐含特征矩阵p和所述物品隐含特征矩阵q分解的过程,建立损失函数;

具体地,在学习隐含矩阵的过程中,为了达到拥有相似的标签历史记录的物品对应的物品隐含特征向量尽可能相似的目的,采用基于拓展标签的物品相似度来约束矩阵分解的过程。

在学习隐含矩阵的过程中,为了达到拥有相似的标签历史记录的物品对应的物品隐含特征向量尽可能相似的目标,采用基于拓展标签的物品相似度来约束矩阵分解的过程。每个物品的隐含特征向量需要满足基于相似标签的物品约束规则,参见式(5)

其中β表示另一个控制基于标签的物品相似度的影响的规则参数,si,j表示物品i与物品j基于标签信息的相似度,si,j的值越小,说明两个物品的隐含特征向量距离越大,反之亦然。规范该约束规则如式(6):

式(6)中,l=d-s是拉普拉斯矩阵(laplacianmatrix),d是一个对角元素为dii=∑jsij的对角矩阵,tr()表示矩阵的迹。结合该约束规则,得到最终的损失函数:

式(7)中,。表示hadamard积(hadamardproduct),w是一个指标矩阵,wu,i=1表示用户u对物品i有评分,wu,i=0表示用户u没有对物品i评分。

s1053:基于所述损失函数,使用梯度下降法不断迭代学习得到所述用户隐含特征矩阵和所述物品隐含特征矩阵。

图4是本发明实施例提供的通过迭代学习得到所述用户隐含特征矩阵和所述物品隐含特征矩阵的流程图,如图4所示,在一个实施例中,所述基于所述损失函数,使用梯度下降法不断迭代学习得到所述用户隐含特征矩阵和所述物品隐含特征矩阵,包括如下步骤:

s10531:设定迭代阈值为τ和收敛条件,并初始化迭代次数z=1;

s10532:基于所述损失函数和所述用户隐含特征矩阵p,使用梯度下降法获取所述用户隐含特征矩阵的梯度;

对所述用户隐含特征矩阵p执行梯度下降算法,利用式(8)获得用户隐含特征矩阵p的梯度:

s10533:基于所述损失函数和所述物品隐含特征矩阵q,使用梯度下降法获取所述物品隐含特征矩阵的梯度;

对所述物品隐含特征矩阵q执行梯度下降算法,利用式(9)获得所述物品隐含特征矩阵q的梯度:

s10534:迭代并更新所述用户隐含特征矩阵p的梯度和所述物品隐含特征矩阵q的梯度;

利用式(10)更新用户隐含特征矩阵p的梯度,获得第z+1次迭代的用户隐含特征矩阵的梯度pz+1

利用式(11)更新物品隐含特征矩阵q的梯度,获得第z+1次迭代的物品隐含特征矩阵的梯度qz+1

式(10)和(11)中,η为学习率。

s10535:判断迭代次数是否到达所述迭代阈值,

s10536:若迭代次数达到所述迭代阈值,则输出所述用户隐含特征矩阵和所述物品隐含特征矩阵;

s10537:若迭代次数未达到所述迭代阈值,则判断迭代结果是否满足所述收敛条件;

s10538:若迭代结果满足所述收敛条件,则执行所述输出所述用户隐含特征矩阵和所述物品隐含特征矩阵;若迭代结果不满足所述收敛条件,则执行所述基于所述损失函数和所述用户隐含特征矩阵,使用梯度下降法获取所述用户隐含特征矩阵的梯度。

在一个实施例中,所述基于所述损失函数,使用梯度下降法不断迭代学习得到所述用户隐含特征矩阵和所述物品隐含特征矩阵,包括:

设置迭代阈值和收敛条件,并初始化迭代次数;

基于所述损失函数和所述用户隐含特征矩阵,使用梯度下降法获取所述用户隐含特征矩阵的梯度;

基于所述损失函数和所述物品隐含特征矩阵,使用梯度下降法获取所述物品隐含特征矩阵的梯度;

迭代并更新所述用户隐含特征矩阵的梯度和所述物品隐含特征矩阵的梯度;

判断迭代结果是否满足所述收敛条件;

若迭代结果满足所述收敛条件,则输出所述用户隐含特征矩阵和所述物品隐含特征矩阵;

若迭代结果不满足所述收敛条件,则判断迭代次数是否到达所述迭代阈值;

若迭代次数达到所述迭代阈值,则执行所述输出所述用户隐含特征矩阵和所述物品隐含特征矩阵;

若迭代次数未达到所述迭代阈值,则执行所述基于所述损失函数和所述用户隐含特征矩阵,使用梯度下降法获取所述用户隐含特征矩阵的梯度。

s106:根据所述用户隐含特征矩阵和所述物品隐含特征矩阵,预测用户对未评分物品的评分分值;

得到用户隐含特征矩阵p和物品隐含特征矩阵q后,利用式(12)计算用户对未评分物品的评分。

s107:根据所述评分分值,构建针对所述用户的物品推荐列表。

具体地,根据预测得到的所述评分分值,选择每个用户预测评分中最高的前n个物品组成该用户的物品推荐列表。

在一个实施例中,选取movielen20m数据集作为原始数据集。movielen20m数据集是在做推荐时候用到的开放的数据集,这个数据集包含了用户对电影的评分。具体地,movielens数据集中,用户对自己看过的电影进行评分,分值为1~5。movielens包括两个不同大小的库,适用于不同规模的算法.小规模的库是943个独立用户对1682部电影作的10000次评分的数据;大规模的库是6040个独立用户对3900部电影作的大约100万次评分。

在该实施例中,对movielen20m数据集进行数据预处理,具体包括:

确定常见电影:从原始数据集中过滤出至少被20位用户评分的电影,再利用这些常见的电影过滤出显著的标签和用户。

确定显著标签:选取至少被5位用户标注的以及至少被添加到5部电影的标签作为显著标签。

确定显著用户:选取至少标注3个显著标签的用户作为显著用户。

确定显著电影:利用显著标签和显著用户过滤常见电影,得到显著电影。过滤原始数据集后,从获得的2161部显著电影中选取999部电影作为最终的显著电影。

对movielen20m数据集预处理之后,最终得到的数据集包含999部电影被标注为1968个标签的187,160条标签记录和7711位用户对999部电影的375,873条评分记录。

在一个实施例中,采用bookcrossing数据集作为原始数据集。book-crossing数据集是在做推荐时候用到的开放的数据集,包含了网上的book-crossing图书社区的278858个用户对271379本书进行的评分,包括显式和隐式的评分。这些用户的年龄等人口统计学属性(demographicfeature)都以匿名的形式保存并供分析。这个数据集是由cai-nicolasziegler使用爬虫程序在2004年从book-crossing图书社区上采集的。在该实施例中,对bookcrossing数据集进行数据预处理,具体包括:

确定常见书籍:从原始数据集中过滤出至少被20位用户评分的书籍,再利用这些常见的书籍过滤出显著的标签和用户。

确定显著标签:选取至少被3位用户标注的以及至少被添加到3本书籍的标签作为显著标签;

确定显著用户:只保留了至少编写3本书籍的作者和至少发行15本书籍的出版社作为显著用户。

确定显著书籍:利用显著标签和显著用户得到显著书籍。

对bookcrossing数据集预处理之后,最终得到的数据集包含10000本书籍被标注为个1210标签的145,707条标签记录和1851位用户对1000本书籍的12,931条评分记录。

随机地把挑选后的实验数据集分成两个部分,每个部分包含50%的可观察评分数据。其中一部分作为测试集,测试集在所有实验中都是保持不变的。另一部分作为产生不同的训练集的源数据。例如,训练集的大小为20%表示这些训练数据是由从源数据中随机挑选20%的评分数据组成的。从源数据中重复随机挑选10次一定比例的评分数据,从而组成10个不同的训练集。最终展示的结果是这些实验结果的平均值。

平均绝对偏差mae(meanabsoluteerror)方法是统计精度度量方法中最常用的一种推荐质量度量方法,不仅易于理解,还可以直观地对推荐质量进行度量,通过计算测试集中用户的预测评分与实际评分之间的平均偏差能够度量预测算法的准确性。在一个实施例中,采用mae方法检验本发明实施例提供的基于拓展标签的矩阵分解推荐算法的推荐质量,具体地,mae的计算值越小,推荐质量越高。mae的计算公式为:

通过比较mae值的大小,能够对影响本发明实施例的推荐结果准确性的因素进行分析。具体地,所述影响因素包括标签信息和隐含特征向量的维度。

图5是本发明实施例在movielens数据集下提供的标签信息对推荐结果的影响示意图,图6是本发明实施例在bookcrossing数据集下提供的标签信息对推荐结果的影响示意图,图5和图6分别示出了参数β对基于拓展标签的矩阵分解推荐算法mae的影响。

根据式(5)可知,在学习每个物品隐含特征向量过程中物品的拓展标签信息的影响程度与β的取值有关。β取值越大表示在预测用户特征时赋予基于拓展标签的物品信息的权重越大。基于拓展标签的物品信息会参与隐含特征矩阵的学习过程并且使每个物品的隐含特征向量尽量接近于与其标签记录相近的物品的隐含特征向量。β的取值很小时,基于拓展标签的矩阵分解推荐算法退化为基本的矩阵分解推荐算法。因此,β的取值决定了基于拓展标签的矩阵分解推荐算法的性能。

在一组实验中,将隐含特征向量的维度k设置为10。对于movielens数据集,β取值区间设为从0.1至2.9(β每一次增加0.4)。对于bookcrossing数据集,β取值区间设为从3至6(β每一次增加0.5)。基于规模为20%的训练集,评估参数β对基于拓展标签的矩阵分解推荐算法的影响。

从图5中可以观察到β的取值对算法的效果有显著的影响,mae值随着β值的增加而减小,当β值为1.3时,基于拓展标签的矩阵分解推荐算法的mae值达到最小,即基于拓展标签的矩阵分解推荐算法的效果最好,当β值超过1.3后,mae值随着β值的增加而增加,即基于拓展标签的矩阵分解推荐算法的效果随之下降。

从图6中可以观察到β的取值对算法的效果有显著的影响,mae值随着β值的增加而减小,当β值为4.5时,基于拓展标签的矩阵分解推荐算法的mae值达到最小,即基于拓展标签的矩阵分解推荐算法的效果最好,当β值超过4.5后,mae值随着β值的增加而增加,即基于拓展标签的矩阵分解推荐算法的效果随之下降。这表明仅仅使用评分信息而不利用标签信息或者仅仅利用标签信息而不使用评分信息难以实现可靠的推荐效果。

图7是本发明实施例在movielens数据集下提供的隐含特征向量维度取值对推荐结果的影响示意图,图8是本发明实施例在bookcrossing数据集下提供的隐含特征向量维度取值对推荐结果的影响示意图,图7、图8分别示出了隐含特征向量的维度k对推荐结果的影响程度,以及使用物品的未拓展标签信息约束基于概率的矩阵分解推荐算法(tagicofi算法)和基于拓展标签的矩阵分解推荐算法在不同的k值下的mae值。

隐含特征向量的维度k是基于拓展标签的矩阵分解推荐算法的另一个影响参数。针对movielens数据集,对于tagicofi算法,设定β=0.9,对于etimf算法,设定β=4.5。

图7、图8示出了在两种数据集实验中,两种算法在不同的k值下的mae值,同时也列出基于拓展标签的矩阵分解推荐算法相比与tagicofi算法mae值下降的百分比。图7、图8显示随着隐含特征向量维度k的增加,mae值相应地下降。这表明隐含特征向量的维度越大,它可以表示越多的信息。图7、图8也显示随着隐含特征向量维度k的增加,基于拓展标签的矩阵分解推荐算法与tagicofi算法相比mae值下降的百分比越小,即基于拓展标签的矩阵分解推荐算法的提升效果越不明显。这表明当k的取值达到一定限度时,隐含特征已经完全可以表示有效的信息,再继续增加k值也不会对基于拓展标签的矩阵分解推荐算法效果有明显的提升。从图7、图8可以看出,基于拓展标签的矩阵分解推荐算法在k取值范围较大的情况下也达到良好的效果。

本发明实施例得出的推荐结果与利用其他推荐方法得出的推荐结果之间的优劣对比也可以通过比较mae值的大小实现。

在一个实施例中,对基于拓展标签的矩阵分解推荐算法和传统的经典矩阵分解推荐算法(mf)及使用物品的未拓展标签信息约束基于概率的矩阵分解推荐算法(tagicofi)进行了比较。

在实验过程中参考这些算法的最佳参数来设置算法参数。

在一个实施例中,对于movielens数据集将λ1设置为0.1、将λ2设置为0.1、将学习速率参数η设置为0.005;针对tagicofi,将参数β设置为0.1;针对基于拓展标签的矩阵分解推荐算法,将参数β设置为1.3。

在一个实施例中,对于book-crossing数据集,将λ1设置为0.1、将λ2设置为0.1、将学习速率参数η设置为0.01;针对tagicofi,将参数β设置为0.9;针对基于拓展标签的矩阵分解推荐算法,将参数β设置为4.5。

在对比算法性能时,仅使用规模为20%、50%和80%的训练集。

表1推荐结果的比较数据(movielens)

表2推荐结果的比较数据(bookcrossing)

表1示出了在movielens数据集下分别采用三种算法计算出的推荐结果的比较数据,表2示出了在bookcrossing数据集下分别采用三种算法计算出的推荐结果的比较数据,根据表1、表2,可以看出,本发明实施例提供的基于拓展标签的矩阵分解推荐算法的效果是明显优于mf和tagicofi的。mf、tagicofi和基于拓展标签的矩阵分解推荐算法最大的不同就是使用额外的标签信息,利用标签信息可以有效地提升推荐算法的效果。根据tagicofi和基于拓展标签的矩阵分解推荐算法的比较结果,可观察到利用拓展的标签信息可以进一步提升推荐算法的效果,也证实了本发明实施例提供的基于拓展标签的矩阵分解推荐算法能够有效地利用拓展的标签信息。

在一个实施例中,还进行了冷启动物品推荐效果实验。冷启动问题是指在推荐系统中,如果系统初期收集的数据为空或者很少,达不到系统需求,导致系统很难为用户或者项目做出推荐的问题。由于协同过滤推荐根据用户对项目的评分数据产生推荐的,因此,当新用户刚加入系统的时候,由于没有任何与他们相关的评分信息,系统很难为该新用户推荐项目,也很难将该新项目推荐给用户。

在该实施例提供的冷启动物品推荐效果实验中,具体地,基于规模为20%的训练集,我们随机删除50和100个电影的评分记录执行两组movielens数据集的实验,同时随机删除50和100本书籍的评分记录执行两组book-crossing数据集的实验.被删除的电影和书籍成为冷启动物品,既系统中出现的新物品.在这些实验中,对于movielens数据集,tagicofi算法和etimf算法的参数β分别设置为0.1和1.3,对于book-crossing数据集,tagicofi算法和etimf算法的参数β分别设置为0.9和4.5。

表3物品冷启动下推荐结果的比较(movielens)

表4物品冷启动下推荐结果的比较(bookcrossing)

表3示出了在movielens数据集下物品冷启动下分别采用三种算法计算出的推荐结果的比较数据,表4示出了在bookcrossing数据集下物品冷启动下分别采用三种算法计算出的推荐结果的比较数据,根据表3、表4可以看出,在冷启动物品为50以及冷启动物品为100的情况下,本发明实施例提供的基于拓展标签的矩阵分解推荐算法效果都明显比tagicofi算法好,证实了基于拓展标签的矩阵分解推荐算法不仅可以利用标签信息还可以利用拓展的标签信息来为用户推荐新的物品。

本实施例的实施能够带来以下有益效果:

1、本实施例提供的一种基于拓展标签的矩阵分解推荐方法,考虑了物品对应的标签的稀疏性问题,物品之间的相似度是基于拓展后的物品标签计算获得的,避免了物品标签的差异带来的偏差数据信息,显著提高了相似度的计算精度,能够在标签稀疏的情况下为用户提供更准确的个性化推荐。

2、本实施例提供的一种基于拓展标签的矩阵分解推荐方法,在预测评分过程中使用的物品对应的标签信息,既包括原有标签信息,还包括拓展标签信息,在一定程度上缓解了物品的冷启动问题,能够为用户推荐新的物品。

实施例2

图9是本发明实施例提供的一种基于拓展标签的矩阵分解推荐系统的结构框图,如图9所示,本发明还提供了一种基于拓展标签的矩阵分解推荐系统,包括如下模块:

标签相似度计算模块201,用于基于物品标签数据构建物品-标签矩阵并计算标签相似度;

第一向量构建模块202,用于基于所述物品-标签矩阵构建第一物品对-标签向量;

第二向量构建模块203,用于根据所述标签相似度将所述第一物品对-标签向量拓展为第二物品对-标签向量;

物品相似度计算模块204,用于基于所述第二物品对-标签向量计算物品相似度,并建立物品相似度矩阵;

隐含矩阵求解模块205,用于基于所述物品相似度矩阵和预先构建的物品评分矩阵,求解用户隐含特征矩阵和物品隐含特征矩阵;

图10是本发明实施例提供的隐含矩阵求解模块的结构框图,如图10所示,在一个实施例中,所述隐含矩阵求解模块205包括第一初始化模块2051、损失函数建立模块2052和迭代模块2053,第一初始化模块2051用于随机初始化所述用户隐含特征矩阵和所述物品隐含特征矩阵,损失函数建立模块2052用于采用所述物品相似度约束所述用户隐含特征矩阵和所述物品隐含特征矩阵分解的过程,建立损失函数,迭代模块2053用于基于所述损失函数,使用梯度下降法不断迭代学习得到所述用户隐含特征矩阵和所述物品隐含特征矩阵。

预测模块206,用于根据所述用户隐含特征矩阵和所述物品隐含特征矩阵,预测用户对未评分物品的评分分值;

推荐模块207,用于根据所述评分分值,构建针对所述用户的物品推荐列表。

具体地,所述系统还包括第一提取模块和第二提取模块,第一提取模块,用于在所述基于物品标签数据构建物品-标签矩阵并计算标签相似度之前,从源数据中提取物品标签信息三元组;第二提取模块,用于在所述求解用户隐含特征矩阵和物品隐含特征矩阵之前,从源数据中提取物品评分信息三元组。

图11是本发明实施例提供的迭代模块的结构框图,如图11所示,在一个实施例中,所述迭代模块2053包括第二初始化模块20531、第一梯度计算模块20532、第二梯度计算模块20533、迭代更新模块20534、第一判断模块20535、第一输出模块20536、第二判断模块20537、第二输出模块20538和调用模块20539。其中,第二初始化模块20531,用于设定迭代阈值和收敛条件,并初始化迭代次数;第一梯度计算模块20532,用于基于所述损失函数和所述用户隐含特征矩阵,使用梯度下降法获取所述用户隐含特征矩阵的梯度;第二梯度计算模块20533,用于基于所述损失函数和所述物品隐含特征矩阵,使用梯度下降法获取所述物品隐含特征矩阵的梯度;迭代更新模块20534,用于迭代并更新所述用户隐含特征矩阵的梯度和所述物品隐含特征矩阵的梯度;第一判断模块20535,用于判断迭代次数是否达到所述迭代阈值;第一输出模块20536,用于若迭代次数达到所述迭代阈值,则输出所述用户隐含特征矩阵和所述物品隐含特征矩阵;第二判断模块20537,用于若迭代次数未达到所述迭代阈值,则判断迭代结果是否满足所述收敛条件;第二输出模块20538,用于若迭代结果满足所述收敛条件,则执行所述输出所述用户隐含特征矩阵和所述物品隐含特征矩阵;调用模块20539,用于若迭代结果不满足所述收敛条件,则执行所述基于所述损失函数和所述用户隐含特征矩阵,使用梯度下降法获取所述用户隐含特征矩阵的梯度。

在一个实施例中,所述迭代模块包括第二初始化模块、第一梯度计算模块、第二梯度计算模块、迭代更新模块、第一判断模块、第一输出模块、第二判断模块、第二输出模块和调用模块,其中,第二初始化模块,用于设置迭代阈值和收敛条件,并初始化迭代次数;第一梯度计算模块,用于基于所述损失函数和所述用户隐含特征矩阵,使用梯度下降法获取所述用户隐含特征矩阵的梯度;第二梯度计算模块,用于基于所述损失函数和所述物品隐含特征矩阵,使用梯度下降法获取所述物品隐含特征矩阵的梯度;迭代更新模块,用于迭代并更新所述用户隐含特征矩阵的梯度和所述物品隐含特征矩阵的梯度;第一判断模块,用于判断迭代结果是否满足所述收敛条件;第一输出模块,用于若迭代结果满足所述收敛条件,则输出所述用户隐含特征矩阵和所述物品隐含特征矩阵;第二判断模块,用于若迭代结果不满足所述收敛条件,则判断迭代次数是否到达所述迭代阈值;第二输出模块,用于若迭代次数达到所述迭代阈值,则执行所述输出所述用户隐含特征矩阵和所述物品隐含特征矩阵;调用模块,用于若迭代次数未达到所述迭代阈值,则执行所述基于所述损失函数和所述用户隐含特征矩阵,使用梯度下降法获取所述用户隐含特征矩阵的梯度。

在一个实施例中,所述系统还包括推荐质量检验模块,所述推荐质量检验模块通过计算测试数据集中用户的预测评分与实际评分之间的平均偏差来度量预测算法的准确性,具体地,所述推荐质量检验模块采用平均绝对偏差mae(meanabsoluteerror)方法进行计算,mae方法是统计精度度量方法中一种易于理解的方法,使用该方法可以直观地对推荐质量进行度量,是最常用的一种推荐质量度量方法,在该实施例中mae的计算值越小,推荐质量越高。mae的计算公式为:

本实施例的实施能够带来以下有益效果:

1、本发明实施例为对应于实施例1的一种基于拓展标签的矩阵分解推荐系统,所述基于拓展标签的矩阵分解推荐系统,能够解决标签稀疏问题,避免了物品标签的差异带来的偏差数据信息,能够为用户提供更准确的个性化推荐信息。

2、本实施例提供的一种基于拓展标签的矩阵分解推荐方法,在预测评分过程中使用的物品对应的标签信息,不仅包括原有标签信息,还包括拓展标签信息,在一定程度上缓解了物品的冷启动问题,能够为用户推荐新的物品。

实施例3

本发明还提供了一种存储介质。可选地,在本实施例中,上述存储介质可以用于保存上述实施例一种基于拓展标签的矩阵分解推荐方法所执行的程序代码。

可选地,在本实施例中,存储介质被设置为存储用于执行如下步骤的程序代码:

第一步,基于物品标签数据构建物品-标签矩阵并计算标签相似度;

第二步,基于所述物品-标签矩阵构建第一物品对-标签向量;

第三步,根据所述标签相似度将所述第一物品对-标签向量拓展为第二物品对-标签向量;

第四步,基于所述第二物品对-标签向量计算物品相似度,并建立物品相似度矩阵;

第五步,基于所述物品相似度矩阵和预先构建的物品评分矩阵,求解用户隐含特征矩阵和物品隐含特征矩阵;

第六步,根据所述用户隐含特征矩阵和所述物品隐含特征矩阵,预测用户对未评分物品的评分分值;

第七步,根据所述评分分值,构建针对所述用户的物品推荐列表。

可选地,本实施例中的具体示例可以参考上述实施例1和实施例2中所描述的示例,本实施例在此不再赘述。

可选地,在本实施例中,上述存储介质可以包括但不限于:u盘、只读存储器(rom,read-onlymemory)、随机存取存储器(ram,randomaccessmemory)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。

实施例4

本发明的实施例还提供一种计算机终端,该计算机终端可以是计算机终端群中的任意一个计算机终端设备。

可选地,图12是根据本发明实施例的计算机终端的结构框图。如图12所示,该计算机终端a可以包括:一个或多个(图中仅示出一个)处理器161和存储器163。

其中,存储器163可用于存储软件程序以及模块,如本发明实施例中的一种基于拓展标签的矩阵分解推荐方法和装置对应的程序指令/模块,处理器161通过运行存储在存储器163内的软件程序以及模块,从而执行各种功能应用以及数据处理,即实现上述的基于拓展标签的矩阵分解推荐程序。存储器163可包括高速随机存储器,还可以包括非易失性存储器,如一个或者多个磁性存储装置、闪存、或者其他非易失性固态存储器。在一些实例中,存储器163可进一步包括相对于处理器161远程设置的存储器,这些远程存储器可以通过网络连接至计算机终端a。

其中,具体地,存储器163用于存储预设动作条件和预设权限用户的信息、以及应用程序。

处理器161可以通过传输装置调用存储器163存储的信息及应用程序,以执行下述步骤:

可选的,上述处理器161还可以执行如下步骤的程序代码:

第一步,基于物品标签数据构建物品-标签矩阵并计算标签相似度;

第二步,基于所述物品-标签矩阵构建第一物品对-标签向量;

第三步,根据所述标签相似度将所述第一物品对-标签向量拓展为第二物品对-标签向量;

第四步,基于所述第二物品对-标签向量计算物品相似度,并建立物品相似度矩阵;

第五步,基于所述物品相似度矩阵和预先构建的物品评分矩阵,求解用户隐含特征矩阵和物品隐含特征矩阵;

第六步,根据所述用户隐含特征矩阵和所述物品隐含特征矩阵,预测用户对未评分物品的评分分值;

第七步,根据所述评分分值,构建针对所述用户的物品推荐列表。

可选地,本实施例中的具体示例可以参考上述实施例1和实施例2中所描述的示例,本实施例在此不再赘述。

上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。

上述实施例中的集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在上述计算机可读取的存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在存储介质中,包括若干指令用以使得一台或多台计算机设备(可为个人计算机、服务器或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。

在本发明的上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。

在本申请所提供的几个实施例中,应该理解到,所揭露的客户端,可通过其它的方式实现。其中,以上所描述的装置实施例仅仅是示意性的,例如所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,单元或模块的间接耦合或通信连接,可以是电性或其它的形式。

所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。

另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。

以上所述是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也视为本发明的保护范围。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1