产品推荐的方法和装置转让专利

申请号 : CN202010482231.6

文献号 : CN111369306B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 郭飞王蕾

申请人 : 北京搜狐新媒体信息技术有限公司

摘要 :

本申请提供一种产品推荐的方法和装置,获得多个候选用户的真实行为序列;利用真实行为序列的产品对应的节点和连接节点的边构建产品拓扑图;边的权重根据边连接的产品的产品相似度确定;对产品拓扑图执行随机游走,得到每个候选用户的拓扑行为序列,并拼接拓扑行为序列和真实行为序列,得到候选用户的补充行为序列;候选用户的拓扑行为序列包括执行随机游走时访问的每个节点对应的产品;利用候选用户的补充行为序列计算得到候选用户之间的用户相似度,候选用户间的用户相似度用于进行产品推荐。通过拼接随机游走得到的拓扑行为序列和真实行为序列,本方案能够增加候选用户的行为序列的长度和共现次数,从而提高产品推荐的准确性。

权利要求 :

1.一种产品推荐的方法,其特征在于,包括:

获得多个候选用户的真实行为序列;

构建由多个节点和多条连接所述节点的边组成的产品拓扑图;其中,每一个所述真实行为序列所记录的每一个产品,均对应于所述产品拓扑图的一个节点,每一条所述边均对应一个权重,所述权重根据对应的边连接的两个节点对应的产品的产品相似度确定;

针对每一个所述候选用户,以所述候选用户的真实行为序列记录的任意一个产品所对应的节点作为起始节点执行一次随机游走,得到所述候选用户的拓扑行为序列;其中,所述候选用户的拓扑行为序列包括执行所述候选用户对应的随机游走时被访问的每一个节点所对应的产品;

针对每一个所述候选用户,拼接所述候选用户的真实行为序列和所述候选用户的拓扑行为序列,得到所述候选用户的补充行为序列;

针对每两个候选用户,利用所述两个候选用户的补充行为序列计算得到所述两个候选用户的用户相似度;其中,所述候选用户之间的用户相似度作为对任意一个所述候选用户进行产品推荐的依据。

2.根据权利要求1所述的方法,其特征在于,所述以所述候选用户的真实行为序列记录的任意一个产品所对应的节点作为起始节点执行一次随机游走,得到所述候选用户的拓扑行为序列,包括:将所述候选用户的真实行为序列中所述候选用户消费的最后一个产品对应的节点确定为当前节点;

针对所述当前节点的每一个邻居节点,根据连接所述邻居节点和所述当前节点的边的权重,以及预设的游走策略,计算得到所述邻居节点的转移概率;其中,所述当前节点的邻居节点,指代,通过边与所述当前节点直接连接的节点;

根据所述当前节点的每一个所述邻居节点的转移概率,从所述当前节点的所有所述邻居节点中随机选择一个所述邻居节点,并访问所述邻居节点;

将被访问的节点确定为当前节点,并返回执行所述针对所述当前节点的每一个邻居节点,根据连接所述邻居节点和所述当前节点的边的权重,以及预设的游走策略,计算得到所述邻居节点的转移概率,直至被访问的节点的数量大于或等于预设的节点数量为止;

组合每一个被访问的节点对应的产品,得到所述候选用户的拓扑行为序列。

3.根据权利要求1所述的方法,其特征在于,根据所述候选用户之间的用户相似度对任意一个所述候选用户进行产品推荐的方法包括:选择多个目标候选用户未消费的产品作为备选产品;其中,所述目标候选用户是预先指定的任意一个所述候选用户;

针对每一个所述备选产品,利用所述目标候选用户和每一个已消费所述备选产品的候选用户之间的用户相似度计算得到所述备选产品的推荐分值;

向所述目标候选用户推荐对应的推荐分值大于预设的推荐阈值的备选产品。

4.根据权利要求1所述的方法,其特征在于,所述构建由多个节点和多条连接所述节点的边组成的产品拓扑图,包括:针对每一个所述真实行为序列所记录的每一个产品,创建所述产品对应的节点;

针对每两个所述节点,利用所述两个节点对应的产品的产品属性,计算所述两个节点对应的产品的产品相似度;

在每两个满足连接条件的节点之间创建连接所述节点的边并设定所述边的权重,得到产品拓扑图;其中,所述连接条件是,两个节点对应的产品的产品相似度大于预设的连接阈值。

5.根据权利要求1所述的方法,其特征在于,所述利用两个候选用户的补充行为序列计算得到所述两个候选用户的用户相似度,包括:用两个候选用户的补充行为序列的共现次数,除以所述两个候选用户的补充行为序列所包含的产品的总数,得到所述两个候选用户的用户相似度。

6.一种产品推荐的装置,其特征在于,包括:

获得单元,用于获得多个候选用户的真实行为序列;

构建单元,用于构建由多个节点和多条连接所述节点的边组成的产品拓扑图;其中,每一个所述真实行为序列所记录的每一个产品,均对应于所述产品拓扑图的一个节点,每一条所述边均对应一个权重,所述权重根据对应的边连接的两个节点对应的产品的产品相似度确定;

游走单元,用于针对每一个所述候选用户,以所述候选用户的真实行为序列记录的任意一个产品所对应的节点作为起始节点执行一次随机游走,得到所述候选用户的拓扑行为序列;其中,所述候选用户的拓扑行为序列包括执行所述候选用户对应的随机游走时被访问的每一个节点所对应的产品;

拼接单元,用于针对每一个所述候选用户,拼接所述候选用户的真实行为序列和所述候选用户的拓扑行为序列,得到所述候选用户的补充行为序列;

计算单元,用于针对每两个候选用户,利用所述两个候选用户的补充行为序列计算得到所述两个候选用户的用户相似度;

推荐单元,用于根据所述候选用户之间的用户相似度对任意一个所述候选用户进行产品推荐。

7.根据权利要求6所述的装置,其特征在于,所述游走单元以所述候选用户的真实行为序列记录的任意一个产品所对应的节点作为起始节点执行一次随机游走,得到所述候选用户的拓扑行为序列时,具体用于:将所述候选用户的真实行为序列中所述候选用户消费的最后一个产品对应的节点确定为当前节点;

