具体实施方式
下面结合附图和实施例对本发明作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释本发明,而非对本发明的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与本发明相关的部分而非全部结构。
实施例一
图1是本发明实施例一所提供的一种数据处理方法的流程图。本实施例可适用于从原始数据中抽取出随机序列时的情形。该方法可以由数据处理装置执行,该数据处理装置可以采用软件和/或硬件的方式实现,例如,该数据处理装置可配置于计算机设备中。如图1所示,所述方法包括:
S110、从预先构建的至少一种关系链类型中抽取一种关系链类型,根据所抽取的关系链类型确定组成抽样序列的数据关系类型。
本发明实施例所提供的数据处理方法可以实现大规模异构网络到序列的高效和可行的加权随机抽样方法。其中,大规模和可行可以理解为:当原始数据的数据量较大时,无法将数据全部读入内存并构建网络数据结构,在本实施例中,利用KV数据库解决上述问题。异构网络是指网络中节点和边(或关系)的类型多种。可以理解的是,应用场景不同,节点的数据类型也不同。以电商平台为例,节点的数据类型可以包括用户、商品、品牌、品类、店铺和地址中的至少一种,上述六种数据类型可以构成7组14种双向边关系:
在本实施例中,所抽取的随机序列是由数据类型之间的单向关系顺序组成的。也就是说,所抽取的随机序列中包含有如下单向关系中的至少一个:用户→商品、商品→用户、用户→地址、地址→用户、用户→用户、商品→商品、商品→品牌、品牌→商品、商品→店铺、店铺→商品、商品→品类和品类→商品。在本实施例中,数据类型之间的单向关系可以理解为数据类型之间的有向关系,即X→Y和Y→X为两种不同的数据关系类型。
为了解决现有技术中通过原始数据进行随机序列的抽取时,需要首先构建网络结构带来的时间复杂度高的技术问题,在本实施例中,通过各数据类型之间的关系预先构建包含不同数据关系类型组合的关系链,在进行序列的随机抽样时,通过随机抽取一关系链,基于抽取出的关系链中的数据关系类型顺序抽取出关系链中包含的所有节点,将抽取出的节点顺序组成的序列作为抽样的随机序列。在本实施例中,关系链类型包括多个数据关系类型,数据关系类型包括两个数据类型之间的单向关系。示例性的,数据类型包括用户标识和/或商品标识,其中,用户标识可以包括用户名称(或用户ID)和地址,商品标识可以包括商品名称、品牌标识、品类标识和店铺标识。
在本发明的一种实施方式中,可以从预先构建的至少一种关系链类型中随机抽取一种关系链类型,作为随机抽样序列的关系链类型,并对所抽取的关系链类型进行拆分,根据关系链类型中数据关系类型的顺序,确定组成抽样序列的数据关系类型的顺序。示例性的,若所抽取的关系链类型为X→Y→X,则组成抽样序列的数据关系类型依次为:X→Y、Y→X。若所抽取的关系链类型为X→Y→Z→Y→X,则组成抽样序列的数据关系类型依次为:X→Y、Y→Z、Z→Y和Y→X。其中,X、Y、Z表示不同的数据类型。
S120、根据数据关系类型中各节点数据的数据类型以及预设随机抽样方法从数据库中抽取出数据关系类型的节点数据。
在本实施例中,数据库中存储有数据关系类型与随机抽样参数的对应关系。优选的,数据库为键值(Key-Value)存储数据库(KV数据库)。KV数据库的特点是通过给定的一个键Key,可以查询得到对应的值Value。针对数据关系类型中的每一数据关系类型,其对应的随机抽样参数均对应至相应的实例。也就是说给定一个数据关系类型,可以根据预先存储的键Key与其对应的值Value从数据库中抽取出该数据关系类型包含的节点数据。
可选的,根据组成抽样序列的数据关系类型的顺序,依次从KV数据库中抽取出数据关系类型的节点数据。示例性的,若关系链类型为X→Y→Z→Y→X,得到抽样序列的数据关系类型依次为:X→Y、Y→Z、Z→Y和Y→X,则根据数据关系类型X→Y、Y→Z、Z→Y和Y→X的顺序依次从数据库中抽取出各数据关系类型的节点数据。具体的,抽取出数据关系类型X→Y的起始节点XA和终止节点YB,然后将数据关系类型X→Y的终止节点YB作为数据关系类型Y→Z的起始节点,抽取出数据关系类型Y→Z的终止节点ZC,继续将数据关系类型Y→Z的终止节点ZC作为数据关系类型Z→Y的起始节点,抽取出数据关系类型Z→Y的终止节点YD,继续将数据关系类型Z→Y的终止节点YD作为数据关系类型Y→X的起始节点,抽取出数据关系类型Y→X的终止节点XE,得到数据关系类型X→Y的节点数据为XA和YB,数据关系类型Y→Z的节点数据为YB和ZC,数据关系类型Z→Y的节点数据为ZC和YD,数据关系类型Y→X的节点数据为YD和XE。
S130、根据数据关系类型将所抽取的节点数据顺序组成序列,将序列作为随机抽样的抽样序列。
在本发明的一种实施方式中,抽取出关系链类型中所有数据关系类型的节点数据后,根据数据关系类型的顺序将数据关系类型首位衔接,得到节点数据顺序组成的序列,并将组成的序列作为随机抽样的抽样序列。
仍以上文为例,所抽取出的数据关系类型X→Y的节点数据为XA和YB,数据关系类型Y→Z的节点数据为YB和ZC,数据关系类型Z→Y的节点数据为ZC和YD,数据关系类型Y→X的节点数据为YD和XE,将数据关系类型按照顺序首位衔接后得到序列XA→YB→ZC→YD→XE,将该序列作为随机抽样的抽样序列。
在本发明的另一种实施方式中,可以在抽取节点的过程中,将所抽取的节点顺序组成序列。示例性的,若抽取出数据关系类型X→Y的起始节点为XA,终止节点为YB,则构成序列XA→YB,然后将数据关系类型X→Y的终止节点YB作为数据关系类型Y→Z的起始节点,抽取出数据关系类型Y→Z的终止节点为ZC,构成序列XA→YB→ZC,续将数据关系类型Y→Z的终止节点ZC作为数据关系类型Z→Y的起始节点,抽取出数据关系类型Z→Y的终止节点为YD,构成序列XA→YB→ZC→YD,最终将数据关系类型Z→Y的终止节点YD作为数据关系类型Y→X的起始节点,抽取出数据关系类型Y→X的终止节点为XE,构成序列XA→YB→ZC→YD→XE,将该序列作为随机抽样的抽样序列。
本发明实施例通过从预先构建的至少一种关系链类型中抽取一种关系链类型,根据所抽取的关系链类型确定组成抽样序列的至少一个数据关系类型,关系链类型包括多个数据关系类型,数据关系类型包括两个数据类型之间的单向关系;根据数据关系类型中各节点数据的数据类型以及预设随机抽样方法从数据库中抽取出数据关系类型的节点数据;根据数据关系类型将所抽取的节点数据顺序组成序列,将序列作为随机抽样的抽样序列,通过预先构建关系链,在抽样时抽取任一关系链中的各个节点,将抽取的节点组成的序列作为随机抽样的抽样序列,实现了无需构建网络结构,即可从原始数据中抽取出随机序列,降低了随机抽样的时间复杂度。
在上述方案的基础上,所述方法还包括:根据所述抽样序列确定与所述物品标识对应的物品信息具有相同关联关系的用户标识,并基于具有相同关联关系的用户标识为用户推送目标推送信息。
在本实施例中,可以对所抽取的抽样序列进行处理,基于抽样序列为用户推送目标推送信息。具体的,可以基于各抽样序列得出用户所感兴趣的信息,并基于用户感兴趣的信息确定目标推送信息,将目标推送信息推送至用户,达到了精准推送的目的。示例性的,若可以根据抽取出的各抽样序列确定具有相同操作属性(如均浏览/购买了相同商品,或均浏览/购买同一品牌的商品等)的用户,基于确定的具有相同操作属性的用户为用户进行目标推送信息的推送。
实施例二
图2是本发明实施例二所提供的一种数据处理方法的流程图。本实施例在上述实施例的基础上将预设随机抽样方法优化为别名抽样方法,将数据库优化为存储有所述数据关系类型与别名抽样参数的对应关系,将根据所述数据关系类型中各节点数据的数据类型以及预设随机抽样方法从数据库中抽取出所述数据关系类型的节点数据优化为:根据所述数据关系类型从所述数据关系类型对应的别名抽样参数中抽取出所述数据关系类型的节点数据。如图2所示,所述方法包括:
S210、从预先构建的至少一种关系链类型中抽取一种关系链类型,根据抽取的关系链类型确定组成抽样序列的首位数据关系类型和至少一个后续数据关系类型。
在本实施例中,关系链类型中的相邻数据关系类型首尾衔接,即组成关系链类型的数据关系类型是有前后顺序的。示例性的,若关系链类型为X→Y→Z,则其包含数据关系类型为数据关系类型X→Y和数据关系类型Y→Z,数据关系类型X→Y与数据关系类型Y→Z首尾衔接组成关系链类型。
可以理解的是,首位数据关系类型为关系链类型中的第一个数据关系类型,后续数据关系类型为关系链类型中除第一个数据关系类型以外的其他数据关系类型。抽取出关系链类型后,将该关系链类型中的第一个数据关系类型确定为首位数据关系类型,将该关系链类型中的其他关系类型确定为后续数据关系类型。以关系链X→Y→Z→Y→X为例,首位数据关系类型为X→Y,后续数据关系类型为Y→Z、Z→Y和Y→X。
S220、根据首位数据关系类型、首位数据关系类型的起始节点的数据类型以及别名抽样算法从首位数据关系类型对应的别名抽样参数中抽取出一起始节点作为首位数据关系类型的首位起始节点。
在本实施例中,将预设随机抽样方法优化为别名抽样算法(Alias method)。相应的,数据库中存储有与数据关系类型对应的用于抽样的别名抽样参数。可选的,别名抽样参数包括样本数量、采样标识、业务标识、别名以及别名抽样概率。其中,业务标识为采样序列中节点数据的具体值,如XA(表示商品A)。
在本发明的一种实施方式中,根据首位数据关系类型、首位数据关系类型的起始节点的数据类型以及别名抽样算法从数据库中抽取出一起始节点作为首位数据关系的首位起始节点,包括:
从数据库中获取首位数据关系类型的样本数量N;
随机生成整数g,其中g∈[1,N],并根据整数g生成首位起始节点的采样标识;
从数据库中获取首位数据关系类型中与采样标识对应的业务标识、别名以及别名抽样概率p;
随机生成自然数h,其中h∈[0,1],并将h与别名抽样概率p进行比较;
若h<g,则将业务标识对应的节点作为首位起始节点,否则,将别名对应的节点作为首位起始节点。
在本实施例中,根据首位数据关系类型,从数据库中获取首位数据关系类型的起始节点的总数量,将获取的总数量作为样本数量N,随机生成一个1到N之间的整数值(包含边界值)g,根据随机生成的整数g以及预先设定的起始标识生成规则生成首位起始节点的采样标识,将采样标识作为键Key,通过GET命令从数据库中获取与键Key对应的值(即别名抽样参数),根据获取的别名抽样参数确定节点数据的值。具体的,获取的别名抽样参数包括业务标识、别名以及别名抽样概率p,随机生成0-1之间的自然数(包括边界值)h,将h与别名抽样概率p比较,若h<p,则将业务标识对应的节点值作为首位起始节点,否则,将别名对应的节点值作为首位起始节点。其中,预先设定的起始标识生成规则可以根据起始节点的数据类型确定。
示例性的,若首位数据关系类型为X→Y,从数据库中获取首位数据关系类型的起始节点的总数量为10,随机生成一个1到10之间的整数值g=5,根据预先设定的起始标识生成规则生成首位起始节点的采样标识为xr1_f_5(其中,r1为首尾数据关系类型X→Y的类型标识,f表示起始节点),将xr1_f_5作为键Key,通过GET命令从数据库中获取与xr1_f_5对应的业务标识XC、别名XA以及别名抽样概率p=0.5,随机生成0-1之间的自然数h=0.67,将h与p比较可知h>p,则将别名对应的节点值XA作为首位起始节点。
S230、根据首位起始节点、首位终止节点的数据类型以及别名抽样算法从首位数据关系类型对应的别名抽样参数中抽取出一终止节点作为首位数据关系类型的首位终止节点。
在本实施例中,针对每一数据类型,根据该数据类型的起始节点从数据库中抽取出该数据类型的终止节点。确定首位终止节点后,根据首位终止节点一级首位终止节点的数据类型确定终止标识生成规则,基于生成的终止标识生成规则以及别名抽样算法从数据库中抽取出首位终止节点。需要说明的是,本实施例中抽取出的节点数据为具体的节点值,对应于数据中存储的业务标识,但是确定终止标识生成规则需要依据起始节点的采样标识,在确定终止标识生成规则之前,需要从数据库中获取起始节点的业务标识对应的抽样标识。
仍以首位数据关系类型为X→Y,首位起始节点为XA为例,根据首位起始节点、首位终止节点的数据类型以及别名抽样算法从数据库中抽取出首位终止节点可以为:将XA作为键Key,通过GET命令从数据库中获取与XA对应的抽样标识xr1_f_5,根据获取的抽样标识xr1_f_5与首位终止节点的数据类型Y确定终止标识生成规则yr1_t_5_g,其中,r1为首尾数据关系类型X→Y的类型标识,t表示终止节点,5表示抽样标识为xr1_f_5的起始节点。确定终止标识生成规则后,通过别名抽样算法从数据库中抽取出起始终止节点。
具体的,从数据库中获取首位数据关系类型中起始节点XA的总出现次数,将获取的总出现次数作为样本数量N,随机生成一个1到N之间的整数值(包含边界值)g,根据随机生成的整数g以及终止标识生成规则生成首位终止节点的采样标识,将采样标识作为键Key,通过GET命令从数据库中获取与键Key对应的值(即别名抽样参数),根据获取的别名抽样参数确定节点数据的值。具体的,获取的别名抽样参数包括业务标识、别名以及别名抽样概率p,随机生成0-1之间的自然数(包括边界值)h,将h与别名抽样概率p比较,若h<p,则将业务标识对应的节点值作为首位终止节点,否则,将别名对应的节点值作为首位终止节点。
示例性的,若首位数据关系类型为X→Y,从数据库中获取数据关系类型X→Y中起始节点XA的总出现次数为5,随机生成一个1到5之间的整数值g=4,根据终止标识生成规则生成首位终止节点的采样标识为yr1_t_5_4,将yr1_t_5_4作为键Key,通过GET命令从数据库中获取与yr1_t_5_4对应的业务标识YB、别名YF以及别名抽样概率p=0.8,随机生成0-1之间的自然数h=0.6,将h与p比较可知h<p,则将业务标识YB作为首位终止节点。可得出首位数据类型X→Y对应的序列为XA→YB。
S240、针对每个后续数据关系类型,根据后续数据关系类型、后续数据关系类型的起始节点以及别名抽样算法从后续数据关系类型对应的随机抽样参数中抽取出后续数据关系类型的终止节点。
在本实施例中,后续数据关系类型的起始节点为后续数据关系类型的前一数据关系类型的终止节点。可选的,抽取出首位数据关系类型的首位起始节点和首位终止节点后,将首位数据关系类型的首位终止节点作为下一数据关系类型的起始节点,通过与抽取首位终止节点相同的抽样方式从数据库中抽取出下一关系类型的终止节点,重复上述操作直到抽取出该关系链类型中最后一个数据关系类型的终止节点。
S250、根据数据关系类型将所抽取的节点数据顺序组成序列,将所述序列作为随机抽样的抽样序列。
本发明实施例的技术方案,在上述实施例的基础上将根据所述数据关系类型中各节点数据的数据类型以及预设随机抽样方法从数据库中抽取出所述数据关系类型的节点数据进行了具体化,通过别名抽样算法从存储有数据关系类型与别名抽样参数对应关系的数据库中依次抽取出关系链类型中的各节点数据,降低了随机抽样的时间复杂度,解决了海量数据无法全部读入内存处理的问题。
实施例三
图3是本发明实施例三所提供的一种数据处理方法的流程图。本实施例在上述实施例的基础上进行进一步地优化。如图3所示,所述方法包括:
S310、获取原始数据,确定所述原始数据中包含的至少一个数据关系类型。
在本实施例中,在从数据库中抽取出关系链类型中的各节点数据之前,需要对原始数据进行预处理,得到用于别名抽样的别名抽样参数,并将别名抽样参数存储至KV数据库中。其中,原始数据为包含多种数据关系类型的数据。示例性的,原始数据中包含的数据关系类型可以为X→Y、Y→Z、Y→X、Z→X等。
S320、针对每个所述数据关系类型,对所述数据关系类型的数据进行预处理,得到所述数据关系类型中各节点用于别名抽样的多个别名抽样参数。
在本实施例中,以数据关系类型X→Y为例,对对原始数据进行处理得到别名抽样参数进行说明。
表1
表1中示意性的示出了描述数据关系类型X→Y的原始数据。如表1所示,其展示出了起始节点v
r_f的业务标识、终止节点v
r_t的业务标识以及边权重
之间的对应关系。其中,r为数据关系类型X→Y的类型标识,f表示一个关系的起始,t表示一个关系的终止,边权重
描述了从起始节点v
r_f到与其连接的终止节点v
r_t之间关系的强弱,边权重越大表示关系越强。边权重统计来自与不同关系的业务定义,例如:假设X类型为用户,Y类型为商品,X→Y表示用户购买商品的关系,则边权重可以表示为该用户购买该商品的数量占该用户购买所有商品数量的比重。因此对于一个起始节点为
而言((i)用于表示具体的实例),与其连接的所有终止节点的边全重之和应为1,即
其中,n为起始节点
对应的终止节点的总数量。
在本实施例中,基于表1所示的原始数据得到该原始数据对应的数据关系类型中各节点用于别名抽样的多个别名抽样参数。
在本发明的一种实施方式中,所述别名抽样参数包括样本数量、抽样标识、业务标识、别名以及别名抽样概率,所述针对每个所述数据关系类型,对所述数据关系类型的数据进行预处理,得到所述数据关系类型中各节点用于别名抽样的多个别名抽样参数,包括:
确定所述数据关系类型的起始节点的总出现次数,将所述总出现次数作为所述样本数量;
根据预先设置的抽样标识生成规则生成各节点的抽样标识;
根据各节点的抽样标识以及别名算法,得到各节点的别名和别名抽样概率。
在本实施例中,统计原始数据中起始节点为
出现的次数(即关系为r的情况下,与
连接的终止节点的个数),记为
将各起始节点的
求和,得到该数据关系类型中起始节点的总出现次数#row
r_f,将得到的总出现次数#row
r_f作为起始节点的样本数量。
考虑到原始数据中各节点的节点值为具体的业务标识(如XA),在后续利用的别名抽样方法中无法直接使用,本实施例中通过预先设置的抽样标识生成规则生成各节点的抽样标识,将各节点的抽样标识满足别名算法的输入要求,将各节点的抽样标识输入至别名方法中,得到各节点的别名和别名抽样概率。其中,起始节点的抽样标识生成规则与终止节点的抽样标识生成规则不同。
在本实施例中,不对抽样标识生成规则进行限定,只要各节点根据抽样标识生成规则所生成的抽样标识能够表示原始数据中各节点的指向关系即可。需要说明的是,抽样标识生成规则可以结合各节点间关系的边权重确定,通过结合边权重确定抽样标识生成规则使得在进行各节点的抽样时实现加权随机抽样。
需要说明的是,在本实施例中,每一种数据关系类型可以得到三个用于存储别名抽样参数的表格。可选的,分别用于存储该数据关系类型各起始节点对应的出现次数、该数据关系类型起始节点的抽样标识、业务标识、别名和别名抽样概率,以及该数据关系类型终止节点的抽样标识、业务标识、别名和别名抽样概率。
S330、将所述别名抽样参数存储至数据库中,并建立所述数据关系类型与所述别名抽样参数的对应关系。
在本实施例中,生成各数据关系类型对应的别名抽样参数后,将数据关系类型与别名抽样参数对应存储至KV数据库中,并定义相应的键Key和对应的值Value。示例性的,可以将起始节点的抽样标识定义为Key,该抽样标识对应的业务标识、别名和别名抽样概率定义为对应的Value,将将终止节点的抽样标识定义为Key,该抽样标识对应的业务标识、别名和别名抽样概率定义为对应的Value,将起始节点的业务标识定义为Key,该起始节点的出现次数定义为对应的Value。
S340、根据所述至少一个数据关系类型构建至少一种关系链类型。
在本实施例中,关系链类型由全部数据关系类型中的一个或多个组成。具体的,关系链类型通过多个首尾相同的数据关系类型相连接得到。仍假设X类型为用户,Y类型为商品,X→Y表示用户购买商品的关系,Y→X表示商品被用户购买的关系。则一个关系链类型:X→Y→X表示用户购买的商品被其他用户购买,该关系链类型通俗的描述为不同用户购买相同商品。具体的,XA→YB→XC表示用户XA和XC同时购买了商品YB。可选的,可以根据业务逻辑,定义了一系列的关系链类型。
S350、从预先构建的至少一种关系链类型中抽取一种关系链类型,根据所抽取的关系链类型确定组成抽样序列的数据关系类型。
S360、根据所述数据关系类型中各节点数据的数据类型以及别名抽样方法从数据库中抽取出所述数据关系类型的节点数据。
S370、根据所述数据关系类型将所抽取的节点数据顺序组成序列,将所述序列作为随机抽样的抽样序列。
本发明实施例的技术方案,在上述实施例的基础上增加了根据原始数据得到用于别名抽样的别名抽样参数,以及构建关系链类型的操作,通过获取原始数据,确定所述原始数据中包含的至少一个数据关系类型;针对每个所述数据关系类型,对所述数据关系类型的数据进行预处理,得到所述数据关系类型中各节点用于别名抽样的多个别名抽样参数;将所述别名抽样参数存储至数据库中,并建立所述数据关系类型与所述别名抽样参数的对应关系,根据所述至少一个数据关系类型构建至少一种关系链类型,所述关系链类型由全部数据关系类型中的一个或多个组成,预先构建关系链类型,基于预先构建的关系链类型通过别名抽样方法抽样出各节点,使得无需预先构建图结构数据即可实现大规模异构网络到序列的加权随机抽样。
实施例四
图4a是本发明实施例四所提供的一种数据处理方法的流程图。本实施例在上述实施例的基础上,提供了一种优选实施例。本实施例以电子商务交易平台为例,对从电子商务交易平台中的原始数据抽取出随机序列进行说明。
为了便于说明,表2中示出了本实施例中涉及到的部分数学符号含义。
表2
符号 |
含义 |
v |
vertex的缩写,表示节点 |
r |
relation的缩写,表示边(关系) |
f |
from的缩写,用于角标,表示一个关系的起始节点 |
t |
to的缩写,用于角标,表示一个关系的终止节点 |
如图4a所示,所述方法包括:
S410、对原始数据进行预处理,生成预处理后的数据。
在本实施例中,预处理后的数据包括相关统计信息、别名算法加权随机采样所需的概率和别名表。可选的,对原始数据进行并行预处理,构建节点采样标识和节点业务标识之间的对应关系。并统计相关信息,并生成别名算法(Alias Method)加权随机采样所需的概率和别名表。其中,采样标识无具体含义,仅用于采样算法,业务标识有具体含义,采样序列中的节点的具体值,例如商品A。
网络是由节点和边构成的,由不同类型节点所构成的网络为异构网络,一个数据关系类型可用从一类节点X到一类节点Y构成(X和Y的类型可以相同,也可以不同,例如:X表示用户,Y表示商品;或X表示商品,Y也表示商品),并且本实施例中的图为有向图,即X→Y和Y→X为两种不同的数据关系类型(例如,X→Y表示用户购买了一个商品,Y→X表示一个商品被用户所购买)。下文以数据关系类型X→Y为例进行说明,以r作为数据关系类型X→Y的类型标识。
(1)统计相关信息
在本实施例中,描述数据关系类型X→Y的原始数据可参见上述实施例,如表1所示。针对表1所示的原始数据,对表1中的信息进行统计,统计表1中起始节点为
出现的次数,即关系为r的情况下,与
连接的终止节点的个数,记为
可以得出关系r的相关统计信息如表3。
表3
(2)生成Alias概率和别名表
表1和表3中保存的起始节点为具体的业务标识,在后续利用别名方法抽样过程中无法直接使用,因此需要将其编码成抽样标识,并构建抽样标识和业务标识的对应关系。
①生成起始节点的别名概率和别名表。
起始节点的别名概率和别名表利用生成的统计信息表(表3)生成。首先计算表3中所有起始节点实例对应的
的总和,记为:
以表3为例,有#v
r_f=3+2+1+……,添加新的权重列
同时对起始节点进行编码得到对应的抽样标识,编码规则为x
r_f_i,其中i为按照
降序排列的行号,生成新的统计信息表如表4。
表4
表4满足别名算法的输入要求,基于表4,利用别名算法生成起始节点的别名概率和别名表(表5)。表5中,各节点别名概率为具体的0-1之间的数值(如pr_f_1=0.85),别名为具体的起始节点业务标识(如Aliasr_f_1=XC),其中i=1,2,3,……。
表5
②生成终止节点的别名概率和别名表。
终止节点的别名概率和别名表利用生成的统计信息表(表3)生成。针对表3中的每个起始节点实例vr_f构建别名概率和别名表,再将所有的起始节点实例的别名概率和别名表合并成为最终的终止节点的别名概率和别名表。以表3的起始节点实例vr_f=XA为例,从表3中筛选出起始节点为XA的终止节点列表和对应的权重,如表6所示。
表6
首先对终止节点进行编码得到对应的抽样标识,编码规则为y
r_t_i_j,其中r表示关系为r,i为起始节点实例v
r_f=X
A在表4中的行号,j为按照表6中
降序排列的行号。表6满足别名算法的输入要求,然后基于表6,利用别名算法生成终止节点的别名概率和别名表(表7)。表7中,各节点别名概率为具体的0-1之间的数值(如p
r_t_i_1=0.45),别名为具体的起始节点业务标识(如Alias
r_t_i_1=Y
B),其中j=1,2,3,……。
表7
针对所有起始节点实例,生成各起始节点对应的终止节点的别名概率和别名表,将所有起始节点对应的终止节点的别名概率和别名表合并后,得到最终的终止节点的别名概率和别名表(表8)。
表8
将原始数据进行上述处理后,得到数据预处理后的结果(表3、表5和表8),并设置各表对应的标识。可选的,设置表3的类型为Tr_stats,设置表5的类型为Tr_f_alias_prob,设置表8的类型为Tr_t_alias_prob。
S420、将预处理后的数据载入到KV数据库中。
将预处理后的数据载入到支持Key-Value查询的数据库用于后续查询使用。KV数据库的作用是通过给定的一个键Key,可以查询得到对应的值Value。对于任意一个关系的每一个预处理后的数据表均对应一个实例,也就是说对于给定一个关系r,一个预处理后的表(如Tr_stats)和一个键Key,可以获得其对应的值Value。在本实施例中,对于上述预处理后的表3、表5和表8,分别定义其Key和Value如表9所示。其中,表3中表Tr_stats对应的其他字段为表3中除起始节点实例以外的其他列,表Tr_f_alias_prob对应的其他字段为表5中除起始节点实例vf(数据类型为X,抽样标识)以外的其他列,表Tr_t_alias_prob对应的其他字段为表3中除终止节点实例vt(数据类型为X,抽样标识)以外的其他列。
表9
表 |
Key |
Value |
T<sub>r_stats</sub> |
起始节点实例v<sub>f</sub>(数据类型为X) |
其他字段 |
T<sub>r_f_alias_prob</sub> |
起始节点实例v<sub>f</sub>(数据类型为X,抽样标识) |
其他字段 |
T<sub>r_t_alias_prob</sub> |
终止节点实例v<sub>t</sub>(数据类型为X,抽样标识) |
其他字段 |
同时,对于表Tr_f_alias_prob保存另外一份副本T′r_f_alias_prob,并设置其Key为“起始节点实例vr_f(数据类型为X,业务标识)”,对应的Value为“起始节点实例vr_f(数据类型为X,抽样标识)”。用于对于给定节点的业务标识,可以查询得到其在关系r中对应的抽样标识。
对于KV数据库,定义基本操作:PUT和GET。
(1)PUT(relation,table,Key,Value)
其中,relation为关系类型(如类型r),table为表类型(如T
r_stats、T
r_f_alias_prob、T
r_t_alias_prob或T
r′
_f_alias_prob),Key为表0中对应table定义的Key的具体值(以T
r_stats为例,Key的值为起始节点实例v
r_f具体的值,如X
A),Value为表9中对应table定义的Value的具体值(以T
r_stats为例,Value的值为对应的
值,如3)。可选的,可以以JSON数据格式表示其他字段的值。在本实施例中,PUT操作是指将Value写入relation和table对应的KV数据库实例的Key中。
(2)GET(relation,table,,Key)
GET操作中参数的含义与PUT操作中参数的含义相同。在本实施例中,GET操作是指获取relation和table对应的KV数据库实例的Key所对应的Value值。
在本发明的一种实施方式中,遍历所有的数据关系类型,以及各数据类型对应的表和表中的Key,利用PUT操作将对应的Value值写入对应的实例。
S430、构建具有业务含义的Meta-Path,从多个Meta-Path中随机选择一个,并根据该Meta-Path定义的规则查询KV数据库得到一条Meta-Path对应的采样的序列,直至达到停止条件。
在本实施例中,根据原始数据中包含的数据关系类型,以及实际业务逻辑,构建多个关系链类型(Meta-Path)。可选的,构建的Meta-Path可以为X→Y→X、X→Y→Z→Y→X等。
在本实施例中,根据Meta-Path列表进行加权随机抽样序列的流程如下:
(1)在Meta-Path列表中随机抽样一条Meta-Path;
(2)根据抽样到的Meta-Path定义采样对应的一条序列;
(3)重复(1)和(2)直至达到停止条件,一般的,可以设置停止条件为达到预定的抽样序列条数。
图4b是本发明实施例四所提供的又一种数据处理方法的流程图,图4b中示意性的示出了针对一个Meta-Path进行加权随机抽样序列的流程(即上述步骤(2)),如图4b所示,所述方法包括:
S431、抽样第一个起始节点。
假设抽样到的Meta-Path的第一个关系为r1:vr1_f→vr1_t。
(1)获取关系r1的#vr1_f值,随机生成一个1到#vr1_f之间的整数值(包括边界值),记为g。在本实施例中,可以从数据库中获取关系r1的#vr1_f值。
(2)得到采样的第一个节点的采样ID,假设为:xr1_f_g。
(3)通过GET(r1,Tr1_f_alisas_prob,xr1_f_g)获取到关系r1的Tr1_f_alisas_prob表中Key为xr1_f_g对应的字段值。其中,获取的字段值包括:对应的业务标识,概率pr1_f_g和别名(业务标识)。
(4)随机生成一个0到1之间的数(包括边界值),记为h。
(5)如果h<pr1_f_g,则将字段值中的业务标识作为抽样到的起始节点,否则将别名对应的业务标识作为抽样到的起始节点。
S432、抽样后续终止节点,直至抽样到该Meta-Path的最后一个终止节点。
假设抽样到的Meta-Path的第p个关系rp:vrp_f→vrp_t。
(1)如果p=1,则令vrp_f为S431抽样的第一个起始节点(业务ID),否则令vrp_f为上一轮步骤中抽样的终止节点(业务ID),假设:vrp_f=XA。
(2)通过GET(rp,Tr′p_f_alisas_prob,XA)获得到关系rp情况下,节点业务ID对应的抽样ID,假设为:vrp_f_1。
(3)通过GET(rp,T
rp_f_stats,X
A)获得到关系rp情况下,节点业务ID为X
A的
的值。
(4)随机生成一个1到
的整数值(包括边界值),记为g。
(5)得到关系rp情况下终止节点的采样ID,假设为:yrp_t_1_g。
(6)通过GET(rp,Trp_f_alisas_prob,yrp_t_1_g)得到关系rp的Trp_f_alisas_prob表Key为yrp_t_1_g对应的字段值。其中,获取的字段值包括:对应的业务ID,概率prp_t_1_g和别名(业务ID)。
(7)随机生成一个0到1之间的数(包括边界值),记为h。
(8)如果h<prp_f_g,则将字段值中的业务ID作为抽样到的终止节点,否则将别名对应的业务ID作为抽样到的终止节点。
(9)重复步骤①-⑧直至抽样到该Meta-Path的最后一个终止节点。
示例性的,抽样到的一条完整序列示例为:XA→YB→XC(Meta-Path为X→Y→X时),XA→YB→ZA→YC→XD(Meta-Path为X→Y→Z→Y→X时)。
图4c是本发明实施例四所提供的又一种数据处理方法的简要流程图。如图4c所示,将原始数据进行统计、编码、计算别名概率和别名表等并行预处理后得到预处理后的统计信息表、别名概率和别名表,将预处理后数据存储至数据库中,并构建Meta-Path。在进行随机抽样时,从预先构建的Meta-Path中随机选择Meta-Path,并根据其定义进行加权随机采样,直到达到停止条件,得到随机抽样后的结果采样序列。
本实施例提供的数据处理方法通过定义抽样ID的编码格式,利用别名方法生成概率和别名表,以及同业务ID之间的关系,降低加权随机抽样的时间复杂度,将上述关系存储至KV数据库用于抽样,解决了海量数据无法全部读入内存处理的问题。;通过定义抽样ID的编码格式,利用别名方法无需预先构建图结构数据即可实现大规模异构网络到序列的加权随机抽样。
实施例五
图5是本发明实施例五所提供的一种数据处理装置的结构示意图。该物品数据处理装置可以采用软件和/或硬件的方式实现,例如该数据处理装置可以配置于计算机设备中。如图5所示,所述装置包括关系链获取模块510、节点数据获取模块520和抽样序列确定模块530,其中:
关系链获取模块510,用于从预先构建的至少一种关系链类型中抽取一种关系链类型,根据所抽取的关系链类型确定组成抽样序列的数据关系类型,所述关系链类型包括多个数据关系类型,所述数据关系类型包括两个数据类型之间的单向关系;
节点数据获取模块520,用于根据所述数据关系类型中各节点数据的数据类型以及预设随机抽样方法从数据库中抽取出所述数据关系类型的节点数据;
抽样序列确定模块530,用于根据所述数据关系类型将所抽取的节点数据顺序组成序列,将所述序列作为随机抽样的抽样序列。
本发明实施例通过关系链获取模块从预先构建的至少一种关系链类型中抽取一种关系链类型,根据所抽取的关系链类型确定组成抽样序列的至少一个数据关系类型,关系链类型包括多个数据关系类型,数据关系类型包括两个数据类型之间的单向关系;节点数据获取模块根据数据关系类型中各节点数据的数据类型以及预设随机抽样方法从数据库中抽取出数据关系类型的节点数据;抽样序列确定模块根据数据关系类型将所抽取的节点数据顺序组成序列,将序列作为随机抽样的抽样序列,通过预先构建关系链,在抽样时抽取关系链中各个节点,将抽取的节点组成的序列作为随机抽样的抽样序列,实现了无需构建网络结构,即可从原始数据中抽取出随机序列,降低了随机抽样的时间复杂度。
在上述方案的基础上,所述预设随机抽样方法包括别名抽样方法,所述数据库中存储有所述数据关系类型与别名抽样参数的对应关系,所述节点数据获取模块520具体用于:
根据所述数据关系类型从所述数据关系类型对应的别名抽样参数中抽取出所述数据关系类型的节点数据。
在上述方案的基础上,所述关系链类型中的相邻数据关系类型首尾衔接,所述数据关系类型包括首位数据关系类型,所述节点数据获取模块520包括:
首位起始节点获取单元,用于根据所述首位数据关系类型、所述首位数据关系类型的起始节点的数据类型以及别名抽样算法从所述首位数据关系类型对应的别名抽样参数中抽取出一起始节点作为所述首位数据关系类型的首位起始节点;
首位终止节点获取单元,用于根据所述首位起始节点、首位终止节点的数据类型以及别名抽样算法从所述首位数据关系类型对应的别名抽样参数中抽取出一终止节点作为所述首位数据关系类型的首位终止节点。
在上述方案的基础上,所述数据关系类型还包括至少一个后续数据关系类型,所述后续数据关系类型为所述关系链类型中除第一个数据关系类型以外的其他数据关系类型,所述节点数据获取模块520包括:
后续终止节点获取单元,用于针对每个所述后续数据关系类型,根据所述后续数据关系类型、所述后续数据关系类型的起始节点以及别名抽样算法从所述后续数据关系类型对应的随机抽样参数中抽取出所述后续数据关系类型的终止节点,其中,所述后续数据关系类型的起始节点为所述后续数据关系类型的前一数据关系类型的终止节点。
在上述方案的基础上,所述首位起始节点获取单元具体用于:
从所述数据库中获取所述首位数据关系类型的样本数量N;
随机生成整数g,其中g∈[1,N],并根据整数g生成首位起始节点的采样标识;
从数据库中获取所述首位数据关系类型中与所述采样标识对应的业务标识、别名以及别名抽样概率p;
随机生成自然数h,其中h∈[0,1],并将h与所述别名抽样概率p进行比较;
若h<p,则将所述业务标识对应的节点作为所述首位起始节点,否则,将所述别名对应的节点作为所述首位起始节点。
在上述方案的基础上,所述预设随机抽样方法包括别名抽样方法,所述随机抽样参数包括别名抽样参数,所述装置还包括:
数据类型确定模块,用于获取原始数据,确定所述原始数据中包含的至少一个数据关系类型;
抽样参数确定模块,用于针对每个所述数据关系类型,对所述数据关系类型的数据进行预处理,得到所述数据关系类型中各节点用于别名抽样的多个别名抽样参数;
抽样参数存储模块,用于将所述别名抽样参数存储至数据库中,并建立所述数据关系类型与所述别名抽样参数的对应关系。
在上述方案的基础上,所述别名抽样参数包括样本数量、抽样标识、别名以及别名抽样概率,所述抽样参数确定模块具体用于:
确定所述数据关系类型的起始节点的总出现次数,将所述总出现次数作为所述样本数量;
根据预先设置的抽样标识生成规则生成各节点的抽样标识;
根据各节点的抽样标识以及别名算法,得到各节点的别名和别名抽样概率。
在上述方案的基础上,所述装置还包括:
关系链类型构建模块,用于根据所述至少一个数据关系类型构建至少一种关系链类型,所述关系链类型由全部数据关系类型中的一个或多个组成。
在上述方案的基础上,所述数据类型包括用户标识和/或物品标识,所述装置还包括:
关联用户确定模块,用于根据所述抽样序列确定与所述物品标识对应的物品信息具有相同关联关系的用户标识,并基于具有相同关联关系的用户标识为用户推送目标推送信息。
本发明实施例所提供的数据处理装置可执行任意实施例所提供的数据处理方法,具备执行方法相应的功能模块和有益效果。
实施例六
图6是本发明实施例六所提供的计算机设备的结构示意图。图6示出了适于用来实现本发明实施方式的示例性计算机设备612的框图。图6显示的计算机设备612仅仅是一个示例,不应对本发明实施例的功能和使用范围带来任何限制。
如图6所示,计算机设备612以通用计算设备的形式表现。计算机设备612的组件可以包括但不限于:一个或者多个处理器616,系统存储器628,连接不同系统组件(包括系统存储器628和处理器616)的总线618。
总线618表示几类总线结构中的一种或多种,包括存储器总线或者存储器控制器,外围总线,图形加速端口,处理器616或者使用多种总线结构中的任意总线结构的局域总线。举例来说,这些体系结构包括但不限于工业标准体系结构(ISA)总线,微通道体系结构(MAC)总线,增强型ISA总线、视频电子标准协会(VESA)局域总线以及外围组件互连(PCI)总线。
计算机设备612典型地包括多种计算机系统可读介质。这些介质可以是任何能够被计算机设备612访问的可用介质,包括易失性和非易失性介质,可移动的和不可移动的介质。
系统存储器628可以包括易失性存储器形式的计算机系统可读介质,例如随机存取存储器(RAM)630和/或高速缓存存储器632。计算机设备612可以进一步包括其它可移动/不可移动的、易失性/非易失性计算机系统存储介质。仅作为举例,存储装置634可以用于读写不可移动的、非易失性磁介质(图6未显示,通常称为“硬盘驱动器”)。尽管图6中未示出,可以提供用于对可移动非易失性磁盘(例如“软盘”)读写的磁盘驱动器,以及对可移动非易失性光盘(例如CD-ROM,DVD-ROM或者其它光介质)读写的光盘驱动器。在这些情况下,每个驱动器可以通过一个或者多个数据介质接口与总线618相连。存储器628可以包括至少一个程序产品,该程序产品具有一组(例如至少一个)程序模块,这些程序模块被配置以执行本发明各实施例的功能。
具有一组(至少一个)程序模块642的程序/实用工具640,可以存储在例如存储器628中,这样的程序模块642包括但不限于操作系统、一个或者多个应用程序、其它程序模块以及程序数据,这些示例中的每一个或某种组合中可能包括网络环境的实现。程序模块642通常执行本发明所描述的实施例中的功能和/或方法。
计算机设备612也可以与一个或多个外部设备614(例如键盘、指向设备、显示器624等)通信,还可与一个或者多个使得用户能与该计算机设备612交互的设备通信,和/或与使得该计算机设备612能与一个或多个其它计算设备进行通信的任何设备(例如网卡,调制解调器等等)通信。这种通信可以通过输入/输出(I/O)接口622进行。并且,计算机设备612还可以通过网络适配器620与一个或者多个网络(例如局域网(LAN),广域网(WAN)和/或公共网络,例如因特网)通信。如图所示,网络适配器620通过总线618与计算机设备612的其它模块通信。应当明白,尽管图中未示出,可以结合计算机设备612使用其它硬件和/或软件模块,包括但不限于:微代码、设备驱动器、冗余处理单元、外部磁盘驱动阵列、RAID系统、磁带驱动器以及数据备份存储系统等。
处理器616通过运行存储在系统存储器628中的程序,从而执行各种功能应用以及数据处理,例如实现本发明实施例所提供的数据处理方法,该方法包括:
从预先构建的至少一种关系链类型中抽取一种关系链类型,根据所抽取的关系链类型确定组成抽样序列的数据关系类型,所述关系链类型包括多个数据关系类型,所述数据关系类型包括两个数据类型之间的单向关系;
根据所述数据关系类型中各节点数据的数据类型以及预设随机抽样方法从数据库中抽取出所述数据关系类型的节点数据,所述数据库中存储有所述数据关系类型与随机抽样参数的对应关系;
根据所述数据关系类型将所抽取的节点数据顺序组成序列,将所述序列作为随机抽样的抽样序列。
当然,本领域技术人员可以理解,处理器还可以实现本发明任意实施例所提供的数据处理方法的技术方案。
实施例七
本发明实施例七还提供了一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现如本发明实施例所提供的数据处理方法,该方法包括:
从预先构建的至少一种关系链类型中抽取一种关系链类型,根据所抽取的关系链类型确定组成抽样序列的数据关系类型,所述关系链类型包括多个数据关系类型,所述数据关系类型包括两个数据类型之间的单向关系;
根据所述数据关系类型中各节点数据的数据类型以及预设随机抽样方法从数据库中抽取出所述数据关系类型的节点数据,所述数据库中存储有所述数据关系类型与随机抽样参数的对应关系;
根据所述数据关系类型将所抽取的节点数据顺序组成序列,将所述序列作为随机抽样的抽样序列。
当然,本发明实施例所提供的一种计算机可读存储介质,其上存储的计算机程序不限于如上所述的方法操作,还可以执行本发明任意实施例所提供的数据处理方法中的相关操作。
本发明实施例的计算机存储介质,可以采用一个或多个计算机可读的介质的任意组合。计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本文件中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。
计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。
计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括——但不限于无线、电线、光缆、RF等等,或者上述的任意合适的组合。
可以以一种或多种程序设计语言或其组合来编写用于执行本发明操作的计算机程序代码,所述程序设计语言包括面向对象的程序设计语言—诸如Java、Smalltalk、C++,还包括常规的过程式程序设计语言—诸如“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络——包括局域网(LAN)或广域网(WAN)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。
注意,上述仅为本发明的较佳实施例及所运用技术原理。本领域技术人员会理解,本发明不限于这里所述的特定实施例,对本领域技术人员来说能够进行各种明显的变化、重新调整和替代而不会脱离本发明的保护范围。因此,虽然通过以上实施例对本发明进行了较为详细的说明,但是本发明不仅仅限于以上实施例,在不脱离本发明构思的情况下,还可以包括更多其他等效实施例,而本发明的范围由所附的权利要求范围决定。