商品推荐方法及装置与流程

文档序号:16432819发布日期:2018-12-28 20:16阅读:584来源:国知局
商品推荐方法及装置与流程

本发明实施例涉及隐反馈推荐技术领域,更具体地,涉及商品推荐方法及装置。

背景技术

隐反馈推荐系统的难点在于未观测数据的处理,通常有两种方法处理未观测的数据:(1)基于整体的策略,将所有未观测样本视作负反馈,该策略有更好的收敛性,但会产生大量低效的负样本;(2)基于采样的策略,从未观测样本中采样获得负反馈样本,该策略能有效减少训练时负样本的个数,但算法性能可能受到影响。

逐点式交替最小二乘法(element-wisealternatingleastsquares,简称eals)是一种基于矩阵分解(matrixfactorization,简称mf)的隐反馈推荐算法。eals的优化目标如下:

其中,u、i分别代表用户编号、商品编号,pu、qi为用户、商品对应的特征向量;rui代表用户u对商品i的真实喜好,通常将正反馈样本记为1,负样本记为0;代表模型预测评分,优化时将该预测分数向真实分数rui回归;ωui代表用户u购买过的商品i对于优化结果贡献的权重;项用于防止过拟合,λ控制过拟合程度。

通常的mf算法中,权重系数ωui对于观测到的正样本为1,对于所有未观测的样本均赋为相同的小于1的值,这样做的好处在于减小计算与存储的复杂度,但缺点是在真实的数据集上效果不佳。eals提出与商品流行度相关的权重系数ωui,能更加灵活、准确的描述未观测样本对优化目标的贡献。

未观测的样本由真正的负反馈(用户实际上没有兴趣购买)和缺失值(用户可能有兴趣购买)组成,真正的负反馈样本应当赋以更大的权重ωui。考虑到商品的流行度存在差异,流行的商品有更大的可能性被用户知晓,如果未观测到用户购买某件流行商品,那么相比于不流行商品,用户有更大的可能是真的不喜欢这件流行商品。因此,流行度越高的商品,其对应的未观测行为应当有更大的权重,公式描述如下:

其中,ci代表当商品i为未观测样本时对应的权重;代表商品i被购买次数占所有商品被购买次数的比例,用于衡量一件商品的流行度;r为购买数据;α用于控制流行商品与不流行商品之间的差距,0<α<1时,两者差距会变得平滑,α>1时,流行商品的影响会增强;c0用于控制观测行为与未观测行为权重的比例。利用上式重新表述eals的优化目标如下:



技术实现要素:

本发明实施例提供一种克服上述问题或者至少部分地解决上述问题的商品推荐方法及装置。

根据本发明实施例的第一个方面,提供一种商品推荐方法,包括:

获取用户群的购物数据,所述购物数据包括用户群中每个用户的编号、用户购买商品的编号、关注商品的编号以及用户对商品的真实喜好的标签,所述标签用于表征用户是否购买过该商品;

利用所述购物数据训练基于eals算法构建的预测模型,获得使所述预测模型达到最优解时的每个用户的用户特征向量以及每个商品的商品特征向量;所述用户特征向量与所述商品特征向量的内积用于表征用户对商品的预测喜好;

对于用户群中的任意一个用户,根据该用户的用户特征向量与各商品特征向量的内积,获得该用户对所有商品的预测喜好,根据该用户对所有商品的预测喜好获得该用户的商品推荐列表。

根据本发明实施例的第二个方面,提供一种商品推荐装置,包括:

购物数据获取模块,用于获取用户群的购物数据,所述购物数据包括用户群中每个用户的编号、用户购买商品的编号、关注商品的编号以及用户对商品的真实喜好的标签,所述标签用于表征用户是否购买过该商品;

训练模块,用于利用所述购物数据训练基于eals算法构建的预测模型,获得使所述预测模型达到最优解时的每个用户的用户特征向量以及每个商品的商品特征向量;所述用户特征向量与所述商品特征向量的内积用于表征用户对商品的预测喜好;