针对所述当前节点的每一个邻居节点,根据连接所述邻居节点和所述当前节点的边的权重,以及预设的游走策略,计算得到所述邻居节点的转移概率;其中,所述当前节点的邻居节点,指代,通过边与所述当前节点直接连接的节点;

根据所述当前节点的每一个所述邻居节点的转移概率,从所述当前节点的所有所述邻居节点中随机选择一个所述邻居节点,并访问所述邻居节点;

将被访问的节点确定为当前节点,并返回执行所述针对所述当前节点的每一个邻居节点,根据连接所述邻居节点和所述当前节点的边的权重,以及预设的游走策略,计算得到所述邻居节点的转移概率,直至被访问的节点的数量大于或等于预设的节点数量为止;

组合每一个被访问的节点对应的产品,得到所述候选用户的拓扑行为序列。

8.根据权利要求6所述的装置,其特征在于,所述推荐单元根据所述候选用户之间的用户相似度对任意一个所述候选用户进行产品推荐时,具体用于:选择多个目标候选用户未消费的产品作为备选产品;其中,所述目标候选用户是预先指定的任意一个所述候选用户;

针对每一个所述备选产品,利用所述目标候选用户和每一个已消费所述备选产品的候选用户之间的用户相似度计算得到所述备选产品的推荐分值;

向所述目标候选用户推荐对应的推荐分值大于预设的推荐阈值的备选产品。

9.根据权利要求6所述的装置,其特征在于,所述构建单元构建由多个节点和多条连接所述节点的边组成的产品拓扑图时,具体用于:针对每一个所述真实行为序列所记录的每一个产品,创建所述产品对应的节点;

针对每两个所述节点,利用所述两个节点对应的产品的产品属性,计算所述两个节点对应的产品的产品相似度;

在每两个满足连接条件的节点之间创建连接所述节点的边并设定所述边的权重,得到产品拓扑图;其中,所述连接条件是,两个节点对应的产品的产品相似度大于预设的连接阈值。

10.根据权利要求6所述的装置,其特征在于,所述计算单元利用两个候选用户的补充行为序列计算得到所述两个候选用户的用户相似度时,具体用于:用两个候选用户的补充行为序列的共现次数,除以所述两个候选用户的补充行为序列所包含的产品的总数,得到所述两个候选用户的用户相似度。

说明书 :

产品推荐的方法和装置

技术领域

[0001] 本发明涉及数据挖掘技术领域,特别涉及一种产品推荐的方法和装置。

背景技术

[0002] 随着互联网的普及,越来越多的用户开始使用网络购物平台(简称网购平台),用户可以在网购平台提供的网页上浏览产品(包括虚拟产品和实体产品)信息,然后挑选并消费其中的某些产品。
[0003] 为了方便挑选产品,网购平台一般会提供产品推荐功能,即采用推荐算法预测用户偏好的产品,在用户访问网购平台时推荐偏好的产品。
[0004] 协同过滤算法就是一类现有的推荐算法,其原理是,针对每两个用户,获得这两个用户的真实行为序列(真实行为序列用于记录用户一定时间段内消费的产品),基于这两个真实行为序列的共现次数(指代两个真实行为序列出现同一产品的次数)确定这两个用户的用户相似度,然后将一部分用户消费的产品推荐给用户相似度较高的其他用户。
[0005] 协同过滤算法的准确度,依赖于用于计算的真实行为序列的长度(指代真实行为序列记录的产品的数量),对于多个真实行为序列较短的用户,协同过滤算法的计算得到的这些用户之间的用户相似度的准确度较低,进而无法进行准确的产品推荐。

发明内容

