一种高速图数据流在线分析方法和装置

文档序号:32005080发布日期:2022-11-02 12:49阅读:54来源:国知局
一种高速图数据流在线分析方法和装置

1.本技术涉及数据处理技术领域,特别是涉及一种高速图数据流在线分析方法和装置。


背景技术:

2.随着互联网的在当前社会的高度普及,各领域都在实时产生大量数据。其中,大量数据是以图数据流的形式呈现的,对这些数据进行及时计算与挖掘能够产生高价值的信息。例如,在社交网络中的“大v”用户,在信息传播,产品推广方面都有重要作用。通过社交网络进行营销,依靠社交网络信息传播的快速性,广泛性,能降低广告成本,网络红人依靠自己的网络地位对产品进行推荐,达到产品推广的目的。《2022年全球数字报告》中指出,超过四分之一的16至64岁互联网用户(27.6%)通过社交媒体广告发现新品牌、产品和服务,仅略低于电视广告的数字(31.1%)。图数据流中关键节点识别的主要目标是识别出动态图上的一组影响力最大化节点。识别图数据流中关键节点在多方面都有重要作用,在社交网络中,识别关键用户有助于市场营销、舆论控制,在网络通信中,识别关键节点有利于提高通信效率。
3.现有的图数据流中关键节点识别方法,存在无法保证求解出的关键节点的质量或求解关键节点时效率低下的问题。传统的求解算法例如贪心算法,每次求解需要遍历整个图数据流中的数据,再依次选取图中的效用增益最大的节点,最后得到图上一组关键节点,这会导致求解效率低下;现有的采用滑动窗口流模型的求解算法,每次仅选取固定窗口中的数据参与计算,根据此窗口来确定当前的一组关键节点,这样导致窗口外的数据完全不会参与到关键节点计算中去,无法保证解的质量。


技术实现要素:

