一种相似用户选取方法及装置与流程

文档序号:11323279阅读:188来源:国知局
一种相似用户选取方法及装置与流程

本发明涉及数据分析与处理技术领域,尤其涉及一种相似用户选取方法及装置。



背景技术:

随着人们逐渐步入信息时代,当今世界正处于信息大爆炸的环境下,并且面临着严峻的信息过剩问题。仅在2011年,全球数据量就达到了1.8zb,相当于全世界每个人产生200gb以上的数据。这种增长趋势仍在加速,据保守预计,接下来几年中,数据将始终保持每年50%的增长速度。如今,各大电商、视频播放等平台用户每天都将产生海量的数据,因此如何有效地利用用户产生的数据是当今互联网企业亟需解决的问题。这时候个性化的推荐系统作为数据挖掘的手段便应运而生了。推荐系统指的是互联网站向用户提供产品信息或建议,让用户发现自己潜在的兴趣和需求并帮助用户选择产品。

传统推荐系统的相似用户计算方法主要是基于用户的协同过滤算法(userbasedcollaborativefiltering,usercf)来获得,具体如下:

给定用户u和用户v,令n(u)表示用户u有过正反馈行为的物品集合,n(v)表示用户v有过正反馈行为的物品集合,那么我们可以通过jaccard公式计算用户u和v的相似度;或者通过余弦相似度公式计算用户u和v的相似度。

协同过滤算法将很多时间浪费在用户之间对同样的物品产生过正反馈行为的计算上,事实上很多用户之间并没有对同样的物品产生过正反馈行为。因此,基于协同过滤算法获取相似用户的缺点有:①用户数量很大时计算复杂度高;②大多数用户没有对相同物品产生过正反馈行为,无用计算过多。



技术实现要素:

本发明所要解决的技术问题是,提供一种相似用户选取方法及装置,旨在解决现有技术中相似用户选取的过程,计算复杂且无用计算过多的问题。

本发明实施例第一方面提供了一种相似用户选取方法,所述方法包括:

获取全部用户的内容查看历史数据,所述用户的内容查看历史数据包括用户的全部历史内容及各所述历史内容的查看时间点,所述历史内容为用户查看过的内容;

按照所述查看时间点的先后顺序对所述用户的全部历史内容进行排序,得到所述用户的历史查看内容序列;

对所述用户的历史查看内容序列进行连续词袋模型训练,得到连续词袋模型,以及所述历史内容的内容向量;

根据得到的所述内容向量计算所述用户的兴趣偏好,并根据所述用户的兴趣偏好计算各用户与目标用户的相似度;

选取与所述目标用户相似度最高的预置数量个用户作为所述目标用户的相似用户。

本发明实施例第二方面提供了一种相似用户选取装置,所述装置包括:

获取模块,用于获取全部用户的内容查看历史数据,所述用户的内容查看历史数据包括用户的全部历史内容及各所述历史内容的查看时间点,所述历史内容为用户查看过的内容;

排序模块,用于按照所述查看时间点的先后顺序对所述用户的全部历史内容进行排序,得到所述用户的历史查看内容序列;

训练模块,用于对所述用户的历史查看内容序列进行连续词袋模型训练,得到连续词袋模型,以及所述历史内容的内容向量;

计算模块,用于根据得到的所述内容向量计算所述用户的兴趣偏好,并根据所述用户的兴趣偏好计算各用户与目标用户的相似度;

选取模块,用于选取与所述目标用户相似度最高的预置数量个用户作为所述目标用户的相似用户。

从上述本发明实施例可知,本发明通过获取全部用户的内容查看历史数据,按照查看时间点的先后顺序对用户的全部历史内容进行排序,得到用户的历史查看内容序列,对用户的历史查看内容序列进行连续词袋模型训练,得到连续词袋模型,以及历史内容的内容向量,根据得到的内容向量计算用户的兴趣偏好,并根据用户的兴趣偏好计算各用户与目标用户的相似度,选取与目标用户相似度最高的预置数量个用户作为目标用户的相似用户。与现有技术相比,本发明不需要根据用户对同样物品产生正反馈行为来计算用户之间的相似用户,避免了很多没有对同样物品产生过正反馈行为的用户,无法进行相似用户计算的问题。

附图说明

附图1是本发明第一实施例提供的相似用户选取方法的实现流程示意图;

附图2是本发明第二实施例提供的相似用户选取方法的实现流程示意图;

附图3是本发明第三实施例提供的相似用户选取装置的结构示意图;

附图4是本发明第四实施例提供的相似用户选取装置的结构示意图;