[0006] 基于上述现有技术的缺点,本申请提供一种产品推荐方法和装置,以提供一种适用于消费频率较低的用户的产品推荐方案。
[0007] 本申请提供一种产品推荐方法,包括:
[0008] 获得多个候选用户的真实行为序列;
[0009] 构建由多个节点和多条连接所述节点的边组成的产品拓扑图;其中,每一个所述真实行为序列所记录的每一个产品,均对应于所述产品拓扑图的一个节点,每一条所述边均对应一个权重,所述权重根据对应的边连接的两个节点对应的产品的产品相似度确定;
[0010] 针对每一个所述候选用户,基于所述候选用户的真实行为序列对所述产品拓扑图执行随机游走,得到所述候选用户的拓扑行为序列;其中,所述候选用户的拓扑行为序列包括执行所述候选用户对应的随机游走时被访问的每一个节点所对应的产品;
[0011] 针对每一个所述候选用户,拼接所述候选用户的真实行为序列和所述候选用户的拓扑行为序列,得到所述候选用户的补充行为序列;
[0012] 针对每两个所述候选用户,利用所述两个候选用户的补充行为序列计算得到所述两个候选用户的用户相似度;其中,所述候选用户之间的用户相似度作为对任意一个所述候选用户进行产品推荐的依据。
[0013] 可选的,所述基于所述候选用户的真实行为序列对所述产品拓扑图执行随机游走,得到所述候选用户的拓扑行为序列,包括:
[0014] 将所述候选用户的真实行为序列中所述候选用户消费的最后一个产品对应的节点确定为当前节点;
[0015] 针对所述当前节点的每一个邻居节点,根据连接所述邻居节点和所述当前节点的边的权重,以及预设的游走策略,计算得到所述邻居节点的转移概率;其中,所述当前节点的邻居节点,指代,通过边与所述当前节点直接连接的节点;
[0016] 根据所述当前节点的每一个所述邻居节点的转移概率,从所述当前节点的所有所述邻居节点中随机选择一个所述邻居节点,并访问所述邻居节点;
[0017] 将被访问的节点确定为当前节点,并返回执行所述针对所述当前节点的每一个邻居节点,根据连接所述邻居节点和所述当前节点的边的权重,以及预设的游走策略,计算得到所述邻居节点的转移概率,直至被访问的节点的数量大于或等于预设的节点数量为止;
[0018] 组合每一个被访问的节点对应的产品,得到所述候选用户的拓扑行为序列。
[0019] 可选的,根据所述候选用户之间的用户相似度对任意一个所述候选用户进行产品推荐的方法包括:
[0020] 选择多个目标候选用户未消费的产品作为备选产品;其中,所述目标候选用户是预先指定的任意一个所述候选用户;
[0021] 针对每一个所述备选产品,利用所述目标候选用户和每一个已消费所述备选产品的候选用户之间的用户相似度计算得到所述备选产品的推荐分值;
[0022] 向所述目标候选用户推荐对应的推荐分值大于预设的推荐阈值的备选产品。
[0023] 可选的,所述构建由多个节点和多条连接所述节点的边组成的产品拓扑图,包括:
[0024] 针对每一个所述真实行为序列所记录的每一个产品,创建所述产品对应的节点;
[0025] 针对每两个所述节点,利用所述两个节点对应的产品的产品属性,计算所述两个节点对应的产品的产品相似度;
[0026] 在每两个满足连接条件的节点之间创建连接所述节点的边并设定所述边的权重,得到产品拓扑图;其中,所述连接条件是,两个节点对应的产品的产品相似度大于预设的连接阈值。
[0027] 可选的,所述利用所述两个候选用户的补充行为序列计算得到所述两个候选用户的用户相似度,包括:
[0028] 用所述两个候选用户的补充行为序列的共现次数,除以所述两个候选用户的补充行为序列所包含的产品的总数,得到所述两个候选用户的用户相似度。
[0029] 本申请还提供一种产品推荐的装置,包括:
[0030] 获得单元,用于获得多个候选用户的真实行为序列;
[0031] 构建单元,用于构建由多个节点和多条连接所述节点的边组成的产品拓扑图;其中,每一个所述真实行为序列所记录的每一个产品,均对应于所述产品拓扑图的一个节点,每一条所述边均对应一个权重,所述权重根据对应的边连接的两个节点对应的产品的产品相似度确定;
[0032] 游走单元,用于针对每一个所述候选用户,基于所述候选用户的真实行为序列对所述产品拓扑图执行随机游走,得到所述候选用户的拓扑行为序列;其中,所述候选用户的拓扑行为序列包括执行所述候选用户对应的随机游走时被访问的每一个节点所对应的产品;
[0033] 拼接单元,用于针对每一个所述候选用户,拼接所述候选用户的真实行为序列和所述候选用户的拓扑行为序列,得到所述候选用户的补充行为序列;
[0034] 计算单元,用于针对每两个所述候选用户,利用所述两个候选用户的补充行为序列计算得到所述两个候选用户的用户相似度;
[0035] 推荐单元,用于根据所述候选用户之间的用户相似度对任意一个所述候选用户进行产品推荐。
[0036] 可选的,所述游走单元基于所述候选用户的真实行为序列对所述产品拓扑图执行随机游走,得到所述候选用户的拓扑行为序列时,具体用于:
[0037] 将所述候选用户的真实行为序列中所述候选用户消费的最后一个产品对应的节点确定为当前节点;
[0038] 针对所述当前节点的每一个邻居节点,根据连接所述邻居节点和所述当前节点的边的权重,以及预设的游走策略,计算得到所述邻居节点的转移概率;其中,所述当前节点的邻居节点,指代,通过边与所述当前节点直接连接的节点;
[0039] 根据所述当前节点的每一个所述邻居节点的转移概率,从所述当前节点的所有所述邻居节点中随机选择一个所述邻居节点,并访问所述邻居节点;
[0040] 将被访问的节点确定为当前节点,并返回执行所述针对所述当前节点的每一个邻居节点,根据连接所述邻居节点和所述当前节点的边的权重,以及预设的游走策略,计算得到所述邻居节点的转移概率,直至被访问的节点的数量大于或等于预设的节点数量为止;
[0041] 组合每一个被访问的节点对应的产品,得到所述候选用户的拓扑行为序列。
[0042] 可选的,所述推荐单元根据所述候选用户之间的用户相似度对任意一个所述候选用户进行产品推荐时,具体用于:
[0043] 选择多个目标候选用户未消费的产品作为备选产品;其中,所述目标候选用户是预先指定的任意一个所述候选用户;
[0044] 针对每一个所述备选产品,利用所述目标候选用户和每一个已消费所述备选产品的候选用户之间的用户相似度计算得到所述备选产品的推荐分值;
[0045] 向所述目标候选用户推荐对应的推荐分值大于预设的推荐阈值的备选产品。
[0046] 可选的,所述构建单元构建由多个节点和多条连接所述节点的边组成的产品拓扑图时,具体用于:
[0047] 针对每一个所述真实行为序列所记录的每一个产品,创建所述产品对应的节点;
[0048] 针对每两个所述节点,利用所述两个节点对应的产品的产品属性,计算所述两个节点对应的产品的产品相似度;
[0049] 在每两个满足连接条件的节点之间创建连接所述节点的边并设定所述边的权重,得到产品拓扑图;其中,所述连接条件是,两个节点对应的产品的产品相似度大于预设的连接阈值。
[0050] 可选的,所述计算单元利用所述两个候选用户的补充行为序列计算得到所述两个候选用户的用户相似度时,具体用于:
[0051] 用所述两个候选用户的补充行为序列的共现次数,除以所述两个候选用户的补充行为序列所包含的产品的总数,得到所述两个候选用户的用户相似度。
[0052] 本申请提供一种产品推荐的方法和装置,获得多个候选用户的真实行为序列;利用真实行为序列的产品对应的节点和连接节点的边构建产品拓扑图;边的权重根据边连接的产品的产品相似度确定;对产品拓扑图执行随机游走,得到每个候选用户的拓扑行为序列,并拼接拓扑行为序列和真实行为序列,得到候选用户的补充行为序列;候选用户的拓扑行为序列包括执行随机游走时访问的每个节点对应的产品;利用候选用户的补充行为序列计算得到候选用户之间的用户相似度,候选用户间的用户相似度用于进行产品推荐。通过拼接随机游走得到的拓扑行为序列和真实行为序列,本方案能够增加候选用户的行为序列的长度和共现次数,从而提高产品推荐的准确性。

附图说明