4.本技术提供一种高速图数据流在线分析方法和装置,以解决无法保证求解出的关键节点的质量或求解关键节点时效率低下的问题。
5.为了解决上述问题,本技术采用了以下的技术方案:
6.第一方面,本技术实施例提供了一种高速图数据流在线分析方法,所述方法包括:
7.在图数据流出现新增边的情况下,基于n个流样本,获取目标节点集合;所述目标节点集合包括所述n个流样本中影响力发生改变的目标节点;所述n个流样本为预先对所述图数据流中的边进行随机采样得到的;n为大于等于1的整数;
8.基于所述目标节点集合中所述目标节点的影响力的最大值,对历史阈值集合中的阈值进行更新,得到当前阈值集合;其中,所述当前阈值集合中包括多个阈值,不同的阈值对应不同的候选节点集合,所述候选节点集合由满足对应的阈值的节点构成,不同候选节点集合包括的节点部分不同;
9.基于所述当前阈值集合和所述历史阈值集合各自对应的阈值,对所述当前阈值集合中每个阈值对应的候选节点集合进行更新;
10.将所述目标节点集合中满足预设加入条件的目标节点加入到对应的候选节点集合中;
11.将影响力最大的候选节点集合确定为当前时刻的关键节点集合。
12.在本技术一实施例中,在图数据流出现新增边的情况下,在图数据流出现新增边的情况下,基于n个流样本,获取目标节点集合,包括:
13.对所述新增边进行采样,得到所述新增边对应的i-set集合;所述i-set集合用于表征所述新增边存在于m个目标流样本中,所述m个目标流样本为所述n个流样本中的部分或全部;
14.将所述m个目标流样本中影响力发生改变的节点确定为所述目标节点;
15.基于所述目标节点,得到所述目标节点集合。
16.在本技术一实施例中,基于所述目标节点集合中所述目标节点的影响力的最大值,对历史阈值集合中的阈值进行更新,得到当前阈值集合,包括:
17.基于所述目标节点集合中所述目标节点的影响力的最大值,对影响力参数进行更新;
18.基于所述更新之后的影响力参数,对历史阈值集合中的阈值进行更新,得到当前阈值集合。
19.在本技术一实施例中,基于所述当前阈值集合和所述历史阈值集合各自对应的阈值,对所述当前阈值集合中每个阈值对应的候选节点集合进行更新,包括:
20.针对属于所述历史阈值集合而不属于所述当前阈值集合的第一阈值,将所述第一阈值对应的候选节点集合删除;
21.针对不属于所述历史阈值集合而属于所述当前阈值集合的第二阈值,生成所述第二阈值对应的初始候选节点集合,所述初始候选节点集合为空集合;
22.针对同时属于所述历史阈值集合和所述当前阈值集合的第三阈值,保留所述第三阈值对应的候选节点集合;
23.将所述第二阈值对应的初始候选节点集合和所述第三阈值对应的候选节点集合,确定为更新后的候选节点集合。
24.在本技术一实施例中,将所述目标节点集合中满足预设加入条件的目标节点加入到对应的候选节点集合中,包括:
25.获取集合大小小于预设值的候选节点集合;
26.针对所述目标节点集合中的每个目标节点,判断所述目标节点加入所述候选节点集合后的效用增益是否大于等于所述当前阈值集合中的至少一个阈值;所述效用增益表示第一影响力与第二影响力之间的差值,所述第一影响力为所述候选节点集合加入所述目标节点之后的影响力大小,所述第二影响力为所述候选节点集合加入所述目标节点之前的影响力大小;
27.若是,则将所述目标节点加入所述至少一个阈值各自对应的候选节点集合中。
28.在本技术一实施例中,在所述图数据流中的节点存活时间有限且参与计算的概率随时间推移而不断下降的情况下,所述方法还包括:
29.获取所述新增边的预设最大生命周期;所述预设最大生命周期由l个时间节点构成,l为大于等于1的整数;
30.对所述新增边的生命周期进行采样,得到n个预估生命周期;不同的预估生命周期表征所述新增边在n个流样本中的不同存活期限;n为大于等于1的整数;
31.基于所述n个生命周期,得到与l个时间节点一一对应的l个i-set集合,所述i-set集合用于表征在对应时间节点所述新增边在n个流样本中的存活情况;
32.创建所述l个时间节点各自对应的任务实例,得到l个任务实例;
33.将所述l个时间节点的任一时间节点作为当前时刻,当所述当前时刻到来时,以使所述当前时刻对应的任务实例基于所述当前时刻对应的i-set集合,输出所述当前时刻的关键节点集合。
34.在本技术一实施例中,所述方法还包括:
35.在时间节点上相邻的至少两个i-set集合相同的情况下,对所述至少两个i-set集合进行合并操作,得到多个时间段,并使每个时间段对应一个i-set集合;
36.针对每个时间段,基于所述时间段对应的i-set集合,构建所述时间段对应的任务实例;以使在当前时刻处于所述时间段的期间,所述任务实例基于所述时间段对应的i-set集合,输出所述当前时刻的关键节点集合。
37.在本技术一实施例中,所述方法还包括:
38.将任一时间段对应的任务实例作为当前任务实例,获取所述当前任务实例和依次相邻的后继任务实例的效用;所述后继任务实例对应的时间段在所述当前任务实例对应的时间段之后;所述效用表示所述任务实例输出的关键节点集合的影响力大小;
39.基于所述所述当前任务实例和依次相邻的后继任务实例的效用,判断所述后继任务实例是否满足预设冗余条件;
40.若是,则确定所述后继任务实例为所述当前任务实例的冗余任务实例;
41.将所述当前任务实例和最远冗余任务实例之间的冗余任务实例删除;所述最远冗余任务实例为时间段距离所述当前任务实例的时间段最远的冗余任务实例。
42.在本技术一实施例中,所述预设冗余条件为:
[0043][0044]
式中:为后继任务实例的效用;为当前任务实例的效用,βi为当前任务实例对应的不确定性参数,∈为预设参数。
[0045]
第二方面,基于相同发明构思,本技术实施例提供了一种高速图数据流在线分析装置,所述装置包括:
[0046]
目标节点集合获取模块,用于在图数据流出现新增边的情况下,基于n个流样本,获取目标节点集合;所述目标节点集合包括所述n个流样本中影响力发生改变的目标节点;所述n个流样本为预先对所述图数据流中的边进行随机采样得到的;n为大于等于1的整数;
[0047]
阈值集合更新模块,用于基于所述目标节点集合中所述目标节点的影响力的最大值,对历史阈值集合中的阈值进行更新,得到当前阈值集合;其中,所述当前阈值集合中包括多个阈值,不同的阈值对应不同的候选节点集合,所述候选节点集合由满足对应的阈值的节点构成,不同候选节点集合包括的节点部分不同;
[0048]
候选节点集合更新模块,用于基于所述当前阈值集合和所述历史阈值集合各自对应的阈值,对所述当前阈值集合中每个阈值对应的候选节点集合进行更新;
[0049]
节点加入模块,用于将所述目标节点集合中满足预设加入条件的目标节点加入到对应的候选节点集合中;
[0050]
关键节点集合确定模块,用于将影响力最大的候选节点集合确定为当前时刻的关键节点集合。
[0051]
在本技术一实施例中,所述目标节点集合获取模块包括:
[0052]
第一采样子模块,用于对所述新增边进行采样,得到所述新增边对应的i-set集合;所述i-set集合用于表征所述新增边存在于m个目标流样本中,所述m个目标流样本为所述n个流样本中的部分或全部;
[0053]
目标节点确定子模块,用于将所述m个目标流样本中影响力发生改变的节点确定为所述目标节点;
[0054]
目标节点集合子模块,用于基于所述目标节点,得到所述目标节点集合。
[0055]
在本技术一实施例中,所述阈值集合更新模块包括:
[0056]
第一更新子模块,用于基于所述目标节点集合中所述目标节点的影响力的最大值,对影响力参数进行更新;
[0057]
第二更新子模块,用于基于所述更新之后的影响力参数,对历史阈值集合中的阈值进行更新,得到当前阈值集合。
[0058]
在本技术一实施例中,所述候选节点集合更新模块包括:
[0059]
第一集合更新子模块,用于针对属于所述历史阈值集合而不属于所述当前阈值集合的第一阈值,将所述第一阈值对应的候选节点集合删除;
[0060]
第二集合更新子模块,用于针对不属于所述历史阈值集合而属于所述当前阈值集合的第二阈值,生成所述第二阈值对应的初始候选节点集合,所述初始候选节点集合为空集合;
[0061]
第三集合更新子模块,用于针对同时属于所述历史阈值集合和所述当前阈值集合的第三阈值,保留所述第三阈值对应的候选节点集合;
[0062]
候选节点集合确定子模块,用于将所述第二阈值对应的初始候选节点集合和所述第三阈值对应的候选节点集合,确定为更新后的候选节点集合;
[0063]
在本技术一实施例中,所述节点加入模块包括:
[0064]
第一判断子模块,用于获取集合大小小于预设值的候选节点集合;
[0065]
第二判断子模块,用于针对所述目标节点集合中的每个目标节点,判断所述目标节点加入所述候选节点集合后的效用增益是否大于等于所述当前阈值集合中的至少一个阈值;所述效用增益表示第一影响力与第二影响力之间的差值,所述第一影响力为所述候选节点集合加入所述目标节点之后的影响力大小,所述第二影响力为所述候选节点集合加入所述目标节点之前的影响力大小;
[0066]
节点加入子模块,用于在目标节点加入所述候选节点集合后的效用增益大于等于所述当前阈值集合中的至少一个阈值的情况下,将所述目标节点加入所述至少一个阈值各自对应的候选节点集合中。
[0067]
在本技术一实施例中,在所述图数据流中的节点存活时间有限且参与计算的概率随时间推移而不断下降的情况下,所述装置还包括:
[0068]
生命周期获取模块,用于获取所述新增边的预设最大生命周期;所述预设最大生
命周期由l个时间节点构成,l为大于等于1的整数;
[0069]
生命周期采样模块,用于对所述新增边的生命周期进行采样,得到n个预估生命周期;不同的预估生命周期表征所述新增边在n个流样本中的不同存活期限;n为大于等于1的整数;
[0070]
i-set集合获取模块,用于基于所述n个生命周期,得到与l个时间节点一一对应的l个i-set集合,所述i-set集合用于表征在对应时间节点所述新增边在n个流样本中的存活情况;
[0071]
任务实例创建模块,用于创建所述l个时间节点各自对应的任务实例,得到l个任务实例;
[0072]
第一关键节点集合输出模块,用于将所述l个时间节点的任一时间节点作为当前时刻,当所述当前时刻到来时,以使所述当前时刻对应的任务实例基于所述当前时刻对应的i-set集合,输出所述当前时刻的关键节点集合。
[0073]
在本技术一实施例中,所述装置还包括:
[0074]
i-set集合合并模块,用于在时间节点上相邻的至少两个i-set集合相同的情况下,对所述至少两个i-set集合进行合并操作,得到多个时间段,并使每个时间段对应一个i-set集合;
[0075]
第二关键节点集合输出模块,用于针对每个时间段,基于所述时间段对应的i-set集合,构建所述时间段对应的任务实例;以使在当前时刻处于所述时间段的期间,所述任务实例基于所述时间段对应的i-set集合,输出所述当前时刻的关键节点集合。
[0076]
在本技术一实施例中,所述装置还包括:
[0077]
实例效用获取模块,用于将任一时间段对应的任务实例作为当前任务实例,获取所述当前任务实例和依次相邻的后继任务实例的效用;所述后继任务实例对应的时间段在所述当前任务实例对应的时间段之后;所述效用表示所述任务实例输出的关键节点集合的影响力大小;
[0078]
冗余判断模块,用于基于所述所述当前任务实例和依次相邻的后继任务实例的效用,判断所述后继任务实例是否满足预设冗余条件;
[0079]
冗余确定模块,用于在后继任务实例满足预设冗余条件的情况下,确定所述后继任务实例为所述当前任务实例的冗余任务实例;
[0080]
删除模块,用于将所述当前任务实例和最远冗余任务实例之间的冗余任务实例删除;所述最远冗余任务实例为时间段距离所述当前任务实例的时间段最远的冗余任务实例。
[0081]
在本技术一实施例中,所述预设冗余条件为:
[0082][0083]
式中:为后继任务实例的效用;为当前任务实例的效用,βi为当前任务实例对应的不确定性参数,∈为预设参数。
[0084]
与现有技术相比,本技术包括以下优点:
[0085]
本技术实施例提供的一种高速图数据流在线分析方法,通过对图数据流中的边进行随机采样,可得到能够提供期望的无偏估计的n个流样本,使得在求解关键节点时,仅需
考虑n个流样本中影响力发生改变的目标节点即可,而无需遍历图数据流中所有的节点,大大降低了计算的复杂性,提高计算效率;同时,本技术实施例通过对阈值集合以及每个阈值对应的候选节点集合进行维护,能在图数据流出现新增边时,基于目标节点,对阈值集合以及每个阈值对应的候选节点集合进行更新,并将目标节点针对性的加入对应的候选节点集合中,最后将影响力最大的候选节点集合确定当前时刻的关键节点集合,在提高求解关键节点集合的效率的同时,能够有效保证求解出的关键节点集合的质量。
附图说明
[0086]
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
[0087]
图1是本技术一实施例中节点影响范围示意图。
[0088]
图2是本技术一实施例中概率衰减流模型上流样本的采样示意图。
[0089]
图3是本技术一实施例中sievepait算法的步骤流程图。
[0090]
图4是本技术一实施例中sievepait算法思想示意图。
[0091]
图5是本技术一实施例中i-set集合衰减过程示意图。
[0092]
图6是本技术一实施例中basicit算法思想的示意图。
[0093]
图7是本技术一实施例中basicit算法的处理示例图。
[0094]
图8是本技术一实施例中概率衰减流模型上i-set集合的变化情况示意图。
[0095]
图9是本技术一实施例中histit-seg算法的处理示例图。
[0096]
图10是本技术一实施例中一种高速图数据流在线分析装置的功能模块示意图。
[0097]
附图标记:1000-高速图数据流在线分析装置;1001-目标节点集合获取模块;1002-阈值集合更新模块;1003-候选节点集合更新模块;1004-节点加入模块;1005-关键节点集合确定模块。
具体实施方式
[0098]
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
[0099]
为便于理解,下面对本技术实施例中的相关术语概念进行介绍。
[0100]
1)图
[0101]
图的定义如下:
[0102]
g=(v,e)
ꢀꢀꢀꢀꢀꢀꢀꢀ
(1);
[0103]
式中,v表示节点的集合,e表示边的集合。
[0104]
需要说明的是,图(graph)结构是一种非线性的数据结构,图结构在实际生活中有很多例子,比如交通运输网,地铁网络,社交网络,计算机中的状态执行(自动机)等等都可以抽象成图结构。图结构是比树结构复杂的非线性结构。其中,所有的顶点构成一个顶点集
合,所有的边构成边的集合,一个完整的图结构就是由顶点集合和边集合组成。
[0105]
2)图数据流
[0106]
图数据流表示t时刻图数据流中的边集合,定义如下:
[0107][0108]
式中,a表示边,ta为边a的时间戳,图数据流体现了数据的无界性,因而图g是动态的,随着时间增长是不断变化的。
[0109]
3)节点的影响范围
[0110]
给定图g,节点u的影响范围是节点u可达的节点集合,定义如下:
[0111][0112]
式中,u