推荐模块,用于对于用户群中的任意一个用户,根据该用户的用户特征向量与各商品特征向量的内积,获得该用户对所有商品的预测喜好,根据该用户对所有商品的预测喜好获得该用户的商品推荐列表。

根据本发明实施例的第三个方面,还提供一种电子设备,包括:

至少一个处理器;以及

与所述处理器通信连接的至少一个存储器,其中:

所述存储器存储有可被所述处理器执行的程序指令,所述处理器调用所述程序指令能够执行第一方面的各种可能的实现方式中任一种可能的实现方式所提供的商品推荐方法。

根据本发明实施例的第四个方面,还提供一种非暂态计算机可读存储介质,所述非暂态计算机可读存储介质存储计算机指令,所述计算机指令使所述计算机执行第一方面的各种可能的实现方式中任一种可能的实现方式所提供的商品推荐方法。

本发明实施例提出的商品推荐方法及装置,在eals算法中加入用户关注的商品信息的影响,使得构建的预测模型能够更真实的反应用户对商品的喜好程度,从而达到更好的推荐效果。

附图说明

图1为根据本发明实施例提供的商品推荐方法的流程示意图;

图2为根据本发明实施例提供的商品推荐装置的功能框图;

图3为根据本发明实施例提供的电子设备的框图。

具体实施方式

下面结合附图和实施例,对本发明实施例的具体实施方式作进一步详细描述。以下实施例用于说明本发明实施例,但不用来限制本发明实施例的范围。

在现有的隐反馈预测模型中,仅考虑能直接反映用户喜好的行为(如商品推荐中的购买行为)。但其实用户购买商品的过程中还有大量额外的关注行为,如点击、浏览、搜索等行为,相比于购买行为,这些行为以更低的可信度反映了用户的喜好。

本发明实施例的发明构思为:将用户的关注行为体现在基于eals算法的预测模型中,从而获得对用户喜欢的商品更准确的描述。图1示出了根据本发明实施例提供的商品推荐方法的流程示意图,如图1所示,包括:

s101、获取用户群的购物数据,购物数据包括用户群中每个用户的编号、用户购买商品的编号、关注商品的编号以及用户对商品的真实喜好的标签,标签用于表征用户是否购买过该商品。

需要说明的是,首先通过数据库获取用户群的购物数据,购物数据是与购物有关的原始数据,包括用户的编号,用户的购买记录和关注记录,本发明实施例默认关注记录中的商品为用户仅关注但没有购买的商品,判断用户关注的方法可以是点击、浏览、搜索等行为。购买记录中记载有用户购买的商品的编号以及次数、关注记录中则记载有用户关注的商品的编号,本发明实施例中的编号出于方便统计的目的,可以以阿拉伯数字从1开始编号,用户群中用户的数量为m,因此用户的编号从1到m,而商品的总类为n,因此商品的编号可以是从1到n。

需要说明的是,隐反馈推荐系统对将未观测数据和观测数据分别视为负反馈和正反馈。在本发明实施例中若商品被用户购买过,则视为正反馈,用户对该商品的真实喜好记为1;将用户既没有关注也没有购买的商品作为负反馈,用户对该商品的真实喜好即为0;购买过的商品相比关注的商品,暗示着更强烈的用户喜好,同时用户对于关注的商品的喜好也应当超过从未关注的商品(本发明实施例默认购买过的商品一定是关注过的商品),因此用户对于关注商品的真实喜好应当介于0~1之间,在本发明实施例中,对于关注商品的是真实喜好不作确定。

s102、利用购物数据训练基于eals算法构建的预测模型,获得使预测模型达到最优解时的每个用户的用户特征向量以及每个商品的商品特征向量;用户特征向量与商品特征向量的内积用于表征用户对商品的预测喜好。

