基于分布式架构的数据流频繁项挖掘方法

文档序号:10570023阅读:374来源:国知局
基于分布式架构的数据流频繁项挖掘方法
【专利摘要】本发明提出了基于分布式架构的数据流频繁项挖掘方法。该方法采用两层树形的通信结构,包括m个叶子节点和1个根节点。叶子节点负责处理数据流中的数据项,并在数据项频率的增量超过阈值时向根节点发送频率增量。根节点负责收集叶子节点传递的更新。该方法通信开销小,同时可以实时响应用户发起的频繁项查询请求。
【专利说明】
基于分布式架构的数据流频繁项挖掘方法
技术领域
[0001] 本发明属于数据挖掘技术领域,涉及一种频繁项挖掘方法,特别是涉及适用于分 布式架构的频繁项挖掘方法。
【背景技术】
[0002] 在关联规则挖掘、序列模式挖掘、相关性挖掘、多层模式挖掘等数据挖掘问题中, 频繁项挖掘既是基本步骤,也是关键步骤。目前有许多在单一节点上数据流的频繁项挖掘 的研究,这些研究大致可以划分两类:基于计数器的方法和基于sketch的方法。
[0003] 基于计数器的频繁项挖掘方法会维护一组计数器用来统计数据项的频率。每个计 数器包含两个参数,分别是数据项名称和数据项频率。当数据流中有数据项到来时,如果维 护的计数器中存在这个数据项,则相应增加该计数器所记录的频率;否则增加一个新的计 数器用来存储新数据项或者替换一个原有的计数器。通常基于计数器的频繁项挖掘方法处 理单个数据项的开销很低,但是需要周期性地对所有计数器进行排序。基于计数器的频繁 项挖掘方法有Frequent、Space Saving和Lossy Counting等。
[0004] 基于sketch的方法采用由一维或者两维计数器数组构成的哈希表来估计数据流 中各个数据项的频率。这类方法通常采用哈希技术将每个数据项映射到对应的多个计数器 上,单个计数器可能被多个数据项所共享,即具有相同哈希值的数据项共享同一个计数器。 当一个数据项到达时,只需修改对应的计数器的值。当用户提交查询请求时,使用对应的计 数器的值来估计频率,能够以较高的置信度将误差控制在一定的范围之内。一般而言,基于 哈希的方法需要额外数据结构的支持,如使用一个堆来跟踪候选的频繁项。基于Skech频繁 项挖掘方法有CountSketch、CountMin Sketch和hCount等。
[0005] 传统的频繁项挖掘方法大多只考虑将单一数据源在单一节点上进行处理,然而目 前在很多实际应用中,需要挖掘的数据是大规模分布式的,例如网络监控中的流检测、DD0S 攻击检测等。目前针对分布式流环境下的频繁项挖掘方法的研究主要包括A.Man jhi提出的 适用于树形或是多路径图形的拓扑结构的Tributary-Delta方法;G.Cormode提出的一种可 以连续跟踪高速度分布式流中的频繁项的近似方法;B. Babcock和C.Olston提出的分布式 top-k监听的方法等。这些方法存在的主要不足包括:通信开销过大以及不支持实时查询。

【发明内容】