v表示节点u到节点v是可达的。
[0113]
参照图1,示出了节点影响范围示意图,如图可以得到每个节点的影响范围,如节点u1可达到u1到u7中的任一节点,则节点u1的影响力范围为σ(u1)={u1,u2,u3,u4,u5,u6,u7};节点u6仅可达到u7,则节点u6的影响力范围为σ(u6)={u6,u7}。
[0114]
一组节点集合s的影响范围定义为每个节点影响范围的并集,定义如下:
[0115][0116]
为了评估节点集合s的影响力大小,可以使用函数f将影响范围映射为非负实数,用公式表示如下:
[0117][0118]
其中,函数f是一个单调的子模函数,它具有收益递减性质。如果v是一个集合,对所有的f(x)≤f(y),则称函数f是单调的。如果对所有的对所有v满足v∈v\y,有f(x∪{v})-f(x)≥f(y∪{v})-f(y),则称函数f是子模的。v增加到集合y中的所带来的增益不会大于v增加到集合x中所带来的增益,即收益递减性质。
[0119]
示例性的,继续参照图1,利用公式(5)的函数f可以将u1的影响力范围映射为非负实数7,即节点u1的影响力大小为7;同理,节点u6的影响力大小为2。
[0120]
需要说明的是,函数f只是其中的一个示例,可以采用其他函数将节点的影响范围进行映射,以对节点的影响范围进行表征。
[0121]
4)蒙特卡洛方法
[0122]
蒙特卡洛方法,是一种根据某已知分布的概率密度函数,产生服从此分布的样本的方法。在本实施方式中,蒙特卡洛方法用n个流样本去表征原始所有可能的情况,该n个流样本可通过多种采样方式得到。对每个流样本,可构建一个图,在此基础上计算
[0123]
表示图数据流中边参与计算所生成的所有可能的流样本情况,定义如下:
[0124][0125]
式中,表示对图数据流所采样得到的流样本。
[0126]
每个流样本以如下概率出现:
[0127][0128]
式中,1(
·
)是一个指示函数,其中1(true)=1,1(false)=0,p
t
(a)表示边a在t时刻参与关键节点计算的概率。
[0129]
如图2所示,在概率衰减流模型(概率衰减流模型的特征是,图数据流中所有的边都有机会参与计算,但新的边比旧的边有更大的概率参与计算)下进行蒙特卡洛采样,根据原始图数据流采样得到三个流样本,图数据流中的每条边以概率p
t
(a)被包含在一个流样本中。
[0130]
蒙特卡洛方法表示,一组独立于同一分布的样本可以提供期望的无偏估计。给定即通过原始的图数据流采样得到的n个流样本的集合。对节点集合效用(即影响力)的计算,通过以下公式:
[0131][0132]
式中,n为流样本的个数,s为节点集合,为t时刻的第i个流样本,表示节点集合s在中的影响力大小。
[0133]
5)图数据流中关键节点识别
[0134]
基于以上定义,便可将图数据流中关键节点识别的问题便可转化为以下问题进行求解,给定图数据流基于给定概率模型,在任意查询时刻t给出k个影响力最大的节点集合此问题用公式表示如下:
[0135][0136]
式中,为图数据流,s为关键节点集合,h为给定的概率函数,的含义是在给定概率模型上关键节点集合s的影响力大小。
[0137]
需要说明的是,当概率函数h为常数时,则是一般的增长流模型,即图数据流中所有的边参与计算的概率不变;当概率函数h为衰减函数时,图数据流中所有的边都有机会参与计算,但新的边比旧的边有更大的概率参与计算。
[0138]
为在求解关键节点集合时,在保证求解出的关键节点集合的质量的同时,有效提高求解效率,本技术提供一种高速图数据流在线分析方法,旨在任意时刻跟踪当前的一组影响力最大化的关键节点集合,该方法包括sievepait算法,basicit算法,histit-seg算法,histit-red算法。
[0139]
下面首先对sievepait算法进行说明。
[0140]
参照图3,示出了本技术高速图数据流在线分析方法中的sievepait算法的步骤流程图,该算法可以包括以下步骤:
[0141]
s101:在图数据流出现新增边的情况下,基于n个流样本,获取目标节点集合。
[0142]
在本实施方式中,目标节点集合包括n个流样本中影响力发生改变的目标节点;n个流样本为预先对图数据流中的边进行随机采样得到的;n为大于等于1的整数。
[0143]
需要说明的是,图结构作为结构复杂的非线性结构,当图数据流出现新增边时,基于影响传播过程的复杂性,将难以确定图数据流中每条边参与计算的情况,假设当前图数据流中有m条边,若考虑每条边的参与情况,从而构成的图,共有种2m种情况,使得计算复杂度非常高。
[0144]
在本实施方式中,基于蒙特卡洛方法,对图数据流中的边进行采样,可得到能够提供期望的无偏估计的n个流样本,也就是说,采样得到的这n个流样本能够有效表征整个图数据流,进而在求解关键节点时,仅需考虑n个流样本中影响力发生改变的目标节点即可,而无需遍历图数据流中所有的节点,不仅可以大大降低计算的复杂性,提高计算效率,还能保证后续求解到的关键节点的质量。
[0145]
具体而言,s101具体可以包括以下子步骤:
[0146]
s101-1:对新增边进行采样,得到新增边对应的i-set集合;i-set集合用于表征新增边存在于m个目标流样本中,m个目标流样本为n个流样本中的部分或全部。
[0147]
在本实施方式中,对图数据流中的新增边a进行采样,可以快速确定该新增边a存在于n个流样本中的哪些流样本中,本实施方式可以具体使用蒙特卡洛方法对新增边a进行采样,可得到集合i-set,并使用i(a)表示此集合。通过i-set可知道新增边a存在于哪些流样本中,i∈i(a)表示流样本中包含边a。
[0148]
需要说明的是,i-set集合为下标集合,下标为对应流样本的编号,示例性的,当n=3时,即在图数据流出现新增边之前,预先对图数据流中的边进行随机采样得到有3个流样本,分别为第一流样本第二流样本和第三流样本对新增边a进行蒙特卡洛采样,得到i-set集合为{1,2},则表示新增边a存在于第一流样本和第二流样本中,第一流样本和第二流样本即为新增边a对应的2个目标流样本。
[0149]
s101-2:将m个目标流样本中影响力发生改变的节点确定为目标节点。
[0150]
s101-3:基于目标节点,得到目标节点集合。
[0151]
在本实施方式中,对于新增边a的加入,将导致m个目标流样本中的节点的影响力发生改变。
[0152]
在一个例子中,以社交网络为例,当前时刻社交网络中产生了新用户a,该用户a与某个流样本中的老用户b建立关联,如新用户a关注了老用户b,则用户a与老用户b相当于社交网络中的节点,用户a与老用户b之间的关联相当于产生的新增边a,对老用户b而言,老用户b能到达的节点新增了新用户a,即老用户b的影响力大小随着新增边a的到来而增大了,则该老用户b即为其中的一个目标节点。
[0153]
s102:基于目标节点集合中目标节点的影响力的最大值,对历史阈值集合中的阈值进行更新,得到当前阈值集合。
[0154]
在本实施方式中,用va表示目标节点集合,v表示va中的目标节点,s102具体可以包括以下子步骤:
[0155]
s102-1:基于目标节点集合中目标节点的影响力的最大值,对影响力参数进行更新。
[0156]
具体的,可以按照以下公式,对影响力参数进行更新:
[0157][0158]
式中:为目标节点集合中目标节点的影响力的最大值,δ’为更新之前的影响力参数,δ为更新之后的影响力参数。
[0159]
在本实施方式中,δ用于表征当前时刻图数据流中所观测到的所有影响力变化的节点的影响力的最大值,其中,所有影响力变化的节点除了包括当前时刻对应的n个流样本中影响力发生改变的目标节点,还包括在历史时刻上影响力发生改变的历史节点。也就是说,当目标节点的影响力的最大值小于等于历史节点的影响力的最大值时,δ保持为历史节点的影响力的最大值不变,当目标节点的影响力的最大值大于历史节点的影响力的最大值时,δ更新为目标节点的影响力的最大值。
[0160]
s102-1:于更新之后的影响力参数,对历史阈值集合中的阈值进行更新,得到当前阈值集合。
[0161]
具体的,可以按照以下公式,对历史阈值集合中的阈值进行更新:
[0162][0163]
式中:k为所要选取的关键节点个数;∈为预设参数;δ为更新之后的影响力参数;θ