需要说明的是,eals算法的性能要优于bpr(贝叶斯个性化排序模型,bayesianpersonalizedranking,基于采样的策略),基于eals算法构建的预测模型以表征用户的固有属性的用户特征向量和表征商品的固有属性的商品特征向量作为自变量,以用户特征向量和商品特征向量的内积表征用户对商品的喜好程度作为因变量,以用户对部分商品(已购买的商品和未关注且未购买的商品)的真实喜好以及用户对关注商品的真实喜好处于已购买的商品的真实喜好以及未关注且未购买的商品的真实喜好之间作为约束条件并进行优化,将用户对商品的关注信息融入eals算法中,能够更真实的反应出用户对商品的喜好。

s103、对于用户群中的任意一个用户,根据该用户的用户特征向量与各商品特征向量的内积,获得该用户对所有商品的预测喜好,根据该用户对所有商品的预测喜好获得该用户的商品推荐列表。

需要说明的是,在本发明实施例的预测模型训练好后,实际上就获得了尽可能表征每个用户固有属性的用户特征向量以及表征每个商品固有属性的商品特征向量,因此在需要对用户群中的任意一个用户的喜好进行预测时,只需要要将该用户的用户特征向量以及所有商品特征向量进行内积运算,即可获得用户对所有商品的预测喜好。在获得用户对所有商品的预测喜好后,显然可以通过对预测喜好值大小的排序获得一定数量的推荐商品。

本发明实施例的商品推荐方法,在eals算法中加入用户关注的商品信息的影响,使得构建的预测模型能够更真实的反应用户对商品的喜好程度,从而达到更好的推荐效果。

在eals算法中加入关注行为的影响,最直观的想法是将关注的商品设置为相同的回归值(在0-1之间),但是相同的回归值过于简化这个问题,难以确定该值大小,并且有可能对算法性能带来负优化。因此,本发明实施例考虑在预测模型中加入购买的样本与关注的样本(或未关注的样本)的相对关系,将这种相对关系加入到传统的eals算法中,能够产生显著的性能提升。因此,在上述实施例的基础上,作为一种可选实施例,预测模型j的表达式为:

其中,r、v分别表示购买商品集合、关注商品集合;ωui表示用户u购买过商品i占优化结果的权重;rui表示用户u对购买过的商品i的真实喜好;表示用户u对购买过的商品i的预测喜好;表示商品j既未被用户u购买也未被用户关注;λ表示防止过拟合的正则化参数;pu表示用户u的特征向量;qi表示商品i的特征向量;m和n分别表示用户的总数和商品的总数;cj表示由商品j的流行度决定的权重系数;sv表示由商品v的流行度决定的权重系数;表示用户u对商品v的预测喜好;表示用户u对商品j的预测喜好;γ1表示的期望值;γ2表示的期望值。

需要说明的是,将预测模型中的部分视为jeals项,将部分视为jreg项,将部分视为jview项。通过将本发明实施例的预测模型与现有技术对比可知,jeals项和jreg项与现有技术中的预测模型中的部分相同,分别用于控制购买商品的预测分数和控制过拟合,而增加的jview项则用于控制关注商品的预测分数。

在预测模型j中,ωui、λ、γ1和γ2为训练前预先确定的参数,λ用于控制过拟合程度,由上述实施例可知,预测的用户u对关注的商品v的预测喜好应介于购买过的商品i和其他没有购买且未关注的商品j之间,具体的,认为之间相差γ1,同时之间相差γ2,分别用形式的代价函数表示,当这两个式子取0时,满足假设的用户购买行为、关注行为、其他未观测到交互行为的喜好先后关系。中考虑了所有用户及他们关注的商品((u,v)∈v)在用户-商品喜好表征中的影响。

参数sv的含义与cj(当商品为既未购买也未关注时对应的权重,计算公式与背景技术中ci的公式相同)含义相似,表示关注商品对应的权重,参数sv的表达式为:

s0用于控制关注商品与未关注商品权重的比例,0<b<1时,两者差距会变得平滑,b>1时,流行商品的影响会增强,表示商品v被关注次数占所有商品被关注次数的比例。显然,在预测模型j中,cj和sv都属于已知的参量。