[0006] 本发明目的是解决现有方法存在通信开销过大以及不支持实时查询的问题,提供 一种基于分布式架构的数据流频繁项挖掘方法,可用以提高传统频繁项挖掘方法在分布式 架构上的处理能力。
[0007] 本发明提供了基于分布式架构的数据流频繁项挖掘方法,该方法是一种带权值的 分布式数据流频繁项挖掘方法的近似方法。该方法采用2层树形的通信结构,包括m个叶 子节点和1个根节点;所述叶子节点负责处理数据流中的数据项,将数据流中的数据项频率 存储在叶子节点的最小堆中,并在数据项频率增量大于阈值时,将数据项频率增量发送至 根节点;所述根节点负责计算数据项在整体架构中的频率估计值,将数据项频率估计值存 储在根节点的最小堆中;所述叶子节点的最小堆中存储的条目包括数据项名称、数据项频 率以及数据项频率增量;所述根节点的最小堆中存储的条目包括数据项名称以及数据项频 率估计值。
[0008] 本发明技术方案:
[0009] 步骤1)、每个叶子节点i从所收到的数据流中依次取出数据项,所述数据项包括数 据项名称Vt及数据项频率Cv, t;
[0010] 步骤2)、更新所述叶子节点的数据项频率之和化=化+(^以及数据项频率之和的 增量A i= A i+Cv,t,其中的等号表述赋值,下同;
[0011] 步骤3)、根据步骤1)所取出的数据项的数据项名称vt和数据项频率~,*在所述的 叶子节点的最小堆出中找出合适的条目,并为该条目中的数据项名称、数据项频率以及数 据项频率增量赋值;该步骤包括:
[0012] 步骤3-1)、判断所述的叶子节点的最小堆中是否存在数据项名称为vt的条目,若 存在执行下一步,否则,执行步骤3-5);
[0013]步骤3-2)、判断所述的叶子节点的最小堆出是否已满,若已满,执行下一步,否则, 执行步骤3-4);
[0014]步骤3-3)、从所述的叶子节点的最小堆Hi中取出数据项频率最小的条目itemmin, 对该条目重新赋值,然后执行步骤4);其中,对该条目赋值包括:
[0015] 令v -Vt,Cv - Cv+Cv, t,A v -Cv, t ;
[0016] 所述的v表示取出条目的数据项名称,所述的Vt表示取出的数据项的数据项名称, 所述的cv表示取出条目的数据项频率,所述的c v,t表示取出的数据项的数据项频率,所述的 A v表示取出条目的数据项频率增量;
[0017] 步骤3-4)、创建一个新条目并为新条目赋值,将新条目插入所述的叶子节点的最 小堆出中,然后执行步骤4);其中,对新条目赋值包括:
[0018] 4'v = vt,Cv = cv,t, Av = cv,t;
[0019] 步骤3-5)、从所述的叶子节点的最小堆H冲取出已存在的条目并对该条目 进行更新,然后执行步骤4);其中,对该条目更新包括:
[0020] 令Cv=Cv+Cv,t,A v= A v+cv,t;
[0021] 步骤4)、判断所述的数据项频率之和的增量以及所述条目的数据项频率增量是否 大于阈值,如果大于阈值,向根节点传递更新;该步骤包括:
[0022]步骤4-1)、判断所述的数据项频率之和的增量A :是否满足A ,如果满足, 执行下一步,否则,执行步骤4-3);其中,
[0023]所述的队表示用户定义的叶子节点的更新延迟系数,所述的化表示所述叶子节点 的数据项频率之和;
[0024] 步骤4-2)、所述的叶子节点向根节点发送0-msg更新,然后将A啲值置为〇;其中
[0025] 所述的0-msg更新发送的内容包括所述的数据项频率之和的增量A 1;
[0026] 步骤4-3)、所述的条目的数据项频率增量A v是否满足A ¥>队化,如果满足,执行 下一步,否则,执行步骤5);
[0027]所述的队表示用户定义的叶子节点的更新延迟系数,所述的化表示所述叶子节点 的数据项频率之和;
[0028] 步骤4-4)、所述的叶子节点向根节点发送数据项更新,然后将A v的值置为〇;其中
[0029] 所述的数据项更新发送的内容包括所述的条目的数据项名称以及所述的条目的 数据项频率增量A v;
[0030] 步骤5)、所述的根节点从所述的叶子节点发送的更新中依次取出更新,并根据取 出的更新维护相应的数据;该步骤包括:
[0031] 步骤5-1)、判断根节点取出的所述叶子节点发送的更新的类型,如果是0-msg更 新,执行下一步,如果是数据项更新,执行步骤5-3);
[0032]步骤5-2)、更新所述的根节点的数据项频率之和的估计值N = N+A :,其中等号表 示赋值,然后执行步骤6);其中,
[0033] 所述的N表示根节点的数据项频率之和的估计值,所述的A :表示所述的叶子节点 发送的〇-msg更新的频率;
[0034] 步骤5-3)、更新所述的根节点的最小堆Ho;该步骤包括:
[0035] 步骤5-3-1)、取出所述的叶子节点发送的更新中的数据项名称vt以及数据项频率 增量A v,t;
[0036]步骤5-3-2)、判断所述的根节点的最小堆中是否存在数据项名称为vt的条目 itemv,若存在执行下一步,否则,执行步骤5-3-4);
[0037]步骤5-3-3)、取出所述的条目itemv,对并对该条目进行更新,然后执行步骤6);其 中,对该条目更新包括:
[0038] 令Cv=Cv+Av,t,其中等号表示赋值;
[0039] 所述的v表示取出条目的数据项名称,所述的Cv表示取出条目的数据项频率,所述 的A v,t表示取出数据项更新的数据项频率增量;
[0040] 步骤5-3-4)、判断所述的根节点的最小堆Ho是否已满,若已满,执行下一步,否则 执行5-3-6);
[00411步骤5-3-5)、取出所述的根节点的最小堆Ho中数据项频率最小的条目itemmin,对 该条目重新赋值,然后执行步骤6);其中,对该条目赋值包括:
[0042] 令v = vt,cv = cv+A v,t;
[0043] 所述的Vt表示取出的数据项更新的数据项名称;
[0044] 步骤5-3-6 )、创建一个新条目并为新条目赋值,将新条目插入所述的根节点维护 的最小堆中,然后执行步骤6);其中,对新条目赋值包括:
[0045] $v = Vt,Cv= A v,t;
[0046] 步骤6)、根据用户的请求,根节点遍历所述的最小堆Ho,返回所有数据项频率 ,@的条目为所要挖掘的频繁项。
[0047]本发明在所述的步骤4)和步骤5)之间还包括对叶子节点的最小堆出进行按照数 据项的频率进行排序的操作步骤。
[0048]以及,在所述的步骤5)和步骤6)之间还包括对根节点的最小堆Ho进行按照数据项 的频率进行排序的操作步骤。
[0049] 本发明的优点和有益效果:
[0050] 本发明提供的方法输出的频繁项的数据项频率的估计值与真实值之间的误差不 大于_,单条链路上的最大通信开销不大于
,可以支持用户实时的频繁项查询。
【附图说明】
[0051] 图1是基于分布式架构的数据流频繁项挖掘方法的通信结构。
[0052] 图2是基于分布式架构的数据流频繁项挖掘方法的平均相对误差。
[0053] 图3是基于分布式架构的数据流频繁项挖掘方法的单链路通信开销。
[0054] 图4是基于分布式架构的数据流频繁项挖掘方法的初始化时间。
【具体实施方式】
[0055] 为了更清晰直观的表达本发明的方法思路,下面对基于分布式架构的数据流频繁 项挖掘方法的细节进行详细说明:
[0056] 1 ?确定参数
[0057]分布式频繁项挖掘方法需要确定的参数包括:
[0058] (1)数据项支持度梦资供綠和误差度似》綉《
[0059] (2)叶子节点数据m;
[0060] (3)每个叶子节点i和根节点的最小堆Hi和Ho的大小为;
[0061] (4)每个叶子节点i的延迟更新系数&(0<&<£)。
[0062]在本实施例中叶子节点数量m = 8,叶子节点和根节点的最小堆的大小均为10000, 即a0 = ai = 〇.〇〇〇1[0.001,0? 005],eG [0.0001,0? 0005],f =
[0063] 2.初始化
[0064] 确定每个叶子节点i的初始化时间为
为叶子节点i与根节点之间链 路的带宽,单位为数据包/秒。在本发明方法运行的最初时刻,每个叶子节点i会处理收到的 来自数据流Si的数据项更新,但却不会将任何消息传递给它的根节点直至初始化状态结 束。
[0065] 3.叶子节点处理数据流中的数据项
[0066]当数据流S冲有新数据项(v,cv,t)到达叶子节点i时,首先更新数据流S冲数据项 频率之和Ni = Ni+cv,t,其中等号表示赋值,下同,以及数据项频率之和的频率估计值增量A i =A 1+Cv, t。其次更新相应的数据项频率:如果v G出,则增加相应数据项条目的频率估计值 cv = cv+cv, t和数据项v的频率估计值增量A v= A v+Cv, t;否则找到Hi中频率估计值最小的数 据项itemmin,将itemmin的数据项名替换为V,并更新其数据项频率Cv = cv+Cv,t和频率估计值 增量A v = Cv,t。最后检查是否满足条件向根节点传递数据项更新:如果A 发送更 新(0, 给根节点,并重置频率估计值增量A1 = 〇;如果,则发送更新(v,Av)给 根节点,并重置频率估计值增量A v=0。
[0067] 4.根节点处理叶子节点发送的更新
[0068]当根节点收到叶子节点传递的数据项更新(v,A v)时,如果VGHo,则增加相应数据 项条目的频率估计值Cv = cv+ A v;否则找到Ho中频率估计值最小的数据项itemmin,将itemmin 的数据项名替换为V,并更新其数据项频率cv = cv+A V。当根节点收到叶子节点传递的o-msg 更新(0,A i)时,更新根节点对数据项频率之和的估计值No = No+ A i。
[0069] 5.根节点处理用户发起的频繁项查询
[0070] 当用户向根节点提交频繁项查询时,根节点扫描最小堆Ho中维护的每个数据项条 目(v,cv)。如果cv^coNo,则认为v是频繁项并将v输出,其中《为输出阈值,有 穸4 +免《松玄麥认令爲織、),爹为用户定义的数据项支持度,amax = max(ai),0max=max (f3i)0
[0071] 本发明采用现实数据与计算机模拟的方式实施。
[0072] 本发明选择3组真实的网络环境下采集的网络流量数据集作为实施例中的数据 源。这3组数据集分别是:CERNET数据集,是在CERNET(China Education and Research Network)的OC-48链路上采集的TCP双向数据集;CAIDA48数据集,是在0C-48west coast peering link上采集的匿名数据集;CAIDA192数据集,是在0C-192链路上采集的单项匿名 数据集。本发明将网络流量数据集中IP数据包的五元组(源IP地址,目的IP地址,源端口,目 的端口,传输层协议)定义为数据项名,将数据包负载的长度定义为数据项频率。
[0073] 定义更新延迟系数0的相对值为
,.图2显示了本发明方法处理3组不同的网络数据 集的平均相对误差。可以观测到,在ee [0.0001,0. 0005]时,方法的平均相对误差均小于当 前e的值与N乘积。
[0074]图3显示了本发明方法处理3组不同的网络数据集的单链路开销。对于图3的每幅 子图,分别有4条曲线,由上至下每条曲线分别表示处理当前网络数据集的单链路通信开销 的理论最大值
单链路通信开销的实际最大值、实际平均值以及实际最小值。可以观 测到,单条链路上的实际最大通信开销不大亍
[0075]图4显示了本发明方法的初始化时间。可以观测到,更新延迟系数0的相对值越大, 本发明方法所需的初始化时间越少。
【主权项】
1. 一种基于分布式架构的数据流频繁项挖掘方法,该方法采用2层树形的通信结构,包 括m个叶子节点和1个根节点;所述叶子节点负责处理数据流中的数据项,将数据流中的数 据项频率存储在叶子节点的最小堆中,并在数据项频率增量大于阈值时,将数据项频率增 量发送至根节点;所述根节点负责计算数据项在整体架构中的频率估计值,将数据项频率 估计值存储在根节点的最小堆中;所述叶子节点的最小堆中存储的条目包括数据项名称、 数据项频率以及数据项频率增量;所述根节点的最小堆中存储的条目包括数据项名称以及 数据项频率估计值;该方法包括: 步骤1)、每个叶子节点i从所收到的数据流中依次取出数据项,所述数据项包括数据项 名称vt及数据项频率cv, t; 步骤2)、更新所述叶子节点的数据项频率之和化=化+~,*以及数据项频率之和的增量 Δ i= Δ i+Cv,t,其中的等号表述赋值,下同; 步骤3)、根据步骤1)所取出的数据项的数据项名称vt和数据项频率cv,t在所述的叶子节 点的最小堆出中找出合适的条目,并为该条目中的数据项名称、数据项频率以及数据项频 率增量赋值;该步骤包括: 步骤3-1)、判断所述的叶子节点的最小堆中是否存在数据项名称为vt的条目,若存在执 行下一步,否则,执行步骤3-5); 步骤3-2)、判断所述的叶子节点的最小堆出是否已满,若已满,执行下一步,否则,执行 步骤3-4); 步骤3-3)、从所述的叶子节点的最小堆Hi中取出数据项频率最小的条目itemmin,对该条 目重新赋值,然后执行步骤4);其中,对该条目赋值包括: - Vt,Cv-Cv+Cv,t,- Cv, t ; 所述的V表示取出条目的数据项名称,所述的Vt表示取出的数据项的数据项名称,所述 的Cv表示取出条目的数据项频率,所述的Cv,t表示取出的数据项的数据项频率,所述的Δν表 示取出条目的数据项频率增量; 步骤3-4)、创建一个新条目并为新条目赋值,将新条目插入所述的叶子节点的最小堆出 中,然后执行步骤4);其中,对新条目赋值包括: - Vt,Cv-Cv, t,Δ v -Cv, t ; 步骤3-5)、从所述的叶子节点的最小堆出中取出已存在的条目,并对该条目进行 更新,然后执行步骤4);其中,对该条目更新包括: "^Cv - Cv+Cv, t,Αν - Δ v+Cv, t ; 步骤4)、判断所述的数据项频率之和的增量以及所述条目的数据项频率增量是否大于 阈值,如果大于阈值,向根节点传递更新;该步骤包括: 步骤4-1)、判断所述的数据项频率之和的增量△1是否满足,如果满足,执行下 一步,否则,执行步骤4-3);其中, 所述的队表示用户定义的叶子节点的更新延迟系数,所述的化表示所述叶子节点的数 据项频率之和; 步骤4-2)、所述的叶子节点向根节点发送O-msg更新,然后将值置为0;其中 所述的Ο-msg更新发送的内容包括所述的数据项频率之和的增量Δ ,; 步骤4-3)、所述的条目的数据项频率增量△ v是否满足△ ¥>队化,如果满足,执行下一 步,否则,执行步骤5); 所述的队表示用户定义的叶子节点的更新延迟系数,所述的化表示所述叶子节点的数 据项频率之和; 步骤4-4)、所述的叶子节点向根节点发送数据项更新,然后将Δν的值置为0;其中 所述的数据项更新发送的内容包括所述的条目的数据项名称以及所述的条目的数据 项频率增量Α ν; 步骤5)、所述的根节点从所述的叶子节点发送的更新中依次取出更新,并根据取出的 更新维护相应的数据;该步骤包括: 步骤5-1)、判断根节点取出的所述叶子节点发送的更新的类型,如果是0-msg更新,执 行下一步,如果是数据项更新,执行步骤5-3); 步骤5-2)、更新所述的根节点的数据项频率之和的估计值N = N+Ai,其中等号表示赋 值,然后执行步骤6);其中, 所述的N表示根节点的数据项频率之和的估计值,所述的△ i表示所述的叶子节点发送 的0-msg更新的频率; 步骤5-3 )、更新所述的根节点的最小堆Ho;该步骤包括: 步骤5-3-1)、取出所述的叶子节点发送的更新中的数据项名称vt以及数据项频率增量 Δ v, t; 步骤5-3-2)、判断所述的根节点的最小堆中是否存在数据项名称为vt的条目itemv,若 存在执行下一步,否则,执行步骤5-3-4); 步骤5-3-3)、取出所述的条目itemv,对并对该条目进行更新,然后执行步骤6);其中,对 该条目更新包括: 令cv = cv+ Δ v,t,其中等号表示赋值; 所述的V表示取出条目的数据项名称,所述的CV表示取出条目的数据项频率,所述的 △ v,t表示取出数据项更新的数据项频率增量; 步骤5-3-4)、判断所述的根节点的最小堆Ho是否已满,若已满,执行下一步,否则执行5-3-6); 步骤5-3-5)、取出所述的根节点的最小堆Ho中数据项频率最小的条目itemmin,对该条目 重新赋值,然后执行步骤6);其中,对该条目赋值包括: - Vt,Cv - Cv+ Δ v, t; 所述的Vt表示取出的数据项更新的数据项名称; 步骤5-3-6)、创建一个新条目并为新条目赋值,将新条目插入所述的根节点维护的最 小堆中,然后执行步骤6);其中,对新条目赋值包括: 令V = Vt,Cv= Δ v,t; 步骤6)、根据用户的请求,根节点遍历所述的最小堆Ho,返回所有数据项频率 玲凝的条目为所要挖掘的频繁项。2. 根据权利要求1所述的基于分布式架构的数据流频繁项挖掘方法,其特征在于,在所 述的步骤4)和步骤5)之间还包括对叶子节点的最小堆出进行按照数据项的频率进行排序 的操作步骤。3. 根据权利要求1所述的基于分布式架构的数据流频繁项挖掘方法,其特征在于,在所 述的步骤5)和步骤6)之间还包括对根节点的最小堆Ho进行按照数据项的频率进行排序的 操作步骤。
【文档编号】G06F17/30GK105930457SQ201610254621
【公开日】2016年9月7日
【申请日】2016年4月21日
【发明人】张玉, 徐敬东, 张建忠, 于博文, 陈正阳
【申请人】南开大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1