为当前阈值集合。
[0164]
需要说明的是,k即为sievepait算法中所要求解的关键节点集合的大小,预设参数∈保证了sievepait算法的解的质量。
[0165]
在本实施方式中,当前阈值集合中包括多个阈值,不同的阈值对应不同的候选节点集合,候选节点集合由满足对应的阈值的节点构成,不同候选节点集合包括的节点部分不同。
[0166]
在本实施方式中,若用s
θ
表示候选节点集合,则当前阈值集合中每个阈值均对应维护一个候选节点集合s
θ
。候选节点集合s
θ
为潜在的关键节点集合,待目标节点集合中满足预设加入条件的目标节点加入到对应的候选节点集合中,最终选取影响力最大的候选节点集合s
θ
作为当前时刻的关键节点集合。
[0167]
s103:基于当前阈值集合和历史阈值集合各自对应的阈值,对当前阈值集合中每个阈值对应的候选节点集合进行更新。
[0168]
需要说明的是,由于每个阈值均对应维护一个候选节点集合s
θ
。当阈值发生改变,那么对应维护的候选节点集合s
θ
也将发生改变。
[0169]
参照公式(11)可知,当δ发生改变之后,满足条件的i值也将发生改变,根据i值计算得到的阈值也将发生改变,改变之后的当前阈值与改变之前的历史阈值相比,可能存在值域相交的情形,即存在以下三种阈值:1)第一阈值:属于历史阈值集合而不属于当前阈值集合的阈值;2)第二阈值:不属于历史阈值集合而属于当前阈值集合的阈值;3)第三阈值:同时属于历史阈值集合和当前阈值集合的第三阈值。
[0170]
需要说明的是,由于公式(11)为单调递增函数,因此,上述三种阈值存在以下关系:第二阈值>第三阈值>第一阈值。
[0171]
在本实施方式中,针对以上三种阈值,具体可以按照以下子步骤对当前阈值集合中每个阈值对应的候选节点集合进行更新:
[0172]
s103-1:针对属于历史阈值集合而不属于当前阈值集合的第一阈值,将第一阈值对应的候选节点集合删除。
[0173]
在本实施方式中,由于第一阈值并不属于当前阈值集合中阈值的一部分,因此,将直接对这部分阈值所维护的候选节点集合进行删除。
[0174]
s103-2:针对不属于历史阈值集合而属于当前阈值集合的第二阈值,生成第二阈值对应的初始候选节点集合,初始候选节点集合为空集合。
[0175]
在本实施方式中,相较与历史阈值集合中的阈值,第二阈值属于新增的阈值,且这部分阈值均大于历史阈值集合中的阈值。针对这部分阈值,将给定一个空的初始候选节点集合,以使满足第二阈值的目标节点能够加入到初始候选节点集合。
[0176]
s103-3:针对同时属于历史阈值集合和当前阈值集合的第三阈值,保留第三阈值对应的候选节点集合。
[0177]
在本实施方式中,第三阈值属于当前阈值集合与历史阈值集合的交集,针对这部分阈值所维护的候选节点集合,将进行保留操作。
[0178]
s103-4:将第二阈值对应的初始候选节点集合和第三阈值对应的候选节点集合,确定为更新后的候选节点集合。
[0179]
在本实施方式中,将第二阈值对应的初始候选节点集合和第三阈值对应的候选节点集合进行合并之后,便可得到更新后的候选节点集合。
[0180]
s104:将目标节点集合中满足预设加入条件的目标节点加入到对应的候选节点集合中。
[0181]
在本实施方式中,针对影响力范围发生改变的目标节点v,可以通过|s
θ
|和δ(v|s
θ
)的值来判断目标节点v是否可以加入其中的一个或者多个候选节点集合s
θ
,其中,|s
θ
|表示候选节点集合s
θ
的集合大小,δ(v|s
θ
)表示目标节点加入候选节点集合后的效用增益。
[0182]
在本实施方式中,s104具体可以包括以下子步骤:
[0183]
s104-1:获取集合大小小于预设值的候选节点集合。
[0184]
在本实施方式中,预设值可以设置为k,即所要选取的关键节点个数。也就是说当候选节点集合s
θ
满足|s
θ
|《k,则说明候选节点集合s
θ
还可以继续加入目标节点。
[0185]
s104-2:针对目标节点集合中的每个目标节点,判断目标节点加入候选节点集合后的效用增益是否大于等于当前阈值集合中的至少一个阈值。
[0186]
需要说明的是,效用增益表示第一影响力与第二影响力之间的差值,第一影响力为候选节点集合加入目标节点之后的影响力大小,第二影响力为候选节点集合加入目标节点之前的影响力大小。
[0187]
具体而言,目标节点v的效用增益可以按照以下公式进行计算:
[0188]
δ(v|s
θ
)=f
t
(s
θ
∪{v})-f
t
(s
θ
)
ꢀꢀꢀꢀꢀꢀ
(12);
[0189]
式中,f
t
(s
θ
)表示第二影响力,即t时刻候选节点集合s
θ
的影响力大小,f
t
(s
θ
∪{v})表示第一影响力,即候选节点集合s
θ
加入目标节点v之后的影响力大小。
[0190]
更为具体的,公式(12)可以等效为以下计算公式:
[0191][0192]
s104-3:若是,则将目标节点加入至少一个阈值各自对应的候选节点集合中。
[0193]
需要说明的是,对于一个目标节点v而言,能够满足公式(12)的候选节点集合s
θ
可能存在多个,这种情况下,将把目标节点v加入所有满足公式(12)的候选节点集合s
θ
中。
[0194]
s105:将影响力最大的候选节点集合确定为当前时刻的关键节点集合。
[0195]
在本实施方式中,在对目标节点集合中所有的目标节点都处理完之后,基于各个候选节点集合中各个节点对应的影响力,按照公式(5)计算出整个候选节点集合的影响力大小,最终选取这些候选节点集合中的影响力最大的候选节点集合作为当前时刻的关键节点集合其中,关键节点集合对应的阈值θ
*
的具体计算公式如下:
[0196]
θ
*
=argmax
θ∈θft
(s
θ
)
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(14);
[0197]
式中,f
t
(s
θ
)表示t时刻s
θ
的影响力大小,θ
*
表示影响力最大的关键节点集合对应的阈值。
[0198]
参照图4,示出了sievepait算法思想示意图,针对新增边a,首先进行采样得到新增边a对应的i-set集合,以确定新增边a存在于哪些流样本中;再基于i-set集合得到由流样本中影响力发生改变的目标节点构成的目标节点集合;然后基于目标节点集合对阈值集合以及每个阈值对应的候选节点集合进行更新,最后在候选节点集合中选取影响力最大的候选节点集合作为当前时刻的关键节点集合。
[0199]
在本实施方式中,sievepait算法通过对阈值集合以及每个阈值对应的候选节点集合进行维护,每当图数据流出现新增边时,再对阈值集合以及每个阈值对应的候选节点集合进行更新,更新的过程即为对阈值以及候选节点集合的不断优化过程,使得阈值集合和候选节点集合能够不断适应图数据流的变化,进而得到当前时刻对应的关键节点集合,并保证求解出的关键节点集合的质量;同时,基于蒙特卡洛方法对图数据流中的边进行采样,可得到能够提供期望的无偏估计的n个流样本,使得在求解关键节点时,仅需考虑n个流样本中影响力发生改变的目标节点即可,而无需遍历图数据流中所有的节点,在保证求解出的关键节点集合的质量的同时,还能大大降低计算的复杂性,提高计算效率。
[0200]
在一个可行的实施方式中,在sievepait算法的基础上,提供basicit算法。
[0201]
下面对basicit算法进行说明。
[0202]
首先需要说明的是,basicit算法适用于概率衰减流模型,概率衰减流模型的特征是:图数据流中所有的边都有机会参与计算,但新的边比旧的边有更大的概率参与计算。随着时间的推移,每条边参与计算的概率都在下降,所以旧的数据能够以一种平滑的方式被遗忘。
[0203]
针对图数据流s
t
中的边,新的边应当以较大的概率参与计算,而旧的边以较小的概率参与计算。
[0204]
对图数据流中每条边a,a的参与概率用公式表示为:
[0205]
[0206]
其中h是一个非递增的衰减函数,函数值的范围为ta表示新增边a到来的时间。
[0207]
在本实施方式中,将使用指数衰减函数来说明概率衰减流模型下的basicit算法,需要说明的是,basicit算法也适用于其他的衰减函数。给定指数衰减函数,该指数衰减函数定义如下:
[0208]
h(x)=p0e-λx
(0≤p0≤1,λ≥0)
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(16);
[0209]
式中,p0为边初始参与计算的概率,λ为预设参数,该参数控制了图数据流中边衰减速度的快慢。
[0210]
其中,边a的生命周期la,服从如下分布:
[0211][0212]
式中,p0为新增边a初始参与计算的概率,l表示生命周期长度。
[0213]
需要说明的是,若假设新增边a的最大生命周期为l,则新增边a的生命周期la包括0、1、2、...、l-1在内的l时间节点,且时间节点越靠后,其参与计算的概率越低,直到最后在时间节点l降为零,该新增边a以一种平滑的方式消失。
[0214]
在本实施方式中,当一条新增边a到来时,对新增边a的生命周期进行采样,具体可以采用蒙特卡洛方法进行采样,得到n个预估生命周期,通过这n个预估生命周期,可得到l个i-set集合。
[0215]
示例性的,给定流样本集合新增边a在时刻t=ta+l的i-set集合表示:
[0216][0217]
式中,表示t时刻第i个流样本,表示新增边a在第i个流样本中的生命周期长度,t时刻,只有当时,新增边a才会被包含在流样本中。
[0218]
用表示t时刻图数据流中所有边的非空i-set的集合,具体定义如下:
[0219][0220]
图5中给出了边的i-set集合衰减的一个具体例子,边a1,a2,a3的i-set集合随着时间会收缩。a1在t-2时刻到来,其i-set集合为i0(a1),在t-1时刻,a1的i-set集合收缩为i1(a1),同时a2到来,其i-set集合为i0(a2),在时刻t,a3到来,其i-set集合为i0(a3),同时,a1和a2的i-set集合分别收缩为i2(a1)和i1(a2)。
[0221]
需要进一步说明的是,某条边对应的i-set集合收缩指在预设数量如n个流样本中,随着时间推移,存在该条边的流样本的数量不断减少,示例性的,继续参照图5,对边a1而言,t-2时刻对应的i-set集合i0(a1)={1,2,3},表示边a1存在于下标编号为1、2和3的三个流样本中,t-1时刻收缩为i1(a1)={1,2},表示在t-1时刻边a1已不存在于下标编号为3的流样本中。
[0222]
具体而言,针对上述的概率衰减流模型,即在图数据流中的节点存活时间有限且参与计算的概率随时间推移而不断下降的情况下,basicit算法可以包括以下步骤:
[0223]
s201:获取新增边的预设最大生命周期;预设最大生命周期由l个时间节点构成,l为大于等于1的整数。
[0224]
s202:对新增边的生命周期进行采样,得到n个预估生命周期;不同的预估生命周期表征新增边在n个流样本中的不同存活期限;n为大于等于1的整数。
[0225]
s203:基于n个生命周期,得到与l个时间节点一一对应的l个i-set集合,i-set集合用于表征在对应时间节点新增边在n个流样本中的存活情况。
[0226]
s204:创建l个时间节点各自对应的任务实例,得到l个任务实例。
[0227]
s205:将l个时间节点的任一时间节点作为当前时刻,当当前时刻到来时,以使当前时刻对应的任务实例基于当前时刻对应的i-set集合,输出当前时刻的关键节点集合。
[0228]
在本实施方式中,参照图6,示出了basicit算法思想示意图,basicit算法将在新增边a到来后,将在l个时间节点维护l个任务实例,该任务实例即为基于sievepait算法构建的sievepait实例,每个sievepait实例用于在对应时间节点到来时,输出对应的关键节点集合,用表示。对新增边a,得到l个i-set集合,用表示。对这l个sievepait实例,每个sievepait实例需要处理对应的i-set集合i
l
(a),
[0229]
继续参照图6,以t时刻为当前时刻,当t时刻到来时,t时刻对应的i-set集合i0(a)输入对应的sievepait实例a0,以使sievepait实例a0基于i-set集合i0(a),输出当前时刻的关键节点集合随着时间推移,重置l个sievepait实例循环左移,进而在每个时间节点输出对应的关键节点集合。
[0230]
参照图7,示出了basicit算法的处理示例图,给定l=3,则需要维护三个sievepait实例对边a1,将新增边a1的三个i-set集合分别作为三个sievepait实例的输入,实例输出的即是当前时刻的一组关键节点集合。然后重置实例实例循环左移。后续又出现另外的新增边a2,a3,则对a2,a3采取同样的处理过程。
[0231]
在本实施方式中,basicit算法适用于边的生命周期较小的场景,即元素衰减速度较快的时候,basicit算法考虑了边的参与计算概率与时效性的关系,使得图数据流中的边以一种平滑的方式被遗忘,保证了所选取的关键节点集合的质量与求解效率,能够在任意时刻跟踪当前的一组关键节点集合。
[0232]
在一个可行的实施方式中,针对边衰减速度较慢的图数据流,在basicit算法的基础上进行优化,提供histit-seg算法。
[0233]
下面对histit-seg算法进行说明。
[0234]
histit-seg算法具体可以包括以下步骤:
[0235]
s301:在时间节点上相邻的至少两个i-set集合相同的情况下,对至少两个i-set集合进行合并操作,得到多个时间段,并使每个时间段对应一个i-set集合;
[0236]
s302:针对每个时间段,基于时间段对应的i-set集合,构建时间段对应的任务实例;以使在当前时刻处于时间段的期间,任务实例基于时间段对应的i-set集合,输出当前时刻的关键节点集合。
[0237]
需要说明的是,histit-seg算法的思想是在basicit算法中减少相同sievepait实例的个数,从而提高算法效率。该思想无需维护l个sievepait实例,只维护少量sievepait
实例即可。
[0238]
在本实施方式中,l个sievepait实例用集合l
t
表示,定义如下:
[0239][0240]
其中表示t时刻sievepait实例对应索引值,可以理解为sievepait实例的编号,1
t
可以理解为由编号构成的索引集。
[0241]
需要说明的是,对一条边a,无论其生命周期l有多大,其不同的非空i-set集合个数最多有n个,n为流样本的数量。以3个流样本为例,边a最多有3种i-set集合,即{1}、{1,2}、{1,2,3}。
[0242]
在本实施方式中,将时间上连续且相同的i-set集合分为一个时间段,则每条边的i-set最多可以分为n个时间段。参照图8,示出了概率衰减流模型上i-set集合的变化情况,从图中可以看出i0(a)=i1(a),i2(a)=i3(a)=i4(a),i5(a)=i6(a)。
[0243]
在本实施方式中,每条边a的第i个段用时间段[li(a),ri(a)]表示,用区间表示时间段,则图7中边a共有三个区间,分别为[0,1],[2,4],[5,6],三个时间段包括三个不同的i-set集合。
[0244]
对那些i-set集合相同的sievepait实例来说,它们给出的输出也是相同的,因此只需要维护一个sievepait实例即可。所维护的实例的索引集合表示为:
[0245]
l
t
={ri(a)}
1≤i≤n
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(20);
[0246]
参照图9,示出了histit-seg算法的处理示例图,其中,图9(a)中给出了边a1的处理过程,边a1只有两个时间段,包括seg1和seg2,维护两个sievepait实例,用表示,其中l∈{r1(a1),r2(a1)}。
[0247]
在具体实现中,对边a的每个时间段[l,r],如果则需要创建一个新的此通过复制其最近的后继实例创建,即在l
t-1
中满足l*》r的最小l
*
。具体地,l
*
的计算方式如下:
[0248]
l
*
=min{l|l》r∧l∈l
t-1
}
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(21);
[0249]
如果这个段没有后继实例存在,则创建一个新的sievepait实例然后将该sievepait实例对应的下标索引r加入l
t-1
。最后,对每个l∈l
t-1
集合中的索引对应的sievepait实例,将使用l所在的段的i-set集合进行更新。
[0250]
继续参照图9,其中,图9(b)给出了a2的处理过程,t时刻又一边a2到来,在t-1时刻对边a1进行了更新,则l
t-1
={r1(a1),r2(a1)}。对边a2,也存在两个时间段,且与边a1对应的时间段存在重合,此时可通过复制后继实例创建两个新的实例和实例和要使用a2对应的段1(即seg1)的i-set集合进行更新,实例要使用a2对应的段2(即seg2)的i-set集合进行更新。
[0251]
在本实施方式中,针对一条新增边a,在当前时刻处于新增边a对应的某个时间段的期间,histit-seg算法中sievepait实例将给出当前时刻的关键节点集合。之后进行
如下操作:
[0252]
如果l1=0,则将sievepait实例删除,并且从l
t
集合中删除l1。对每个l∈l,执行
[0253]
也就是说,对一个sievepait实例,如果此实例只保存了当前时刻对应的信息,则在输出当前时刻对应的关键节点集合之后,将不再进行维护,做删除处理,并对后续的sievepait实例对应的索引进行更新。
[0254]
在本实施方式中,histit-seg算法通过消除相同sievepait实例,只维护少量不同的sievepait实例,可以减少不必要的资源消耗,进一步提高关键节点的求解效率。
[0255]
在一个可行的实施方式中,同样针对边衰减速度较慢的图数据流,在histit-seg算法的基础上进行进一步优化,提供histit-red算法。
[0256]
下面对histit-red算法进行说明。
[0257]
histit-red算法具体可以包括以下步骤:
[0258]
s401:将任一时间段对应的任务实例作为当前任务实例,获取当前任务实例和依次相邻的后继任务实例的效用;后继任务实例对应的时间段在当前任务实例对应的时间段之后;效用表示任务实例输出的关键节点集合的影响力大小;
[0259]
s402:基于当前任务实例和依次相邻的后继任务实例的效用,判断后继任务实例是否满足预设冗余条件;
[0260]
s403:若是,则确定后继任务实例为当前任务实例的冗余任务实例;
[0261]
s404:将当前任务实例和最远冗余任务实例之间的冗余任务实例删除;最远冗余任务实例为时间段距离当前任务实例的时间段最远的冗余任务实例。
[0262]
需要说明的是,histit-red算法用于在histit-seg的基础上,进一步减少sievepait实例数量,提高算法效率。相比于histit-seg算法,对多个连续且输出效用相似的sievepait实例,histit-red算法只维护一个实例,从而进一步减少所需要维护的实例个数。
[0263]
在本实施方式中,使用表示sievepait实例输出结果的效用,效用即为sievepait实例输出的关键节点集合的影响力大小。如果两个sievepait实例和的效用很接近,则这两个sievepait实例之间的sievepait实例是冗余的。
[0264]
在本实施方式中,给定一个参数∈∈(0,1),对j》i,如果则说明下标为i的实例和下标为j的实例之间的实例是冗余的。
[0265]
需要说明的是,删除冗余的sievepait实例可能会导致当某个边需要创建sievepait实例时,其真正的后继sievepait实例因为冗余被删除了,因此本实施例中通过更保守的删除sievepait实例,从而保留更多的sievepait实例以提高求解出的关键节点集合的质量。
[0266]
为了避免删除实际并非冗余的sievepait实例,本发明中给每个sievepait实例增加一个不确定性参数βr。基于实例输出结果的真正效用可能是因此将删除冗余实例的预设冗余条件设定为:
[0267][0268]
其中,∈为预设参数,该参数保证了解的质量,βi是实例的不确定值。
[0269]
需要说明的是,通过增加一个不确定值,使得删除sievepait实例的条件更严格,从而更保守的删除sievepait实例。
[0270]
如果下标为r的实例从时间段(i,j)中删除,用来近似此区间的不确定性。令在减少冗余时只需要记录每个区间的不确定性。
[0271]
histit-red算法中给出当前时刻的关键节点集合。
[0272]
histit-red算法相比于histit-seg算法,在处理每个段的时候,需要处理新增的实例的不确定性βr,βr等于此新增实例的索引r所属区间的不确定性。此外,在算法最后多了一个判断实例效用来减少冗余的模块。
[0273]
在具体实现中,针对每个i∈l,l为sievepait实例的索引集合,i为sievepait实例的索引编号,执行如下操作:
[0274]
找到一个最大的索引编号j,j》i,满足接下来对每个l∈(i,j),删除即删除和之间的冗余实例,并将对应的索引编号l从索引集合l中删除;同时记录和之间区间的不确定性参数β
ij
,令
[0275]
在本实施方式中,在删除冗余实例之后,会同步更新索引集合l,以及各个区间对应的不确定性参数,进而在新的边到来时,能够基于更新后的不确定性参数,进行准确判断,避免将实际并非冗余的sievepait实例错误的删除,在进一步提高求解效率的同时保证求解出的关键节点集合的质量。
[0276]
在一个例子中,假设当前时刻,图数据流来了第一条边a,有两个段[0,2][3,6],直接创建两个新的sievepait实例(后续简称实例)和此时和对应的不确定性参数β2和β6均为0,区间的不确定性参数β
26
为0;输出当前时刻的关键节点集合后,将输出关键节点集合的实例删除,并且从索引集合l中删除l1。对每个l∈l,执行的更新步骤。索引集合l便更新为l={1,5},更新后的实例为和对应的不确定性参数为β1和β5,对应区间的不确定性参数为β
15
为0。
[0277]
对索引集合l判断是否需要删除冗余实例,假设和两个实例的效用不满足预设冗余条件公式(22),则不进行处理。
[0278]
下一时刻,又到来一个新的边b,有两个段[0,2][3,6],则需要创建新的实例和通过复制已有的实例创建,令新创建的实例的不确定参数等于该实例所在区间的不确定参数,即令新创建的实例对应的不确定性参数β2用实例所在区间的不确定性参数β
15
表示,即令β2=β
15
,为0,而没有后继实例,则直接创建一个新的实例,令β6=0,对实例用边b所在段[0,2]对应的i-set集合进行更新,实例用边b所在段
[3,6]对应的i-set集合进行更新。
[0279]
在下一时刻输出关键节点集合之后,索引集合l更新为l={0,1,4,5},对应实例为实例为各个实例对应的不确定性参数为β0,β1,β4,β5。
[0280]
对索引集合l判断是否需要删除冗余实例,对i=0,假设满足公式(22),即满足的最大的j为5,则说明对而言,最远冗余任务实例为则删除和之间的实例,即删除和并在索引集合l中删除1和4,同时记录和对应区间的不确定性参数β
05
,令
[0281]
在本实施方式中,histit-red算法通过判定实例的解的相似性来进一步减少冗余实例,可进一步提高关键节点识别的求解效率。
[0282]
综上,本技术实施例提供的一种高速图数据流在线分析方法,一方面,针对增长流模型,提出了sievepait算法。对图数据流中每条边进采样,确定该边参与计算的情况,从而得到n个流样本。对每个流样本构建一个图,根据所构建的这些图计算目标节点的影响力。在当前时刻,根据图中影响力大小发生变化的节点,对所维护的阈值集合进行更新,然后对阈值所对应的候选节点集合进行更新。最后选取所有候选节点集合中影响力最大的候选节点集合,为当前时刻的关键节点集合,在提高求解关键节点集合的效率的同时,保证求解出的关键节点集合的质量。
[0283]
另一方面,针对概率衰减流模型,提出了三种算法用于解决此模型下的关键节点追踪问题,包括basicit算法,histit-seg算法,histit-red算法。
[0284]
basicit算法根据图数据流中边的生命周期长度,维护多个sievepait实例。根据图数据流对应的概率衰减函数,得到边在各个时间节点的i-set集合。依据边的i-set集合对sievepait实例进行更新,第一个实例给出的即是当前时刻的一组关键节点集合。得出当前时刻的解之后,重置第一个实例,将实例循环左移,进而实现对关键节点追踪,basicit算法维护了边在每个时间点的生存状态,适用于图数据流中边生命周期较短的场景,当希望关注的节点是由较近时间内的数据构成时,可以用basicit算法查找图数据流中关键节点。
[0285]
histit-seg算法是basicit算法的改进方案,根据图数据流中边的生命周期,如果边相邻时刻在流样本中的生存状态相同时,只需要维护一个sievepait实例。当新的边到来,需要创建新的实例时,根据其后续sievepait实例进行创建,没有后续实例时,直接创建一个新的实例。根据当前的边的i-set对相应的sievepait实例进行更新,第一个sievepait实例给出的结果即是当前时刻的关键节点集合。histit-seg算法适用于图数据流中边的生命周期较长的场景,histit-seg算法提出了段的思想,当边在相邻时刻的参与计算的状态相同时,只维护一个sievepait实例,从而减少所需要维护的sievepait实例的个数,进一步提升了概率衰减模型下的算法效率。
[0286]
histit-red算法对histit-seg做了进一步改进,histit-red算法对连续的sievepait实例,判断其输出关键节点集合的效用值,对那些解的效用值相近的实例,即解的质量相似的sievepait实例,只维护一个sievepait实例,第一个sievepait实例给出的结果即是当前时刻的关键节点集合。histit-red算法通过界定sievepait实例的输出的解的相似性来进一步减少冗余,大大提高了求解效率。
[0287]
下面,为验证上述算法的有效性,进行以下实验:
[0288]
选取了公开的五个数据集,签到数据集brightkite和gowalla,以及社交网络数据集reddit,twitter,weibo进行实验,在增长流模型下,对比了sievepait算法和greedy算法(贪心算法)的求解质量和求解效率,greedy算法每次从所有节点中选取一个影响增益最大的节点,所以greedy算法选取的解的质量是最优的,但是这种传统的贪心算法效率低下。实验使用solution quality和oracle calls这两个指标来对比算法的性能,solution quality用于对比解的质量,oracle calls用于对比求解效率。实验结果证明,sievepait算法在保证和greedy算法相近的求解质量下,在求解效率上有很大提升。
[0289]
在概率衰减流模型下,对比了histit-red算法和basicit算法的求解效率,histit-red算法在求解效率有很大提升。通过对比histit-red算法和greedy算法的solution quality和oracle calls,实验结果表明histit-red算法相比于贪心算法在求解效率上有很大提升,且有相近的求解质量。
[0290]
实验对比了twitter和weibo数据集在不同方法下的吞吐量,对比了histit-red和greedy、dim、imm、tim+方法,实验结果表明,这四种算法的吞吐量明显低于histit-red算法,这表明了histit-red算法在处理图数据流方面的优越性。
[0291]
本技术实施例提出的高速图数据流在线分析方法,提出了概率衰减流模型,考虑了图数据流中边参与计算的概率和时间的关联性。在解决图数据流中关键节点识别问题上,除通过实验结果证明本算法可行性与效率外,也通过数学证明了本发明中方法解的质量,因此本技术实施例提出的sievepait算法、basicit算法、histit-seg算法和histit-red算法具有可行性与优势,本技术实施例方法效率更高,同时保证了求解质量。
[0292]
第二方面,基于相同发明构思,参照图10,示出了本技术实施例提供的一种高速图数据流在线分析装置1000,该高速图数据流在线分析装置1000包括:
[0293]
目标节点集合获取模块1001,用于在图数据流出现新增边的情况下,基于n个流样本,获取目标节点集合;目标节点集合包括n个流样本中影响力发生改变的目标节点;n个流样本为预先对图数据流中的边进行随机采样得到的;n为大于等于1的整数;
[0294]
阈值集合更新模块1002,用于基于目标节点集合中目标节点的影响力的最大值,对历史阈值集合中的阈值进行更新,得到当前阈值集合;其中,当前阈值集合中包括多个阈值,不同的阈值对应不同的候选节点集合,候选节点集合由满足对应的阈值的节点构成,不同候选节点集合包括的节点部分不同;
[0295]
候选节点集合更新模块1003,用于基于当前阈值集合和历史阈值集合各自对应的阈值,对当前阈值集合中每个阈值对应的候选节点集合进行更新;
[0296]
节点加入模块1004,用于将目标节点集合中满足预设加入条件的目标节点加入到对应的候选节点集合中;
[0297]
关键节点集合确定模块1005,用于将影响力最大的候选节点集合确定为当前时刻的关键节点集合。
[0298]
在一个可行的实施方式中,目标节点集合获取模块1001包括:
[0299]
第一采样子模块,用于对新增边进行采样,得到新增边对应的i-set集合;i-set集合用于表征新增边存在于m个目标流样本中,m个目标流样本为n个流样本中的部分或全部;
[0300]
目标节点确定子模块,用于将m个目标流样本中影响力发生改变的节点确定为目标节点;
[0301]
目标节点集合子模块,用于基于目标节点,得到目标节点集合。
[0302]
在一个可行的实施方式中,所述阈值集合更新模块1002包括:
[0303]
第一更新子模块,用于基于所述目标节点集合中所述目标节点的影响力的最大值,对影响力参数进行更新;
[0304]
第二更新子模块,用于基于所述更新之后的影响力参数,对历史阈值集合中的阈值进行更新,得到当前阈值集合。
[0305]
在一个可行的实施方式中,候选节点集合更新模块1003包括:
[0306]
第一集合更新子模块,用于针对属于历史阈值集合而不属于当前阈值集合的第一阈值,将第一阈值对应的候选节点集合删除;
[0307]
第二集合更新子模块,用于针对不属于历史阈值集合而属于当前阈值集合的第二阈值,生成第二阈值对应的初始候选节点集合,初始候选节点集合为空集合;
[0308]
第三集合更新子模块,用于针对同时属于历史阈值集合和当前阈值集合的第三阈值,保留第三阈值对应的候选节点集合;
[0309]
候选节点集合确定子模块,用于将第二阈值对应的初始候选节点集合和第三阈值对应的候选节点集合,确定为更新后的候选节点集合;
[0310]
在一个可行的实施方式中,节点加入模块1004包括:
[0311]
第一判断子模块,用于获取集合大小小于预设值的候选节点集合;
[0312]
第二判断子模块,用于针对目标节点集合中的每个目标节点,判断目标节点加入候选节点集合后的效用增益是否大于等于当前阈值集合中的至少一个阈值;效用增益表示第一影响力与第二影响力之间的差值,第一影响力为候选节点集合加入目标节点之后的影响力大小,第二影响力为候选节点集合加入目标节点之前的影响力大小;
[0313]
节点加入子模块,用于在目标节点加入候选节点集合后的效用增益大于等于当前阈值集合中的至少一个阈值的情况下,将目标节点加入至少一个阈值各自对应的候选节点集合中。
[0314]
在一个可行的实施方式中,在图数据流中的节点存活时间有限且参与计算的概率随时间推移而不断下降的情况下,该高速图数据流在线分析装置1000还包括:
[0315]
生命周期获取模块,用于获取新增边的预设最大生命周期;预设最大生命周期由l个时间节点构成,l为大于等于1的整数;
[0316]
生命周期采样模块,用于对新增边的生命周期进行采样,得到n个预估生命周期;不同的预估生命周期表征新增边在n个流样本中的不同存活期限;n为大于等于1的整数;
[0317]
i-set集合获取模块,用于基于n个生命周期,得到与l个时间节点一一对应的l个i-set集合,i-set集合用于表征在对应时间节点新增边在n个流样本中的存活情况;
[0318]
任务实例创建模块,用于创建l个时间节点各自对应的任务实例,得到l个任务实例;
[0319]
第一关键节点集合输出模块,用于将l个时间节点的任一时间节点作为当前时刻,当当前时刻到来时,以使当前时刻对应的任务实例基于当前时刻对应的i-set集合,输出当前时刻的关键节点集合。
[0320]
在一个可行的实施方式中,装置还包括:
[0321]
i-set集合合并模块,用于在时间节点上相邻的至少两个i-set集合相同的情况
下,对至少两个i-set集合进行合并操作,得到多个时间段,并使每个时间段对应一个i-set集合;
[0322]
第二关键节点集合输出模块,用于针对每个时间段,基于时间段对应的i-set集合,构建时间段对应的任务实例;以使在当前时刻处于时间段的期间,任务实例基于时间段对应的i-set集合,输出当前时刻的关键节点集合。
[0323]
在一个可行的实施方式中,该高速图数据流在线分析装置1000还包括:
[0324]
实例效用获取模块,用于将任一时间段对应的任务实例作为当前任务实例,获取当前任务实例和依次相邻的后继任务实例的效用;后继任务实例对应的时间段在当前任务实例对应的时间段之后;效用表示任务实例输出的关键节点集合的影响力大小;
[0325]
冗余判断模块,用于基于当前任务实例和依次相邻的后继任务实例的效用,判断后继任务实例是否满足预设冗余条件;
[0326]
冗余确定模块,用于在后继任务实例满足预设冗余条件的情况下,确定后继任务实例为当前任务实例的冗余任务实例;
[0327]
删除模块,用于将当前任务实例和最远冗余任务实例之间的冗余任务实例删除;最远冗余任务实例为时间段距离当前任务实例的时间段最远的冗余任务实例。
[0328]
在一个可行的实施方式中,预设冗余条件为:
[0329][0330]
式中:为后继任务实例的效用;为当前任务实例的效用,βi为当前任务实例对应的不确定性参数,∈为预设参数。
[0331]
需要说明的是,本技术实施例的高速图数据流在线分析装置1000的具体实施方式参照前述本技术实施例第一方面提出的高速图数据流在线分析方法的具体实施方式,在此不再赘述。
[0332]
本领域内的技术人员应明白,本发明实施例的实施例可提供为方法、装置、或计算机程序产品。因此,本发明实施例可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明实施例可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、cd-rom、光学存储器等)上实施的计算机程序产品的形式。
[0333]
本发明实施例是参照根据本发明实施例的方法、终端设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理终端设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理终端设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
[0334]
尽管已描述了本发明实施例的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例做出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明实施例范围的所有变更和修改。
[0335]
最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将
一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者终端设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者终端设备所固有的要素。在没有更多限制的情况下,由语句“包括一个
……”
限定的要素,并不排除在包括所述要素的过程、方法、物品或者终端设备中还存在另外的相同要素。
[0336]
以上对本发明所提供的一种高速图数据流在线分析方法和装置,进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上,本说明书内容不应理解为对本发明的限制。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1