[0053] 为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
[0054] 图1为本申请实施例提供的一种计算用户相似度的方法的流程图;
[0055] 图2为本申请实施例提供的一种产品拓扑图的示意图;
[0056] 图3为本申请实施例提供的一种根据用户相似度向用户推荐产品的方法的流程图;
[0057] 图4为本申请实施例提供的一种对产品拓扑图执行随机游走的方法的流程图;
[0058] 图5为本申请实施例提供的一种产品推荐的装置的结构示意图;
[0059] 图6为本申请实施例提供的一种电子设备的结构示意图。

具体实施方式

[0060] 下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
[0061] 产品推荐是目前各大网购平台均具备的功能。网购平台可以利用各种推荐算法对用户进行分析,从而预测出用户喜好的产品(或者说,用户的消费意向较强,即有较大可能会消费的产品),然后在用户访问网购平台的时候向用户推荐对应的产品。
[0062] 如背景技术所述,协同过滤算法就是一类常用的推荐算法,一种基于协同过滤算法的产品推荐方案是,收集若干用户的真实行为序列,每个使用过网购平台的用户都对应有一个真实行为序列,一个用户的真实行为序列记录有该用户过去访问这个网购平台时分别在这个网购平台消费了哪些产品,然后对每两个用户,基于这两个用户的真实行为序列的共现次数,确定这两个用户的用户相似度。
[0063] 在此基础上,对于任意一款产品A,例如,某种型号的智能手机,若一部分用户已经在网购平台消费了产品A(即通过网购平台购买了该型号的智能手机),则对于未消费产品A的用户群,若其中某个用户和这部分已消费的用户之间具有较高的用户相似度,那么网购平台可以认为该用户有较大可能会购买产品A,于是网购平台可以在该用户访问网购平台(可以通过电脑网页,或者移动终端设备的客户端程序访问)时向该用户推荐产品A。
[0064] 两个行为序列的共现次数,指代这两个行为序列中出现同一产品的次数。例如,假设现在有两个用户的行为序列,第一个用户的行为序列包括产品A,B,C,D。第二个用户的行为序列包括产品F,C,E,A。这两个用户的行为序列的共现次数为2,一次是两个行为序列均出现产品A,一次是两个行为序列均出现产品C。
[0065] 换言之,若将两个用户的行为序列当做这两个用户已消费的产品的集合,则共现次数也可以理解为,这两个集合的交集中包含的产品的数量。
[0066] 现有的协同过滤算法存在以下问题:
[0067] 对于一部分真实行为序列较短的用户(例如,消费频率较低,或者近期才注册网购平台的新用户的真实行为序列一般都较短)而言,这些用户的真实行为序列并不能准确的反映出这些用户的消费倾向,相对的,仅仅根据这些用户的真实行为序列计算这些用户之间的用户相似度,得到的计算结果一般准确度较低,即计算得到的用户相似度并不能真实的反映两个用户的消费倾向的相似程度,进而导致后续的产品推荐的准确度较低。
[0068] 针对上述现有的协同过滤算法存在的问题,本申请提出一种基于现有的协同过滤算法改进得到的产品推荐方法,通过对产品拓扑图执行随机游走的方式,扩充用户的行为序列,然后在依据扩充得到的补充行为序列计算多个用户之间的用户相似度,从而为真实行为序列较短的用户提供一种准确的产品推荐方案。
[0069] 如前文所述,产品推荐主要包括两个环节,第一个环节是计算多个用户之间的用户相似度,第二个环节是基于用户相似度确定向特定用户推荐的产品。
[0070] 下面首先说明本申请提供的产品推荐方法中计算用户相似度的方法,请参考图1,该方法包括以下步骤:
[0071] S101、获得多个候选用户的真实行为序列。
[0072] 每一个用户均对应有一个真实行为序列。一个用户的真实行为序列,用于记录该用户在过去的一个指定的时间段内在网购平台消费的产品,时间段的长短可以根据实际需要设定。例如,可以设定以最近一年内用户消费的产品组成用户的真实行为序列,或者设定以最近90天内用户消费的产品组成用户的真实行为序列。
[0073] 候选用户,指代预先筛选得到的,对应的真实行为序列记录的产品数量小于预设的产品数量阈值的用户。例如,设定以最近90天内用户消费的产品组成用户的真实行为序列时,可以设定产品数量阈值等于10。换言之,若一个用户在最近90天内累计消费的产品的数量小于10,则将该用户确定为候选用户。
[0074] 用户的真实行为序列,可以通过分析网购平台在指定时间段内的历史交易数据得到。结合上述例子,可以获取网购平台在最近90天内的历史交易数据,针对任意一个用户(记为用户A),检测出其中用户A完成支付的每一笔交易,在从检测得到的若干笔交易中删除用户A完成支付后取消或者发起退款的交易,剩下的就是用户A在最近90天内在网购平台真实发生的交易,将每一笔真实发生的交易中用户A购买的产品组合,就可以得到用户A在最近90天的真实行为序列。
[0075] 各个候选用户的真实行为序列的长度可以相等,也可以不相等。行为序列的长度指代这个行为序列记录的产品的数量,例如,若一个行为序列记录有10件产品,则这个行为序列的长度等于10。
[0076] S102、构建由多个节点和多条连接节点的边组成的产品拓扑图。
[0077] 每一个真实行为序列均记录有多个产品,对应的,步骤S101中获得的所有真实行为序列所记录的所有产品,可以构成一个产品集合,这个产品集合中的每一个产品,均对应于产品拓扑图中的一个节点。
[0078] 可选的,多个相同的产品可以用同一个节点表示。例如,假设三个候选用户的真实行为序列中均出现了产品X,构建的产品拓扑图中可以只创建一个产品X对应的节点。
[0079] 产品拓扑图包括多条边,每一条边均用于连接产品拓扑图中的两个节点,并且每一条边均对应有一个权重。对于任意一条边,这条边对应的权重由这条边所连接的两个节点对应的产品对应的产品相似度决定,可选的,可以直接将一条边所连接的两个节点对应的产品的产品相似度设定为这条边的权重。
[0080] 例如,若一条边连接的两个节点分别对应于产品X和产品Y,产品X和产品Y之间的相似度为0.8,那么可以设定这条边的权重等于0.8。
[0081] 其中,两个产品的产品相似度,可以通过分析这两个产品的各项产品属性确定。产品属性可以包括种类(如电子产品,零食,化妆品,书籍等),价格,品牌,进一步的,对于特定种类的产品还可以进一步细分出其他产品属性,例如,电子产品的产品属性可以包括电子产品的性能参数,零食的产品属性可以包括口味,包装,食材等。
[0082] 具体的,可以针对每一个产品,基于该产品的产品属性生成用于表示该产品的产品向量,然后针对每两个产品,计算这两个产品的产品向量的余弦相似度,将计算结果确定为这两个产品的产品相似度。
[0083] 综上所述,步骤S102的具体执行过程可以包括:
[0084] 遍历步骤S101中获得的每一个真实行为序列所记录的每一个产品,创建这个产品对应的节点。
[0085] 其中,若遍历到某个产品时,已经创建了这个产品的节点,则不需要重复创建。
[0086] 针对每两个节点,利用两个节点对应的两个产品的产品属性,计算两个节点对应的两个产品之间的产品相似度。
[0087] 最后,针对每两个节点,判断这两个节点是否满足预设的连接条件,若这两个节点满足连接条件,则创建一条边连接这两个节点,并且,将这两个节点对应的两个产品之间的产品相似度设定为这条边的权重,反之,若这两个节点不满足连接条件,则不创建连接这两个节点的边。
[0088] 在对每两个节点均执行上述操作后,就可以得到产品拓扑图。
[0089] 一种可选的连接条件可以是,两个节点对应的两个产品的产品相似度大于预设的连接阈值。例如,预设的连接阈值为0.5,节点1对应产品X,节点2对应产品Y,若产品X和产品Y之间的产品相似度小于或等于0.5,则确定节点1和节点2不满足连接条件,反之,若产品X和产品Y的产品相似度大于0.5,则确定节点1和节点2满足连接条件。
[0090] 当然,在本申请的其他实施例中,也可以不设定上述节点之间的连接条件,而是对于每两个节点均创建连接这两个节点的边,并设定每条边对应的权重。
[0091] 为了方便理解,给出一个具体的例子:
[0092] 假设有3个候选用户,对应有3个真实行为序列,每个真实行为序列均记录有4个产品,其中第一个候选用户的真实行为序列记录的产品是A,B,C,D,第二个候选用户的真实行为序列记录的产品是E,F,G,H,第三个候选用户的真实行为序列记录的产品是I,J,K,L,基于这三个真实行为序列构建的产品拓扑图可以用图2表示,图2中的每个圆圈表示一个节点,圈中的数字表示节点的标识,图2中有12个节点,记为节点1至节点12,节点1至节点12依次对应于产品A,B,C,D,E,F,G,H,I,J,K,L。每两个圆圈之间的实线(直线或曲线)表现连接这两个节点的边,实线一端的小数表示这条边的权重。
[0093] S103、针对每一个候选用户,对产品拓扑图执行一次随机游走,得到这个候选用户的拓扑行为序列。
[0094] 其中,候选用户的拓扑行为序列包括执行候选用户对应的随机游走时被访问的每一个节点所对应的产品。
[0095] 随机游走是现有的一种处理拓扑图的方法。针对一个由若干个节点和边组成的拓扑图,每次对这个拓扑图执行一次随机游走,就可以顺序访问这个拓扑图中被边连接起来的N个节点,这N个被访问的节点的组合,就是这次随机游走得到的一个节点序列。其中,N是执行本次随机游走之前设定的正整数。
[0096] 具体到本申请中,每对产品拓扑图执行一次随机游走,就可以将这一次随机游走的过程中被访问的各个节点对应的产品组合,得到这一次随机游走所对应的拓扑行为序列。
[0097] 每一个候选用户均应当有一个对应的拓扑行为序列,因此,每有一个候选用户,就需要对产品拓扑图执行这个候选用户对应的一次随机游走,得到这个候选用户的拓扑行为序列。
[0098] 为了使获得的拓扑行为序列尽量接近候选用户真实的消费倾向,在执行某个候选用户对应的随机游走时,可以将这个候选用户的真实行为序列中的某个产品所对应的节点作为随机游走的起点。
[0099] 对于任意一个候选用户,对产品拓扑图执行随机游走得到的这个候选用户的拓扑行为序列,可以认为是基于各个产品之间的产品相似度预测的,该候选用户未来一段时间内可能会消费的产品组成的行为序列。换言之,候选用户的拓扑行为序列所记录的产品,可以认为是根据各个产品之间的产品相似度预测的,该候选用户未来一段时间内可能会消费的产品。
[0100] 本申请中,每次执行随机游走时累计需要访问的目标节点数量N可以根据需要的补充行为序列的长度,以及本次随机游走所对应的候选用户的真实行为序列的长度决定。具体的,若设定每个候选用户的补充行为序列的长度均为P,当前需要执行对应的随机游走的这个候选用户的真实行为序列的长度为Q,P和Q均为正整数,且P大于Q,则本次执行随机游走需要访问的目标节点数量N等于P-Q。
[0101] S104、针对每一个候选用户,拼接候选用户的真实行为序列和候选用户的拓扑行为序列,得到候选用户的补充行为序列。
[0102] 步骤S104所述的拼接,可以理解为,将候选用户的拓扑行为序列添加至候选用户的真实行为序列之后,由此得到这个候选用户的补充行为序列。
[0103] 结合步骤S104所述的例子,假设随机游走得到的第一个候选用户的拓扑行为序列是,L,J,F,K,则将第一个候选用户的拓扑行为序列和真实行为序列拼接得到的补充行为序列就是,A,B,C,D,L,J,F,K。
[0104] 候选用户的补充行为序列,可以当做是这个候选用户过去一段时间内实际消费的产品,以及根据产品相似度预测的候选用户未来一段时间可能消费的产品的集合。
[0105] S105、针对每两个候选用户,利用两个候选用户的补充行为序列计算得到两个候选用户的用户相似度。
[0106] 针对任意两个候选用户,根据两个候选用户的补充行为序列计算这两个候选用户之间的用户相似度的方法可以是:
[0107] 首先确定这两个候选用户所对应的两个补充行为序列的共现次数,然后用共现次数除以这两个补充行为序列所包含的产品的总数,得到的结果就是这两个候选用户之间的用户相似度。
[0108] 结合步骤S102所述的例子,假设第二个候选用户的补充行为序列是E,F,G,H,A,D,K,L,那么第一个候选用户的补充行为序列和第二个候选用户的补充行为序列的共现次数就等于5(结合步骤S104,通过观察可以发现两个补充行为序列中均出现了产品A,D,K,L和F),同时两个补充行为序列所包含的产品的总数等于16,因此,第一个候选用户和第二个候选用户的相似度就是5除以16,等于0.3125,也可以写成31.25%。
[0109] 另一种可选的计算两个候选用户之间的用户相似度的方法是,确定两个候选用户的两个补充行为序列的共现次数,统计这两个补充行为序列中出现的不同产品的数量,获得统计结果,其中,即使一个产品在两个补充行为序列中均出现,该产品也只会被计数一次,然后用共现次数除以统计结果,得到的结果作为这两个候选用户之间的用户相似度。
[0110] 结合上述例子,对于第一个候选用户的补充行为序列A,B,C,D,L,J,F,K,和第二个候选用户的补充行为序列E,F,G,H,A,D,K,L,采用上述第二种方法计算时,共现次数仍然为5,统计结果为11,即这两个补充行为序列中出现了11个不同的产品,那么第一个候选用户和第二个候选用户的相似度就等于5除以11,约为0.455。
[0111] 如前文所述,计算得到每两个候选用户之间的用户相似度之后,就可以根据用户相似度向候选用户推荐产品。
[0112] 结合上述实施例,可以发现,本申请提供的用户相似度的计算方法,可以通过对产品拓扑图进行随机游走的方式增加各个候选用户的行为序列的长度,并且,随着行为序列的长度的增加,两个行为序列之间的共现次数也会相应的增加,因此,即使对于两个真实行为序列较短的用户,本方案计算得到的这两个用户之间的用户相似度也能够较为真实的反映这两个用户的实际情况,进而确保后续基于用户相似度实现的产品推荐的准确性。
[0113] 产品推荐的第二个环节是根据用户相似度确定需要向特定的某个或某几个用户推荐的产品,请参考图3,本申请实施例提供的基于用户相似度向用户推荐产品的方法包括以下步骤:
[0114] S301、选择多个目标候选用户未消费的产品作为备选产品。
[0115] 步骤S301所述的目标候选用户,是任意一个指定的,需要向其推荐产品的候选用户。
[0116] 具体的,若前述实施例所述的多个候选用户中,任意一个候选用户通过网页或者客户端访问了网购平台,那么网购平台可以将当前访问的这个候选用户确定为需要进行产品推荐的目标候选用户,然后对这个目标候选用户执行步骤S301。
[0117] 步骤S301的一种可选的实现方式是,针对目标候选用户的真实行为序列中记录的每一个产品,选择多个与该产品之间存在较高的产品相似度(例如,产品相似度大于0.7)的产品,最后将所有选择的产品均确定为上述备选产品。
[0118] 步骤S301的另一种可选的实现方式是,将前述实施例的产品拓扑图中所有节点对应的产品组成一个产品集合,从这个产品集合中删除目标候选用户已经消费过的产品,然后将产品集合剩余的产品均确定为上述备选产品。
[0119] S302、针对每一个备选产品,利用目标候选用户和该备选产品的已消费候选用户之间的用户相似度计算得到该备选产品的推荐分值。
[0120] 对于某个特定的备选产品X,该备选产品的已消费候选用户,是指,前述实施例所确定的多个候选用户中,已经消费过备选产品X的候选用户。
[0121] 例如,若步骤S301确定的多个备选产品中有一个某型号的智能手机,则这个智能手机的已消费候选用户,就是已经购买过该型号的智能手机的候选用户。
[0122] 假设前述产品拓扑图利用30个候选用户的真实行为序列构建得到,针对某个备选产品X,这30个候选用户中有5个候选用户已经消费过备选产品X,依次记为候选用户1至候选用户5。
[0123] 那么,对备选产品X执行步骤S302以计算其推荐分值的一种可选的过程是:
[0124] 分别获得前述实施例计算得到的,目标候选用户和候选用户1的用户相似度,目标候选用户和候选用户2的用户相似度,目标候选用户和候选用户3的用户相似度,目标候选用户和候选用户4的用户相似度,目标候选用户和候选用户5的用户相似度,然后计算这5个用户相似度之和,将计算结果作为备选产品X对目标候选用户的推荐分值。
[0125] 其他备选产品对目标候选用户的推荐分值的计算方法与上述过程类似,只需要确定特定备选产品的每个已消费候选用户和目标候选用户之间的用户相似度,然后将这些用户相似度求和,就得到这个备选产品对目标候选用户的推荐分值。
[0126] S303、向目标候选用户推荐对应的推荐分值大于预设的推荐阈值的备选产品。
[0127] 推荐阈值可以根据实际情况设定。
[0128] 有多种可选的方式可以向目标候选用户推荐产品,具体的,可以在目标候选用户当前浏览的网页的特定区域显示需要推荐的产品的相关信息,包括但不限于:产品的实物图,相关广告,以及购买链接等。
[0129] 请参考图4,图1对应的实施例中的步骤S103,即对产品拓扑图执行随机游走,得到特定候选用户的拓扑行为序列的过程包括:
[0130] S401、将当前候选用户的真实行为序列中当前候选用户消费的最后一个产品对应的节点确定为当前节点。
[0131] 当前候选用户,指代现在需要执行随机游走,得到相应的拓扑行为序列的候选用户。换言之,假设有10个候选用户(依次记为候选用户1至候选用户10),现在需要对产品拓扑图执行随机游走的操作,以获得候选用户5的拓扑行为序列,那么步骤S401所述的当前候选用户,就是候选用户5,步骤S401的执行过程,就是确定候选用户5的真实行为序列中,候选用户5消费的最后一个产品(即消费时间距离当前时刻最接近的产品),然后将这个产品拓扑图中该产品对应的节点确定为当前节点。
[0132] S402、针对当前节点的每一个邻居节点,根据该邻居节点和当前节点之间边的权重,以及预设的游走策略,计算得到该邻居节点的转移概率。
[0133] 一个节点的邻居节点,指代直接通过一条边直接和这个节点连接的其他节点,请参考图2,图2中节点1和节点2通过一条边直接连接,因此节点1就是节点2的邻居节点,同时节点2也是节点1的邻居节点,类似的,图2中节点6和节点11,节点4和节点12等均互为邻居节点,此处不一一列举。
[0134] 为了说明转移概率的计算方法,首先介绍对拓扑图进行随机游走时对节点的以下定义:
[0135] 针对互为邻居节点的两个节点(记为第一节点和第二节点),若某次随机游走的过程中,先将第一节点作为当前节点,紧接着又从第一节点访问第二节点,或者说从第一节点跳转至第二节点,那么,对于第二节点而言,在本次随机游走的过程中,第一节点称为第二节点的前置节点。
[0136] 简而言之,对于拓扑图中互为邻居节点的两个节点,若某次随机游走的过程中从其中一个节点跳转至另一个节点,那么在本次随机游走的过程中,前者可以称为后者的前置节点。
[0137] 步骤S402所述的游走策略可以根据具体的业务需求从深度优先(deep first search,DFS)策略和广度优先(breadth first search,BFS)策略中选择一种。
[0138] 具体的,若需要随机游走后得到的拓扑行为序列中尽可能多的包含相同种类、具有相同属性或者经常被一同购买的产品,则可以选择DFS策略作为本次的游走策略,若需要随机游走后得到的拓扑行为序列中尽可能多的包含各个种类的产品中最受用户喜好的产品、或者各个种类的产品中的最佳凑单商品,则可以选择BFS策略作为本次的游走策略。
[0139] 确定游走策略后,对于任意一个当前节点(记为节点v),假设节点v有N个邻居节点(N为正整数),那么对于当前节点v的任意一个邻居节点i(i的取值范围为大于或等于1,小于或等于N),邻居节点i的转移概率P(i)可以用下述公式(1)计算得到:
[0140]
[0141] 其中,A(v-i)是根据设定的游走策略计算得到的从当前节点v转移到邻居节点i的第一概率,B(v-i)根据当前节点v和邻居节点i之间的边的权重计算得到的从当前节点v转移到邻居节点i的第二概率。
[0142] A(v-i)可以用下述公式(2)计算得到:
[0143]
[0144] 其中,dvi表示邻居节点i到当前节点v的前置节点之间的距离,dvi的取值可以反映邻居节点i和当前节点v的前置节点之间的关系,dvi等于1表示邻居节点i也是当前节点v的前置节点的邻居节点,换言之,表示邻居节点i和当前节点的前置节点直接通过一条边连接;dvi等于0表示邻居节点i就是当前节点v的前置节点;dvi等于2表示邻居节点i不是当前节点v的前置节点的邻居节点,换言之,表示邻居节点i和当前节点v的前置节点之间不存在边。
[0145] 其中,q和p是根据设定的游走策略设定的两个参数,若选择的游走策略是DFS策略,则这两个参数满足条件:p大于max(q, 1),即p大于q和1两者中的最大值,若选择的游走策略是BFS策略,则这两个参数满足条件p小于min(q, 1),即p小于q和1两者中的最小值。这两个参数的具体取值可以根据实际情况设定,本申请对此不作限定。
[0146] B(v-i)可以用下述公式(3)计算得到:
[0147]
[0148] 其中,Mvi表示当前节点v和邻居节点i之间的边的权重,公式(3)的意思是,针对邻居节点i,将当前节点v和当前节点v的每一个邻居节点之间的边的权重相加,得到当前节点v的所有邻居节点的权重和,然后用当前节点v和邻居节点i之间的边的权重除以计算得到的权重和,得到的结果就是从当前节点v转移到邻居节点i的第二概率B(v-i)。
[0149] S403、根据当前节点的每一个邻居节点的转移概率,从当前节点的所有邻居节点中随机选择一个邻居节点,访问被选择的邻居节点。
[0150] 在随机选择的过程中,一个邻居节点的转移概率越大,则这个邻居节点被选择为要访问的邻居节点的概率就越大,反之,一个邻居节点的转移概率越小,则这个邻居节点被选择为要访问的邻居节点的概率就越小。
[0151] S404、将被访问的节点确定为当前节点。
[0152] S405、判断已经访问的节点的数量是否小于预设的目标节点数量。
[0153] 这里的目标节点数量,就是在执行本次随机游走之前确定的,需要获得的拓扑行为序列的长度(也可以理解为获得的拓扑行为序列的产品数量),目标节点数量的确定方法参考前述实施例的步骤S103。
[0154] 需要说明的是,在执行一次随机游走过程时,首次确定的当前节点,即执行步骤S401时所确定的当前节点,是本次随机游走的起始节点,而不属于已经访问的节点。
[0155] 若已经访问的节点的数量小于预设的节点数量,则返回执行步骤S402,若已经访问的节点的数量不小于预设的节点数量,即大于或等于预设的节点数量,则执行步骤S406。
[0156] S406、组合每一个被访问的节点对应的产品,得到当前候选用户的拓扑行为序列。
[0157] S104、针对每一个候选用户,拼接候选用户的真实行为序列和候选用户的拓扑行为序列,得到候选用户的补充行为序列。
[0158] 结合前述实施例中步骤S104所述的例子,参考图2,在对第一个候选用户(真实行为序列为A,B,C,D)执行对应的随机游走时,首先确定第一个候选用户的真实行为序列中最后一个消费的产品D所对应的节点,即图2中的节点4为当前节点。
[0159] 计算节点4的四个邻居节点的转移概率,基于转移概率在四个邻居节点中随机选择,最终选中节点12,于是访问节点12。
[0160] 访问节点12后,当前已访问的节点的数量为1,需要的拓扑行为序列的产品数量为4,换言之预设的目标节点数量等于4,当前已访问的节点的数量小于目标节点数量。
[0161] 因此以节点12作为当前节点,计算节点12的每个邻居节点的转移概率,并从中选中节点10作为要访问的节点,然后访问节点10。
[0162] 以此类推,访问节点10之后重复上述过程,依次访问节点6和节点11,访问节点11之后,已访问的节点的数量为4,等于预设的目标节点数量,于是本次随机游走结束,本次随机游走依次访问了节点12,节点10,节点6和节点11,这四个节点依次对应于产品L,J,F,K,这四个产品就构成第一个候选用户的拓扑行为序列,将拓扑行为序列和第一个候选用户的真实行为序列拼接,就得到上述例子中的第一个候选用户的补充行为序列A,B,C,D,L,J,F,K。
[0163] 结合本申请实施例提供的产品推荐方法,本申请实施例还提供一种产品推荐的装置,请参考图5,该装置包括以下单元:
[0164] 获得单元501,用于获得多个候选用户的真实行为序列。
[0165] 构建单元502,用于构建由多个节点和多条连接节点的边组成的产品拓扑图。
[0166] 其中,每一个真实行为序列所记录的每一个产品,均对应于产品拓扑图的一个节点,每一条边均对应一个权重,权重根据对应的边连接的两个节点对应的产品的产品相似度确定。
[0167] 游走单元503,用于针对每一个候选用户,基于候选用户的真实行为序列对产品拓扑图执行随机游走,得到候选用户的拓扑行为序列。
[0168] 其中,候选用户的拓扑行为序列包括执行候选用户对应的随机游走时被访问的每一个节点所对应的产品。
[0169] 拼接单元504,用于针对每一个候选用户,拼接候选用户的真实行为序列和候选用户的拓扑行为序列,得到候选用户的补充行为序列。
[0170] 计算单元505,用于针对每两个候选用户,利用两个候选用户的补充行为序列计算得到两个候选用户的用户相似度。
[0171] 推荐单元506,用于根据候选用户之间的用户相似度对任意一个候选用户进行产品推荐。
[0172] 游走单元503基于候选用户的真实行为序列对产品拓扑图执行随机游走,得到候选用户的拓扑行为序列时,具体用于:
[0173] 将候选用户的真实行为序列中候选用户消费的最后一个产品对应的节点确定为当前节点;
[0174] 针对当前节点的每一个邻居节点,根据连接邻居节点和当前节点的边的权重,以及预设的游走策略,计算得到邻居节点的转移概率;其中,当前节点的邻居节点,指代,通过边与当前节点直接连接的节点;
[0175] 根据当前节点的每一个邻居节点的转移概率,从当前节点的所有邻居节点中随机选择一个邻居节点,并访问邻居节点;
[0176] 将被访问的节点确定为当前节点,并返回执行针对当前节点的每一个邻居节点,根据连接邻居节点和当前节点的边的权重,以及预设的游走策略,计算得到邻居节点的转移概率,直至被访问的节点的数量大于或等于预设的节点数量为止;
[0177] 组合每一个被访问的节点对应的产品,得到候选用户的拓扑行为序列。
[0178] 推荐单元506根据候选用户之间的用户相似度对任意一个候选用户进行产品推荐时,具体用于:
[0179] 选择多个目标候选用户未消费的产品作为备选产品;其中,目标候选用户是预先指定的任意一个候选用户;
[0180] 针对每一个备选产品,利用目标候选用户和每一个已消费备选产品的候选用户之间的用户相似度计算得到备选产品的推荐分值;
[0181] 向目标候选用户推荐对应的推荐分值大于预设的推荐阈值的备选产品。
[0182] 构建单元502构建由多个节点和多条连接节点的边组成的产品拓扑图时,具体用于:
[0183] 针对每一个真实行为序列所记录的每一个产品,创建产品对应的节点;
[0184] 针对每两个节点,利用两个节点对应的产品的产品属性,计算两个节点对应的产品的产品相似度;
[0185] 在每两个满足连接条件的节点之间创建连接节点的边并设定边的权重,得到产品拓扑图;其中,连接条件是,两个节点对应的产品的产品相似度大于预设的连接阈值。
[0186] 计算单元505利用两个候选用户的补充行为序列计算得到两个候选用户的用户相似度时,具体用于:
[0187] 用两个候选用户的补充行为序列的共现次数,除以两个候选用户的补充行为序列所包含的产品的总数,得到两个候选用户的用户相似度。
[0188] 本申请实施例提供的产品推荐的装置,其具体工作原理可以参考本申请任一实施例提供的产品推荐的方法的相关步骤,此处不再赘述。
[0189] 本申请提供一种产品推荐的装置,获得单元501获得多个候选用户的真实行为序列;构建单元502利用真实行为序列的产品对应的节点和连接节点的边构建产品拓扑图;边的权重根据边连接的产品的产品相似度确定;游走单元503对产品拓扑图执行随机游走,得到每个候选用户的拓扑行为序列,拼接单元504拼接拓扑行为序列和真实行为序列,得到候选用户的补充行为序列;候选用户的拓扑行为序列包括执行随机游走时访问的每个节点对应的产品;计算单元505利用候选用户的补充行为序列计算得到候选用户之间的用户相似度,推荐单元506利用候选用户间的用户相似度进行产品推荐。通过拼接随机游走得到的拓扑行为序列和真实行为序列,本方案能够增加候选用户的行为序列的长度和共现次数,从而提高产品推荐的准确性。
[0190] 本申请实施例还提供一种计算机存储介质,用于存储程序,所述程序被执行时,用于实现本申请任一实施例所提供的产品推荐的方法。
[0191] 本申请实施例还提供一种电子设备,请参考图6,电子设备包括存储器601和处理器602。
[0192] 存储器601用于存储计算机程序,处理器601用于执行计算机程序,具体用于实现本申请任一实施例提供的产品推荐的方法。
[0193] 最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
[0194] 需要注意,本发明中提及的“第一”、“第二”等概念仅用于对不同的装置、模块或单元进行区分,并非用于限定这些装置、模块或单元所执行的功能的顺序或者相互依存关系。
[0195] 专业技术人员能够实现或使用本申请。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本申请的精神或范围的情况下,在其它实施例中实现。因此,本申请将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。