由传统的eals算法可知,代表模型预测评分,优化时将该预测分数向真实分数rui回归,显然可以理解的是,本发明实施例中即计算用户u关注的商品v的预测喜好时,以用户u的用户特征向量pu与商品v的商品特征向量qv的内积为结果,而计算用户u既未关注也未购买的商品j的预测喜好时,以用户u的用户特征向量pu与商品j的商品特征向量qj的内积为结果。

基于上述实施例的内容,作为一种可选实施例,根据该用户对所有商品的预测喜好获得该用户的商品推荐列表,具体为:

根据该用户对所有商品的预测喜好由大到小进行排序,获得第一商品列表;从所述第一商品列表中删除该用户已购买过的商品,获得第二商品列表;将所述第二商品列表中从前往后依次选取预设数目的商品,构成该用户的商品推荐列表。

需要说明的是,本发明实施例通过对所有商品的预测喜好由大到小进行排序,再将用户已购买过的商品从第一商品列表中删除,即可获得目前用户尚未购买商品的、按照预测喜好排序的第二商品列表,再通过设置预设的数目从第二商品列表中从前往后筛选,即可获得最终面向该用户的商品推荐列表。

基于上述实施例的内容,作为一种可选实施例,利用所述购物数据训练基于eals算法构建的预测模型,获得使预测模型达到最优解时的每个用户的用户特征向量以及每个商品的商品特征向量,具体为:

对于当前优化的用户特征向量pu的第f维分量puf,以分量puf对预测模型求导,将使求导结果为0时的分量puf的结果作为优化后的分量puf,根据优化后的分量puf更新预测模型,并继续对分量puf+1进行优化,直至用户特征向量pu的所有分量优化完毕;

当用户特征向量pu的所有分量优化完毕后,继续对pu+1进行优化,直至所有用户特征向量优化完毕,当所有用户特征向量优化完毕后对商品向量进行优化;

对于当前优化的商品向量qi的第f维分量qif,以分量qif对预测模型求导,将使求导结果为0时的分量qif的结果作为优化后的分量qif,根据优化后的分量qif更新预测模型,并继续对分量qif+1进行优化,直至商品向量qi的所有分量优化完毕;

当用户特征向量qi的所有分量优化完毕后,继续对qi+1进行优化,直至所有商品向量优化完毕。

需要说明的是,本发明实施例在训练预测模型时,先对用户特征向量进行优化,当所有用户特征向量优化完毕后,再对商品特征向量进行优化。

传统的eals方法时间复杂度为o((m+n)k2+|r|k),m、n、k分别代表用户总数、商品总数、特征向量维度,|r|表示购买集合的大小;加入关注行为影响项后,仍然按传统eals方法需要额外的o(|v|nk)时间代价,额外的时间开销远大于原先的开销。然而这部分含有大量重复计算,可以通过下述方式进行加速。

以用户特征向量pu中的第f维分量puf为例,对预测模型求导,可得;

项的计算:

上式中表示除去第f维特征向量后的预测分数。对于一次完整的迭代(更新所有用户的用户特征向量、商品特征向量一次),直接计算上式的复杂度为o(mnk2)。

变换为:由于项对于所有用户均相同,而项对于不同维度仅需要进行一次计算,因此,可以在求导前预先计算出项,这样就在求导时即可重复使用该项的结果,每次迭代之前计算k项对应的时间复杂度为:o(nk),大幅降低的计算的复杂性。

项对于一个用户而言,直接计算所需的时间复杂度为o(nk2),将变换为:不同维度之间pu*qit只需要计算一次,仅有ru项不同,可以在o(k2+|ru|k)时间内计算出该项。因此,项的时间复杂度可由o(mnk2)降低至o((m+n)k2+|r|k)。

对于项的计算:

显然,正则项对算法的时间复杂度没有造成挑战,仅产生o((m+n)k)的总时间开销。

对于项的计算:

上式中(e)项为(f)项为由于(b)、(d)、(f)三项均涉及对范围的计算,需要遍历(v,j),因此产生了o(|v|n)的时间开销。

以(d)项为例说明加速项的计算的方法。

首先将(d)项拆分为如下形式,