附图5是本发明第二实施例提供的用户的兴趣分布矩阵。

具体实施方式

为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。

请参阅附图1,附图1为本发明第一实施例提供的相似用户选取方法的实现流程示意图,该方法可以应用于终端设备中。如附图1所示,该方法主要包括以下步骤:

s101、获取全部用户的内容查看历史数据;

其中,用户的内容查看历史数据包括用户的全部历史内容及各历史内容的查看时间点。进一步地,该历史内容为用户查看过的内容,即终端设备记录下的用户之前通过该终端设备查看过的内容。该历史内容可以但不限于包括:网络上的视频、音频、新闻或商品。查看的方式包括点击该历史内容的链接。

当历史内容为视频或音乐时,点击视频或音乐的链接将播放该视频或音乐,当历史内容为新闻时,点击新闻链接将呈现出新闻的内容,点击商品链接将呈现出商品信息。历史内容的查看时间点是指查看该历史内容的时刻。

s102、按照查看时间点的先后顺序对用户的全部历史内容进行排序,得到用户的历史查看内容序列;

s103、对用户的历史查看内容序列进行连续词袋模型训练,得到连续词袋模型,以及历史内容的内容向量。

连续词袋模型训练利用了自然语言处理算法,将本用于进行语言处理领域的自然语言处理算法应用到本发明中。自然语言处理算法通过学习训练语料获取词向量和概率密度函数。词向量是多维实数向量,词向量中包含了自然语言中的语义和语法关系,词向量之间的余弦距离代表了词语之间的相似度。每个历史查看内容序列当做自然语言中的一个句子,序列中的每个历史内容当成句子中的一个词。使用语言模型对每个用户的历史查看内容序列进行学习训练后将得到每个历史内容的内容向量,该内容向量等效于自然语言处理中获得的词向量。本实施例中采用的语言模型为连续词袋模型,连续词袋模型是一种能够根据一句话中的前后词语预测或产生出中心词语的词袋模型。以句子“thecatjumpoverthepuddle”为例,连续词袋模型能够以{“the”,“cat”,“over”,“the”,“puddle”}为上下文,预测或产生出中心词语“jump”,这种模型称为连续词袋模型。

s104、根据得到的内容向量计算用户的兴趣偏好,并根据用户的兴趣偏好计算各用户与目标用户的相似度;

s105、选取与目标用户相似度最高的预置数量个用户作为目标用户的相似用户。

可以理解的,此处的预置数量可以根据需要进行设置、更改。

本发明实施例提供的相似用户选取方法,通过获取全部用户的内容查看历史数据,按照查看时间点的先后顺序对用户的全部历史内容进行排序,得到用户的历史查看内容序列,对用户的历史查看内容序列进行连续词袋模型训练,得到连续词袋模型,以及历史内容的内容向量,根据得到的内容向量计算用户的兴趣偏好,并根据用户的兴趣偏好计算各用户与目标用户的相似度,选取与目标用户相似度最高的预置数量个用户作为目标用户的相似用户。与现有技术相比,本发明不需要根据用户对同样物品产生正反馈行为来计算用户之间的相似用户,避免了很多没有对同样物品产生过正反馈行为的用户,无法进行相似用户计算的问题。

请参阅附图2,附图2为本发明第二实施例提供的相似用户选取方法的实现流程示意图,该方法可以应用于终端设备中。如附图2所示,该方法主要包括以下步骤:

s201、获取全部用户的内容查看历史数据;

其中,用户的内容查看历史数据包括用户的全部历史内容及各历史内容的查看时间点。进一步地,该历史内容为用户查看过的内容,即终端设备记录下的用户之前通过该终端设备查看过的内容。该历史内容可以但不限于包括:网络上的视频、音频、新闻或商品。查看的方式包括点击该历史内容的链接。

当历史内容为视频或音乐时,点击视频或音乐的链接将播放该视频或音乐,当历史内容为新闻时,点击新闻链接将呈现出新闻的内容,点击商品链接将呈现出商品信息。历史内容的查看时间点是指查看该历史内容的时刻。

s202、按照查看时间点的先后顺序对用户的全部历史内容进行排序,得到用户的历史查看内容序列;

s203、对用户的历史查看内容序列进行连续词袋模型训练,得到连续词袋模型,以及历史内容的内容向量;

连续词袋模型训练利用了自然语言处理算法,将本用于进行语言处理领域的自然语言处理算法应用到本发明中。自然语言处理算法通过学习训练语料获取词向量和概率密度函数。词向量是多维实数向量,词向量中包含了自然语言中的语义和语法关系,词向量之间的余弦距离代表了词语之间的相似度。每个历史查看内容序列当做自然语言中的一个句子,序列中的每个历史内容当成句子中的一个词。使用语言模型对每个用户的历史查看内容序列进行学习训练后将得到每个历史内容的内容向量,该内容向量等效于自然语言处理中获得的词向量。本实施例中采用的语言模型为连续词袋模型,连续词袋模型是一种能够根据一句话中的前后词语预测或产生出中心词语的词袋模型。以句子“thecatjumpoverthepuddle”为例,连续词袋模型能够以{“the”,“cat”,“over”,“the”,“puddle”}为上下文,预测或产生出中心词语“jump”,这种模型称为连续词袋模型。

步骤s203具体包括:

步骤c1:建立连续词袋模型的输入矩阵v和输出矩阵u,并对输入矩阵v和输出矩阵u进行随机初始化。

其中,v∈rn×|v|,u∈r|v|×n,n表示向量维度。首先,需要建立模型的一些已知参数,把训练集中所有内容进行one-hot(独热)编码,再将内容序列表示为一些one-hot向量作为模型的输入,记为x(c)。模型只有一个输出,即中心内容,记为y。以上文中的英文句子为例,y就是我们已知的中心词语“jump”。然后定义模型中的未知参数,建立两个矩阵u、v,v∈rn×|v|,u∈r|v|×n。其中n可任意指定,表示内容向量的维度,v表示输入词矩阵。当内容wi(one_hot向量)作为模型输入的时候,v的第i列就是这个内容wi对应的n维内容向量,这一列表示为vi。类似地,u是输出矩阵,当内容wj(one_hot向量)作为模型输出的时候,u的第i行就是这个内容wi对应的n维内容向量,这一行表示为ui。我们对每个内容wi学习了两个内容向量,一个是输出内容的向量ui,另一个是输入内容的向量vi。

步骤c2:从用户的历史查看内容序列中选取一个历史内容xc作为中心内容,并读取中心内容的前后的各m个历史内容,并对读取出的2m个历史内容进行独热码编码,得到这2m个历史内容的独热码。该2m个历史内容的独热码分别表示如下:

x(c-m),...,x(c-1),x(c+1),...,x(c+m)

步骤c3:将这2m个历史内容的独热码分别乘以输入矩阵,得到这2m个历史内容的输入内容向量。该2m个历史内容的输入内容向量分别表示如下:

vc-m=vx(c-m),...vc-1=vx(c-1),vc+1=vx(c+1),...,vc+m=vx(c+m)

其中,vi表示内容wi的输入内容向量。

步骤c4:对2m个历史内容的输入内容向量求平均值

步骤c5:根据平均值计算得分向量z:

步骤c6:将得分向量转换为概率分布

步骤c7:利用交叉熵作为目标函数,计算中心内容在输出矩阵u中的内容向量与概率分布之间的误差:其中,为步骤c6中得到的概率分布,y为中心内容在输出矩阵u中的内容向量。

步骤c8:根据误差得到最终的优化目标函数:

其中,ui表示内容wi的输出内容向量。

步骤c9:采用梯度下降法对输出矩阵中的中心内容的内容向量和输入矩阵中的2m个历史内容对应的内容向量进行更新,得到最终的输入矩阵v和输出矩阵u,从而得到连续词袋模型,并得到各历史内容的内容向量。

s204、根据聚类算法将用户的历史内容分为多个类别,获取各类别历史内容的类属中心向量;

在本实施例中,运用k-means聚类算法,可以将用户的历史内容分为多个类别,并获取各类别历史内容的类属中心向量。

具体为,在步骤s203中可以获取历史内容的内容向量,相似历史内容在空间上具有相邻的特性,因此我们利用内容向量的聚类对历史内容自动分类。这种分类方法一方面摒弃了人工划分类属时,类属粒度过大并且不准确的问题;另一方面也可以得到更细粒度的类属的划分。举例说明,用户历史内容的集合i={v1,v2,v3,...,vn},通过步骤s203的训练每个历史内容v对应一个l维的内容向量。如历史内容v1对应的内容向量为v1=[f1,f2,...,fl],利用k-means算法把用户历史内容的集合i对应的历史内容v聚为k类,得到的各类别历史内容的类属中心向量的合集为c={c1,c2,c3,...,ck}。

s205、获取用户在预设时间窗口内查看过的内容,并根据公式ci∈c,计算用户对各类别历史内容的兴趣偏好;