即原始的(d)项从遍历(v,j)被拆分为独立的遍历v与遍历j两项之积。其中,遍历v的时间复杂度为o(|vu|),而遍历j等效于遍历所有商品(因为购买和点击行为均是稀疏的),时间复杂度为o(n),更进一步,遍历j项可进行如下操作:

由上式注意到两项与用户无关,在更新所有用户前只需要计算一次,因此,(d)项最终只需要o(k+|rvu|)的时间开销,进而,项时间开销从o(|v|n)降低至o((m+n)k2+|v|k)。

根据本发明实施例的另一个方面,本发明实施例还提供一种商品推荐装置,参见图2,图2示出了根据本发明实施例提供的商品推荐装置的功能框图;该装置用于前述各实施例的根据用户已购买和已关注的商品推荐商品的方法。因此,在前述各实施例中的商品推荐方法中的描述和定义,可以用于本发明实施例中各执行模块的理解。

如图2所示,该装置包括:

购物数据获取模块201,用于获取用户群的购物数据,购物数据包括用户群中每个用户的编号、用户购买商品的编号、关注商品的编号以及用户对商品的真实喜好的标签,标签用于表征用户是否购买过该商品;

训练模块202,用于利用购物数据训练基于eals算法构建的预测模型,获得使预测模型达到最优解时的每个用户的用户特征向量以及每个商品的商品特征向量;用户特征向量与商品特征向量的内积用于表征用户对商品的预测喜好;

推荐模块203,用于对于用户群中的任意一个用户,根据该用户的用户特征向量与各商品特征向量的内积,获得该用户对所有商品的预测喜好,根据该用户对所有商品的预测喜好获得该用户的商品推荐列表。

本发明实施例的商品推荐装置,在eals算法中加入用户关注的商品信息的影响,使得构建的预测模型能够更真实的反应用户对商品的喜好程度,从而达到更好的推荐效果。

图3示出了根据本发明实施例提供的电子设备的框图,如图3所示,处理器(processor)301、存储器(memory)302和总线303;

其中,处理器301及存储器302分别通过总线303完成相互间的通信;处理器301用于调用存储器302中的程序指令,以执行上述实施例所提供的控制方法,例如包括:获取用户群的购物数据,购物数据包括用户群中每个用户的编号、用户购买商品的编号、关注商品的编号以及用户对商品的真实喜好的标签,标签用于表征用户是否购买过该商品;利用购物数据训练基于eals算法构建的预测模型,获得使预测模型达到最优解时的每个用户的用户特征向量以及每个商品的商品特征向量;用户特征向量与商品特征向量的内积用于表征用户对商品的预测喜好;对于用户群中的任意一个用户,根据该用户的用户特征向量与各商品特征向量的内积,获得该用户对所有商品的预测喜好,根据该用户对所有商品的预测喜好获得该用户的商品推荐列表。

本发明实施例提供一种非暂态计算机可读存储介质,该非暂态计算机可读存储介质存储计算机指令,该计算机指令使计算机执行上述实施例所提供的控制方法,例如包括:获取用户群的购物数据,购物数据包括用户群中每个用户的编号、用户购买商品的编号、关注商品的编号以及用户对商品的真实喜好的标签,标签用于表征用户是否购买过该商品;利用购物数据训练基于eals算法构建的预测模型,获得使预测模型达到最优解时的每个用户的用户特征向量以及每个商品的商品特征向量;用户特征向量与商品特征向量的内积用于表征用户对商品的预测喜好;对于用户群中的任意一个用户,根据该用户的用户特征向量与各商品特征向量的内积,获得该用户对所有商品的预测喜好,根据该用户对所有商品的预测喜好获得该用户的商品推荐列表。

以上所描述的装置实施例仅仅是示意性的,其中作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。

通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如rom/ram、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行各个实施例或者实施例的某些部分的方法。

最后应说明的是:以上实施例仅用以说明本发明实施例的技术方案,而非对其限制;尽管参照前述实施例对本发明实施例进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明实施例各实施例技术方案的精神和范围。

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