i(u,ci)为用户u对类属中心向量为ci的类别的历史内容的兴趣偏好,n为预设时间窗口内用户u查看过的内容的数量,为预设时间窗口内用户u查看过的内容的内容向量的合集,σ为兴趣偏好参数,该兴趣偏好参数可以根据需要进行设置、更改。需要说明的是,这里的预设时间窗口是指预设的一个时间段,可以是对每个用户选取同一时间段,例如每个用户都选取2017年5月23日的12:00~12:30;也可以对各用户选取不同的时间段,只需保证每个用户选取的时间段内包含的时间长短是相同的,例如用户a选取2017年5月23日的12:00~12:30,用户b选取2017年4月10日的12:00~12:30,用户c选取2017年5月23日的10:00~10:30。

s206、根据计算得到的用户对各类别历史内容的兴趣偏好,以及公式计算各用户与目标用户的相似度;

可以理解的,这里可以令n为目标用户,m为待求用户,将步骤s205中求出的目标用户和待求用户对各类别历史内容的兴趣偏好带入此公式中,求得各用户与目标用户的相似度。

进一步地,可以根据计算得到的用户的兴趣偏好,建立全部用户的兴趣分布矩阵,如图5所示。

将该兴趣分布矩阵中的数据带入公式中,计算各用户与目标用户的相似度。

s207、选取与目标用户相似度最高的预置数量个用户作为目标用户的相似用户。

可以理解的,此处的预置数量可以根据需要进行设置、更改。

本发明实施例提供的相似用户选取方法,通过获取全部用户的内容查看历史数据,按照查看时间点的先后顺序对用户的全部历史内容进行排序,得到用户的历史查看内容序列,对用户的历史查看内容序列进行连续词袋模型训练,得到连续词袋模型,以及历史内容的内容向量,根据得到的内容向量计算用户的兴趣偏好,并根据用户的兴趣偏好计算各用户与目标用户的相似度,选取与目标用户相似度最高的预置数量个用户作为目标用户的相似用户。与现有技术相比,本发明不需要根据用户对同样物品产生正反馈行为来计算用户之间的相似用户,避免了很多没有对同样物品产生过正反馈行为的用户,无法进行相似用户计算的问题。

请参阅附图3,附图3是本发明第三实施例提供的相似用户选取装置的结构示意图,为了便于说明,仅示出了与本发明实施例相关的部分。附图3示例的相似用户选取装置可以是前述第一实施例提供的相似用户选取方法的执行主体,其可以是终端设备或者终端设备中的一个功能模块。附图3示例的相似用户选取装置,主要包括:获取模块301、排序模块302、训练模块303、计算模块304及选取模块305。各功能模块详细说明如下:

获取模块301,用于获取全部用户的内容查看历史数据,用户的内容查看历史数据包括用户的全部历史内容及各历史内容的查看时间点,历史内容为用户查看过的内容。

排序模块302,用于按照查看时间点的先后顺序对用户的全部历史内容进行排序,得到用户的历史查看内容序列。

训练模块303,用于对用户的历史查看内容序列进行连续词袋模型训练,得到连续词袋模型,以及历史内容的内容向量。

计算模块304,用于根据得到的内容向量计算用户的兴趣偏好,并根据用户的兴趣偏好计算各用户与目标用户的相似度。

选取模块305,用于选取与目标用户相似度最高的预置数量个用户作为目标用户的相似用户。

上述各功能模块实现各自功能的具体过程,可参考前述第一实施例提供的相似用户选取方法的相关内容,此处不再赘述。

本发明实施例提供的相似用户选取装置,通过获取全部用户的内容查看历史数据,按照查看时间点的先后顺序对用户的全部历史内容进行排序,得到用户的历史查看内容序列,对用户的历史查看内容序列进行连续词袋模型训练,得到连续词袋模型,以及历史内容的内容向量,根据得到的内容向量计算用户的兴趣偏好,并根据用户的兴趣偏好计算各用户与目标用户的相似度,选取与目标用户相似度最高的预置数量个用户作为目标用户的相似用户。与现有技术相比,本发明不需要根据用户对同样物品产生正反馈行为来计算用户之间的相似用户,避免了很多没有对同样物品产生过正反馈行为的用户,无法进行相似用户计算的问题。

请参阅附图4,附图4是本发明第四实施例提供的相似用户选取装置的结构示意图,为了便于说明,仅示出了与本发明实施例相关的部分。附图4示例的相似用户选取装置可以是前述第二实施例提供的相似用户选取方法的执行主体,其可以是终端设备或者终端设备中的一个功能模块。附图4示例的相似用户选取装置,主要包括:获取模块401、排序模块402、训练模块403、计算模块404及选取模块405。其中,计算模块404包括分类模块4041、兴趣计算模块4042及相似度计算模块4043。各功能模块详细说明如下:

获取模块401,用于获取全部用户的内容查看历史数据,用户的内容查看历史数据包括用户的全部历史内容及各历史内容的查看时间点,历史内容为用户查看过的内容。

排序模块402,用于按照查看时间点的先后顺序对用户的全部历史内容进行排序,得到用户的历史查看内容序列。

训练模块403,用于对用户的历史查看内容序列进行连续词袋模型训练,得到连续词袋模型,以及历史内容的内容向量。

训练模块403,具体用于:

建立连续词袋模型的输入矩阵v和输出矩阵u,并对输入矩阵v和输出矩阵u进行随机初始化;其中,v∈rn×|v|,u∈r|v|×n,n表示向量维度;

从用户的历史查看内容序列中选取一个历史内容xc作为中心内容,并读取中心内容的前后的各m个历史内容,并对读取出的2m个历史内容进行独热码编码,得到2m个历史内容的独热码,2m个历史内容的独热码分别表示如下:

x(c-m),...,x(c-1),x(c+1),...,x(c+m)

将2m个历史内容的独热码分别乘以输入矩阵v,得到2m个历史内容的输入内容向量,2m个历史内容的输入内容向量分别表示如下:

vc-m=vx(c-m),...vc-1=vx(c-1),vc+1=vx(c+1),...,vc+m=vx(c+m),vi表示历史内容的输入内容向量;

对2m个历史内容的输入内容向量求平均值

根据平均值计算得分向量z:

将得分向量z转换为概率分布

利用交叉熵作为目标函数,计算中心内容在输出矩阵u中的内容向量与概率分布之间的误差:其中,为概率分布,y为中心内容在输出矩阵u中的内容向量;

根据误差得到优化目标函数:

ui表示历史内容wi的输出内容向量;

采用梯度下降法对输出矩阵u中的中心内容的内容向量和输入矩阵中的2m个历史内容对应的内容向量进行更新,得到最终的输入矩阵v和输出矩阵u,得到连续词袋模型,并得到历史内容的内容向量。

计算模块404,用于根据得到的内容向量计算用户的兴趣偏好,并根据用户的兴趣偏好计算各用户与目标用户的相似度。

计算模块404包括:

分类模块4041,用于根据聚类算法将用户的历史内容分为多个类别,获取各类别历史内容的类属中心向量。

兴趣计算模块4042,用于获取用户在预设时间窗口内查看过的内容,并根据公式ci∈c,计算用户对各类别历史内容的兴趣偏好,其中i(u,ci)为用户u对类属中心向量为ci的类别的历史内容的兴趣偏好,n为预设时间窗口内用户u查看过的内容的数量,为预设时间窗口内用户u查看过的内容的内容向量的合集,σ为兴趣偏好参数。

相似度计算模块4043,用于根据计算得到的用户对各类别历史内容的兴趣偏好,以及公式计算各用户与目标用户的相似度,其中sim(m,n)为用户m与目标用户n的相似度。

进一步地,计算模块404还用于根据计算得到的用户的兴趣偏好,建立全部用户的兴趣分布矩阵,根据建立的全部用户的兴趣分布矩阵,计算各用户与目标用户的相似度。

选取模块405,用于选取与目标用户相似度最高的预置数量个用户作为目标用户的相似用户。

上述各功能模块实现各自功能的具体过程,可参考前述第二实施例提供的相似用户选取方法的相关内容,此处不再赘述。

本发明实施例提供的相似用户选取装置,通过获取全部用户的内容查看历史数据,按照查看时间点的先后顺序对用户的全部历史内容进行排序,得到用户的历史查看内容序列,对用户的历史查看内容序列进行连续词袋模型训练,得到连续词袋模型,以及历史内容的内容向量,根据得到的内容向量计算用户的兴趣偏好,并根据用户的兴趣偏好计算各用户与目标用户的相似度,选取与目标用户相似度最高的预置数量个用户作为目标用户的相似用户。与现有技术相比,本发明不需要根据用户对同样物品产生正反馈行为来计算用户之间的相似用户,避免了很多没有对同样物品产生过正反馈行为的用户,无法进行相似用户计算的问题。

需要说明的是,对于前述的各方法实施例,为了简便描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明并不受所描述的动作顺序的限制,因为依据本发明,某些步骤可以采用其它顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定都是本发明所必须的。

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

以上为对本发明所提供的相似用户选取方法、装置的描述,对于本领域的技术人员,依据本发明实施例的思想,在具体实施方式及应用范围上均会有改变之处,综上,本说明书内容不应理解为对本发明的限制。

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