本发明涉及数据处理技术领域,特别是涉及一种面向高维度大数据的子空间聚类方法及装置。
背景技术:
聚类,是将物理或抽象对象的集合分成由类似的对象组成的多个类的过程。由聚类所生成的簇是一组数据对象的集合,这些对象与同一个簇中的对象彼此相似,与其他簇中的对象相异。聚类分析又称群分析,是研究分类问题的一种统计分析方法。由于大数据时代的来临,数据集的规模越来越大,维度越来越高,因为不相关特征和维数灾难的存在,传统的聚类算法针对高维度数据不再适用。
为了解决传统的聚类算法针对高维度数据不适用的问题,现有技术提出了子空间聚类的概念,子空间聚类算法旨在于在原始特征空间的子集中发现隐藏的簇类,从而避免维数灾难,解决高维度数据的聚类问题,子空间聚类算法主要基于所应用的搜索方法被分为自底向上和自顶向下两组。子空间聚类算法一般假定整个数据集运行于单机,当遇到高维度大数据时,在单机上进行聚类分析会遇到内存容量和内核处理速度的瓶颈问题。
现有的子空间聚类算法中,最为普遍的是最大频繁集挖掘Mafia子空间聚类算法,Mafia子空间聚类算法首先将每个维度都进行均匀的区间划分,并且将均匀划分的网格中每一维上数据分布密度相似的相邻段进行合并,产生一个不均匀划分的网格,识别每个网格中的密集子空间,然后根据(k-1)维密集子空间生成k维密集子空间的候选聚类区域集,使用深度优先搜索在每个被选择的候选聚类区域集中寻找相邻的密集子空间并通过贪婪增长的方法合并这些密集子空间,即从一个任意的密集子空间开始,贪婪地在每个维度产生一个最大的区域直到所有区域的总和覆盖整个簇类。Mafia子空间聚类算法减少了每一维上分割的单元数量和候选聚类区域集的数据,同时消除了子空间检测的剪枝技术;并且,Mafia子空间聚类算法可以采用并行方法进行聚类处理,再对聚类处理后的数据进行串行执行。但是,针对聚类处理的过程,数量级在TB、PB级及以上的高维度大数据,数据量庞大,数据的行数可能达到上万行,Mafia子空间聚类算法在进行区间划分后得到的依旧是非常庞大的数据,从而导致Mafia子空间聚类算法在处理庞大的数据时,运行效率较低。
技术实现要素:
本发明实施例的目的在于提供一种面向高维度大数据的子空间聚类方法及装置,以提升高维度大数据聚类的运行效率。具体技术方案如下:
第一方面,本发明实施例提供了一种面向高维度大数据的子空间聚类方法,所述方法包括:
获取输入的高维度大数据,在MapReduce架构下针对每一行数据建立第一Map任务,并在每个第一Map任务中按照维度对数据进行分割,得到每个第一Map任务中每个维度的特征值;
将每个第一Map任务中每个维度的特征值发送至第一Reduce节点,以使在每个第一Reduce节点中,获取并根据每个维度所有特征值的数据区域、预设窗口数、预设窗口合并阈值及预设窗口密度阈值,得到每个维度的1维密集子空间;
根据每两个k维密集子空间,确定k+1维候选子空间,其中,k大于或等于1,k+1小于或等于所述高维度大数据的总维度;
针对每个k维密集子空间建立第二Map任务,并获得分布于每个k维密集子空间的所有样本点;
在每个第二Map任务中,在k+1维候选子空间包含k维密集子空间中所有维度时,确定所述k+1维候选子空间覆盖所述k维密集子空间;
将所述k+1维候选子空间覆盖的所有k维密集子空间中的样本点集合发送至第二Reduce节点,以使在每个第二Reduce节点中,获取所述k+1维候选子空间覆盖的所有k维密集子空间中样本点集合的交集及预设簇类密度阈值,并根据所述k+1维候选子空间、所述交集及所述预设簇类密度阈值,得到聚类后的k+1维密集子空间。
可选的,所述获取并根据每个维度所有特征值的数据区域、预设窗口数、预设窗口合并阈值及预设窗口密度阈值,得到每个维度的1维密集子空间,包括:
根据每个维度的所有特征值,确定每个维度中特征值的最大值及最小值,并确定每个维度所有特征值的数据区域为大于或等于所述最小值、且小于或等于所述最大值的数据区域;
获取并根据预设窗口数,将所述数据区域均分为Np个初始窗口,并将所有特征值分配至各个初始窗口,其中,Np为所述预设窗口数;
获取预设窗口合并阈值,并统计每个初始窗口中特征值的数量;
在两个相邻初始窗口中特征值的数量的差值小于所述预设窗口合并阈值时,合并所述两个相邻初始窗口,得到合并后的窗口;
获取预设窗口密度阈值,确定所述合并后的窗口中、特征值的数量大于所述预设窗口密度阈值的窗口为1维密集子空间。
可选的,所述在两个相邻初始窗口中特征值的数量的差值小于所述预设窗口合并阈值时,合并所述两个相邻初始窗口,得到合并后的窗口之后,所述方法还包括:
在所述合并后的窗口的总数量为1时,根据所述预设窗口数,将所述合并后的窗口均分为Np个窗口。
可选的,所述获取预设窗口密度阈值,确定所述合并后的窗口中、特征值的数量大于所述预设窗口密度阈值的窗口为1维密集子空间之后,所述方法还包括:
以键值对形式存储所述1维密集子空间及所述1维密集子空间中的所有样本点。
可选的,所述根据每两个k维密集子空间,确定k+1维候选子空间,包括:
在每个k维密集子空间均为1维密集子空间时,合并每两个1维密集子空间,得到2维候选子空间;
在k维密集子空间为N维密集子空间时,若每两个k维密集子空间包含相同的k-1维密集子空间,通过对所述两个k维密集子空间进行融合、去重,得到k+1维候选子空间,其中,N大于1、且小于所述高维度大数据的总维度。
可选的,所述在k+1维候选子空间包含k维密集子空间中所有维度时,确定所述k+1维候选子空间覆盖所述k维密集子空间之后,所述方法还包括:
将所述k+1维候选子空间及所述k+1维候选子空间覆盖的k维密集子空间分发至各个子节点执行。
可选的,所述获取所述k+1维候选子空间覆盖的所有k维密集子空间中样本点集合的交集及预设簇类密度阈值,并根据所述k+1维候选子空间、所述交集及所述预设簇类密度阈值,得到聚类后的k+1维密集子空间,包括:
统计所述k+1维候选子空间覆盖的所有k维密集子空间中样本点集合的交集中样本点的数量;
获取预设簇类密度阈值,在所述交集中样本点的数量大于所述预设簇类密度阈值时,确定所述k+1维候选子空间为聚类后的k+1维密集子空间。
可选的,所述获取预设簇类密度阈值,在所述交集中样本点的数量大于所述预设簇类密度阈值时,确定所述k+1维候选子空间为聚类后的k+1维密集子空间之后,所述方法还包括:
以键值对形式存储所述k+1维密集子空间及所述k+1维密集子空间中的所有样本点。
第二方面,本发明实施例还提供了一种面向高维度大数据的子空间聚类装置,所述装置包括:
第一分割模块,用于获取输入的高维度大数据,在MapReduce架构下针对每一行数据建立第一Map任务,并在每个第一Map任务中按照维度对数据进行分割,得到每个第一Map任务中每个维度的特征值;
第一确定模块,用于将每个第一Map任务中每个维度的特征值发送至第一Reduce节点,以使在每个第一Reduce节点中,获取并根据每个维度所有特征值的数据区域、预设窗口数、预设窗口合并阈值及预设窗口密度阈值,得到每个维度的1维密集子空间;
第二确定模块,用于根据每两个k维密集子空间,确定k+1维候选子空间,其中,k大于或等于1,k+1小于或等于所述高维度大数据的总维度;
第二分割模块,用于针对每个k维密集子空间建立第二Map任务,并获得分布于每个k维密集子空间的所有样本点;
第三确定模块,用于在每个第二Map任务中,在k+1维候选子空间包含k维密集子空间中所有维度时,确定所述k+1维候选子空间覆盖所述k维密集子空间;
第四确定模块,用于将所述k+1维候选子空间覆盖的所有k维密集子空间中的样本点集合发送至第二Reduce节点,以使在每个第二Reduce节点中,获取所述k+1维候选子空间覆盖的所有k维密集子空间中样本点集合的交集及预设簇类密度阈值,并根据所述k+1维候选子空间、所述交集及所述预设簇类密度阈值,得到聚类后的k+1维密集子空间。
可选的,所述装置还包括:
分发模块,用于将所述k+1维候选子空间及所述k+1维候选子空间覆盖的k维密集子空间分发至各个子节点执行。
本发明实施例提供的面向高维度大数据的子空间聚类方法及装置,首先,针对输入的高维度大数据中每一行数据建立第一Map任务,在每个Map任务中按照维度对数据进行分割,划分后的特征值通过汇总在第一Reduce节点中得到1维密集子空间;然后,通过低维密集子空间确定高维候选子空间,再针对每个低维密集子空间建立第二Map任务,得到分布于每个k维密集子空间的所有样本点,在第二Map任务中确定高维候选子空间是否覆盖低维密集子空间;最后,通过汇总后在第二Reduce节点中根据高维候选子空间所覆盖的低维密集子空间中样本集合的交集,确定聚类后的高维密集子空间。本实施例依托于分布式MapReduce架构实现分布式并行化的Mafia子空间聚类算法的改进,由MapReduce架构负责大数据处理的分布式存储、工作调度、负载均衡、容错均衡、容错处理以及网络通信等复杂问题,利用MapReduce的数据分区和任务并行化优势设计合理的Map和Reudce函数实现算法的分布式并行执行。本实施例避免了不必要的归约操作和输入/输出操作,确保整个计算任务在每个节点分配均衡且互不干涉,只有特定的少量数据需要共享,所有数据通过有效的键值结构存储和访问,用最小的输入/输出成本和节点通信实现磁盘访问成本和网络访问成本的平衡,并且本实施例可以处理高维大数据,显著加速了执行速度并具有良好的可扩展性,基于MapReduce架构可以提升高维度大数据聚类的运行效率。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例的面向高维度大数据的子空间聚类方法的一种流程示意图;
图2为本发明实施例的面向高维度大数据的子空间聚类方法的另一种流程示意图;
图3为本发明实施例的面向高维度大数据的子空间聚类装置的一种结构示意图;
图4为本发明实施例的面向高维度大数据的子空间聚类装置的另一种结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
为了提升高维度大数据聚类的运行效率,本发明实施例提供了一种面向高维度大数据的子空间聚类方法及装置。
下面首先对本发明实施例所提供的一种面向高维度大数据的子空间聚类方法进行介绍。
需要说明的是,本发明实施例所提供的一种面向高维度大数据的子空间聚类方法的执行主体可以为执行聚类算法的多个处理器,例如DSP(Digital Signal Processor,数字信号处理器)、ARM(Advanced Reduced Instruction Set Computer Machines,精简指令集计算机微处理器)或者FPGA(Field-Programmable Gate Array,现场可编程门阵列)等,这里不作限定。其中,实现本发明实施例所提供的一种面向高维度大数据的子空间聚类方法的方式可以为设置于处理器中的软件、硬件电路和/或逻辑电路。
如图1所示,本发明实施例所提供的一种面向高维度大数据的子空间聚类方法,可以包括如下步骤:
S101,获取输入的高维度大数据,在MapReduce架构下针对每一行数据建立第一Map任务,并在每个第一Map任务中按照维度对数据进行分割,得到每个第一Map任务中每个维度的特征值。
需要说明的是,传统的子空间聚类算法通常假定整个数据集运行于单台计算机,当遇到高维度大数据时,在单台计算机上进行聚类分析会遇到内存容量和内核处理速度的瓶颈问题,通过选择并行处理的方式可以提高现有子空间聚类算法的效率和可扩展性。并行处理所为一种提高运算速度的高效方法,是通过多个处理节点协同工作将一个数据集分解成若干个子数据集,各子数据集均由独立的节点进行运算处理。基于并行处理的思想,本实施例首先将输入的高维度大数据的每一行实例按行号进行编号,并按照维度对实例进行特征拆分。也就是在执行传统的Mafia子空间聚类算法之前,先按照行对高维度大数据进行了划分,再按照传统的Mafia子空间聚类算法将维度进行划分,在输入的数据过于庞大时,传统的Mafia子空间聚类算法将维度进行划分后的数据量可能仍然很庞大,例如得到上万行的数据,因此,在将维度进行划分之前按行进行划分,最后得到的数据减少了很多,从而释放的内存和内核处理的压力。
需要强调的是,对获取的高维度大数据每行数据建立一个MapReduce架构下的第一Map任务,在第一Map任务中,以维度编号、实例行号和实例在该维度上的数据进行输出,例如第i行的数据为<d1,d2,…,dD>,则输出的为<1,i:d1>,<2,i:d2>…<N,i:dD>,表示的是第1维第i行的数据为d1、第2维第i行的数据为d2、第N维第i行的数据为dD。其中,MapReduce架构用来实现以大规模并行方式对大规模数据的处理,采用“分而治之”的思想,将一项任务划分为多个子任务,这些子任务在集群的闲置节点之间调度并得到高速处理,然后再将子节点输出的结果进行合并。MapReduce是一种编程模型,用于大规模数据集(大于1TB)的并行运算,MapReduce包含Map(映射)和Reduce(归约),和它们的主要思想,都是从函数式编程语言里借来的,还有从矢量编程语言里借来的特性。它极大地方便了编程人员在不会分布式并行编程的情况下,将自己的程序运行在分布式系统上。当前的软件实现是指定一个Map(映射)函数,用来把一组键值对映射成一组新的键值对,指定并发的Reduce(归约)函数,用来保证所有映射的键值对中的每一个共享相同的键组。
S102,将每个第一Map任务中每个维度的特征值发送至第一Reduce节点,以使在每个第一Reduce节点中,获取并根据每个维度所有特征值的数据区域、预设窗口数、预设窗口合并阈值及预设窗口密度阈值,得到每个维度的1维密集子空间。
需要说明的是,将第一Map任务中得到的每个维度的特征值发送至第一Reduce节点,将每个维度的所有特征值进行整合。对于每个维度,所有特征值的数据区域可以是预先设定的,也可以是通过对所有特征值的计算得到的最小值到最大值的范围;预设窗口数、预设窗口合并阈值以及预设窗口密度阈值都是用户或者本领域技术人员根据经验预先设定的;预设窗口数是指将每个维度的所有特征值进行区域划分的个数,预设窗口合并阈值是指划分后的区域相互之间进行合并的条件,预设窗口密度阈值是指可以将划分的区域确定为1维密集子空间的条件。需要强调的是,同一个处理器节点在得到划分结果后,将划分结果予以保存,再进行本步骤的操作。
可选的,所述获取并根据每个维度所有特征值的数据区域、预设窗口数、预设窗口合并阈值及预设窗口密度阈值,得到每个维度的1维密集子空间的步骤,可以包括:
首先,根据每个维度的所有特征值,确定每个维度中特征值的最大值及最小值,并确定每个维度所有特征值的数据区域为大于或等于上述最小值、且小于或等于上述最大值的数据区域。
需要说明的是,为了保证数据区域划分的准确性,可以将每个维度所有特征值的数据区域确定为每个维度所有特征值中最小值至最大值的范围。例如,输入的高维度大数据中第一维数据中最小值为-152、最大值为512,则第一维数据的数据区域为[-152,512]。
其次,获取并根据预设窗口数,将数据区域均分为Np个初始窗口,并将所有特征值分配至各个初始窗口。
其中,Np为预设窗口数。需要说明的是,预设窗口数通常为用户或者本领域技术人员根据经验值预先设定,并且小于或者等于高维度大数据的总行数。例如,输入的高维度大数据总共有12000行数据,预设窗口数如果设置为12000,则可以将每一个维度的12000个数据分别分配至各预设窗口。
再次,获取预设窗口合并阈值,并统计每个初始窗口中特征值的数量。
需要说明的是,为了减少每维数据分割的数量,以对均匀划分的数据区域进行合并,并且需要根据一定的合并条件进行合并,预设窗口合并阈值即可作为合并条件,而且合并条件与每个初始窗口中特征值的数量有关,需要进行统计,统计之后形成初始网格,可以用<窗口号,实例数,最小值,最大值>的格式进行存储。
然后,在两个相邻初始窗口中特征值的数量的差值小于预设窗口合并阈值时,合并两个相邻初始窗口,得到合并后的窗口。
需要说明的是,按照相邻初始窗口中特征值的数量的差值小于预设窗口合并阈值的条件对相邻初始窗口进行合并,直至合并后的窗口不再变化,可以得到不均匀划分的数据区域,对于数据剪枝没有要求,提高了算法的伸缩性。最后得到的窗口可能是多个不均匀的窗口,也可能是合并成了一个窗口。合并成一个窗口不利于后续的聚类分析,因此,通常情况下,如果合并最后得到的窗口为一个窗口,需要对该窗口再进行划分。
具体的,在合并后的窗口的总数量为1时,根据预设窗口数,将合并后的窗口均分为Np个窗口。
需要说明的是,对合并后的一个窗口进行划分可以是按照先前设置的预设窗口数进行划分,也可以是根据新输入的预设窗口数进行划分。本实施例中,为了减小数据重复输入的复杂度,预设窗口数为先前输入的预设窗口数。
最后,获取预设窗口密度阈值,确定合并后的窗口中、特征值的数量大于预设窗口密度阈值的窗口为1维密集子空间。
需要说明的是,如果合并后的窗口中特征值的数量过小,则认为该窗口不是密集子空间,也就是说,该窗口不作为聚类的子空间;通常情况下,可以通过用户或者本领域技术人员预先设定的窗口密度阈值衡量合并后的窗口中特征值的数量是否过小,如果合并后的窗口中特征值的数量小于该预设窗口密度阈值,则认为合并后的窗口中特征值的数量过小。通过该步骤可以得到所有满足条件的密集子空间,将这些密集子空间定义为每个维度下的1维密集子空间。
具体的,为了便于后续步骤对于每个维度下不同维密集子空间的聚类运算处理,在确定每个维度下的1维密集子空间之后,可以以键值对形式存储1维密集子空间及该1维密集子空间中的所有样本点。
其中,样本点为每一行的所有特征值。需要说明的是,键值对形式类似于索引形式,例如以<S_1,i>键值对形式表示第i维数据的1维密集子空间,以<S_1,i,p_1,…,p_n>键值对形式表示第i维数据的1维密集子空间中每个特征值的行号,其中,p_1为第1个特征值的行号,p_n为第n个特征值的行号,则以键值对形式,每个维度的数据的密集子空间中每个特征值的信息一目了然,利于后续步骤的调用。
需要强调的是,上述S101及S102步骤运算的最大复杂度为O(NplogNp),即步骤运算的复杂度与预设窗口数有关,每个子处理器的Reduce函数处理一个维度,计算时间随着维度的增加线性增长。
S103,根据每两个k维密集子空间,确定k+1维候选子空间。
其中,k大于或等于1,k+1小于或等于所述高维度大数据的总维度。需要说明的是,再得到聚类的密集子空间之后需要计算下一维的聚类密集子空间,通常情况下,高维的密集子空间无法直接根据低维的密集子空间得到,因此,根据已经得到的密集子空间可以得到高维的候选子空间,再从候选子空间中确定密集子空间。1维密集子空间中的特征值较少,得到2维候选子空间的过程相对较简单;而其余从低维密集子空间得到高维候选子空间的过程相对较复杂,过程上不同。
可选的,所述根据每两个k维密集子空间,确定k+1维候选子空间的步骤,可以包括:
首先,在每个k维密集子空间均为1维密集子空间时,合并每两个1维密集子空间,得到2维候选子空间。
需要说明的是,对于1维密集子空间,直接不同维度的1维密集子空间两两合并生成2维候选子空间。
其次,在k维密集子空间为N维密集子空间时,若每两个k维密集子空间包含相同的k-1维密集子空间,通过对这两个k维密集子空间进行融合、去重,得到k+1维候选子空间。
其中,N大于1、且小于所述高维度大数据的总维度。需要说明的是,对于k维密集子空间,密集子空间两两判断是否有相同的k-1维密集子空间,有则输出这两个密集子空间融合后形成的k+1维候选子空间,最后将得到的k+1维候选子空间进行去重,例如两个2维密集子空间,分别为<1,2>和<1,3>共有1维密集子空间<1>;两个2维密集子空间,分别为<1,2>和<2,3>共有1维密集子空间<2>;两个2维密集子空间,分别为<1,3>和<2,3>共有1维密集子空间<3>,都合并为k+1维候选子空间<1,2,3>,去重后三个k+1维候选子空间整合为一个k+1维候选子空间输出。这个过程的时间复杂度为O(N2),即每两个k-1维密集子空间都尝试进行k维密集子空间的融合,N是k-1维密集子空间的总数。其中,每个密集子空间可以被表示为按维度升序或者降序排列的密集窗口编号,以保证得到的k+1维候选子空间中特征值的顺序一定,避免乱序排列,再经过去重操作充分保证了候选子空间的唯一性。
S104,针对每个k维密集子空间建立第二Map任务,并获得分布于每个k维密集子空间的所有样本点。
需要说明的是,针对每个k维密集子空间建立第二Map任务,在第二Map任务中,对每个k维密集子空间进行分析、统计,得到分布于每个k维密集子空间的所有样本点,即每个k维密集子空间中每一行的所有数据。
S105,在每个第二Map任务中,在k+1维候选子空间包含k维密集子空间中所有维度时,确定该k+1维候选子空间覆盖该k维密集子空间。
需要说明的是,在每个第二Map任务中,每个k维密集子空间通过遍历所有k+1维候选子空间,找到所从属的k+1维候选子空间,发送k维密集子空间中的所有样本点至聚类该k+1维候选子空间的Reduce节点,从而将被相同k+1维候选子空间覆盖的所有k维密集子空间包含的样本点,发送至同一Reduce节点。其中,可以通过k+1维候选子空间维度和k维密集子空间维度的包含关系进行匹配。例如,第m个3维候选子空间<S_3{d1,d2,d3},m>覆盖第n1个2维密集子空间<S_2{d1,d2},n1>、第n2个2维密集子空间<S_2{d2,d3},n2>及第n3个2维密集子空间<S_2{d1,d3},n3>,其中,d1、d2及d3为维度编号,2维密集子空间S_2{d1,d2}、S_2{d2,d3}、S_2{d1,d3}覆盖的样本点集合分别为DB1、DB2及DB3,则2维密集子空间S_2{d1,d2}、S_2{d2,d3}和S_2{d1,d3}的Map任务分别输出<S_3{d1,d2,d3},DB1>,<S_3{d1,d2,d3},DB2>及<S_3{d1,d2,d3},DB3>。
S106,将k+1维候选子空间覆盖的所有k维密集子空间中的样本点集合发送至第二Reduce节点,以使在每个第二Reduce节点中,获取k+1维候选子空间覆盖的所有k维密集子空间中样本点集合的交集及预设簇类密度阈值,并根据k+1维候选子空间、上述交集及预设簇类密度阈值,得到聚类后的k+1维密集子空间。
需要说明的是,将第二Map任务中得到的所有k+1维候选子空间的样本点发送至第二Reduce节点,将该候选子空间覆盖的所有k维密集子空间的样本点集合取交集得到D_k+1,从而确定聚类后的k+1维密集子空间。
可选的,所述获取k+1维候选子空间覆盖的所有k维密集子空间中样本点集合的交集及预设簇类密度阈值,并根据k+1维候选子空间、交集及预设簇类密度阈值,得到聚类后的k+1维密集子空间的步骤,可以包括:
首先,统计k+1维候选子空间覆盖的所有k维密集子空间中样本点集合的交集中样本点的数量。
需要说明的是,k+1维候选子空间中可能覆盖了多个k维密集子空间,所有k维密集子空间相互之间有相交的情况,相交后得到的交集中包含了多个样本点,这里统计交集中样本点的数量,用以确定k+1维候选子空间是否为k+1维密集子空间。
其次,获取预设簇类密度阈值,在交集中样本点的数量大于预设簇类密度阈值时,确定k+1维候选子空间为聚类后的k+1维密集子空间。
需要说明的是,预设簇类密集阈值为密集子空间的判定阈值,通常为用户或者本领域技术人员根据经验预先设定,如果交集中样本点的数量大于该预设簇类密度阈值,则认为该k+1维候选子空间的样本点密度较大,可以将k+1维候选子空间确定为聚类后的k+1维密集子空间。
需要强调的是,如果k+1维密集子空间存在,且k+1小于高维度大数据的总维度,则重复执行S103至S106,迭代计算k+2维候选子空间和密集子空间;否则终止。
具体的,为了便于进行下一维候选子空间的确定,在确定聚类后的k+1维密集子空间的之后,可以以键值对形式存储k+1维密集子空间及该k+1维密集子空间中的所有样本点。
需要说明的是,键值对形式类似于索引形式,例如以<S_k+1,m>键值对形式表示第m个k+1维密集子空间,以<S_k+1,m,<…,dt,…>>键值对形式表示第m个k+1维密集子空间中包含的所有样本点,dt为以样本点在获取的原始高维度大数据中所处行号表示的具体样本点。
应用本实施例,首先,针对输入的高维度大数据中每一行数据建立第一Map任务,在每个Map任务中按照维度对数据进行分割,划分后的特征值通过汇总在第一Reduce节点中得到1维密集子空间;然后,通过低维密集子空间确定高维候选子空间,再针对每个低维密集子空间建立第二Map任务,得到分布于每个k维密集子空间的所有样本点,在第二Map任务中确定高维候选子空间是否覆盖低维密集子空间;最后,通过汇总后在第二Reduce节点中根据高维候选子空间所覆盖的低维密集子空间中样本集合的交集,确定聚类后的高维密集子空间。本实施例依托于分布式MapReduce架构实现分布式并行化的Mafia子空间聚类算法的改进,由MapReduce架构负责大数据处理的分布式存储、工作调度、负载均衡、容错均衡、容错处理以及网络通信等复杂问题,利用MapReduce的数据分区和任务并行化优势设计合理的Map和Reudce函数实现算法的分布式并行执行。本实施例避免了不必要的归约操作和输入/输出操作,确保整个计算任务在每个节点分配均衡且互不干涉,只有特定的少量数据需要共享,所有数据通过有效的键值结构存储和访问,用最小的输入/输出成本和节点通信实现磁盘访问成本和网络访问成本的平衡,并且本实施例可以处理高维大数据,显著加速了执行速度并具有良好的可扩展性,基于MapReduce架构可以提升高维度大数据聚类的运行效率。
如图2所示,本发明实施例的所提供的一种面向高维度大数据的子空间聚类方法,在图1所示的实施例的步骤S105之后,该方法还可以包括:
S107,将k+1维候选子空间及该k+1维候选子空间覆盖的k维密集子空间分发至各个子节点执行。
需要说明的是,可以通过分布式缓存机制将每个k+1维候选子空间以及每个k维密集子空间分别分发至各子节点执行,每个子节点可以执行一个聚类的子空间,也可以执行多个聚类的子空间,这里不做限定。当然,为了更好的提高算法运行的效率,可以一个子节点执行一个聚类的子空间,这样需要的子节点的数量可能会较多。
需要强调的是,本实施例中S101至S106与图1所示实施例完全相同,这里不再赘述。
应用本实施例,首先,针对输入的高维度大数据中每一行数据建立第一Map任务,在每个Map任务中按照维度对数据进行分割,划分后的特征值通过汇总在第一Reduce节点中得到1维密集子空间;然后,通过低维密集子空间确定高维候选子空间,再针对每个低维密集子空间建立第二Map任务,得到分布于每个k维密集子空间的所有样本点,在第二Map任务中确定高维候选子空间是否覆盖低维密集子空间;最后,通过汇总后在第二Reduce节点中根据高维候选子空间所覆盖的低维密集子空间中样本集合的交集,确定聚类后的高维密集子空间。本实施例依托于分布式MapReduce架构实现分布式并行化的Mafia子空间聚类算法的改进,由MapReduce架构负责大数据处理的分布式存储、工作调度、负载均衡、容错均衡、容错处理以及网络通信等复杂问题,利用MapReduce的数据分区和任务并行化优势设计合理的Map和Reudce函数实现算法的分布式并行执行。本实施例避免了不必要的归约操作和输入/输出操作,确保整个计算任务在每个节点分配均衡且互不干涉,只有特定的少量数据需要共享,所有数据通过有效的键值结构存储和访问,用最小的输入/输出成本和节点通信实现磁盘访问成本和网络访问成本的平衡,并且本实施例可以处理高维大数据,显著加速了执行速度并具有良好的可扩展性,基于MapReduce架构可以提升高维度大数据聚类的运行效率;并且将聚类得到的密集子空间及候选子空间缓存、分发至各个子节点执行,可以保证聚类数据的并行执行,提高算法的运行效率。
相应于上述方法实施例,本发明实施例提供了一种面向高维度大数据的子空间聚类装置,如图3所示,该装置可以包括:
第一分割模块310,用于获取输入的高维度大数据,在MapReduce架构下针对每一行数据建立第一Map任务,并在每个第一Map任务中按照维度对数据进行分割,得到每个第一Map任务中每个维度的特征值;
第一确定模块320,用于将每个第一Map任务中每个维度的特征值发送至第一Reduce节点,以使在每个第一Reduce节点中,获取并根据每个维度所有特征值的数据区域、预设窗口数、预设窗口合并阈值及预设窗口密度阈值,得到每个维度的1维密集子空间;
第二确定模块330,用于根据每两个k维密集子空间,确定k+1维候选子空间,其中,k大于或等于1,k+1小于或等于所述高维度大数据的总维度;
第二分割模块340,用于针对每个k维密集子空间建立第二Map任务,并获得分布于每个k维密集子空间的所有样本点;
第三确定模块350,用于在每个第二Map任务中,在k+1维候选子空间包含k维密集子空间中所有维度时,确定所述k+1维候选子空间覆盖所述k维密集子空间;
第四确定模块360,用于将所述k+1维候选子空间覆盖的所有k维密集子空间中的样本点集合发送至第二Reduce节点,以使在每个第二Reduce节点中,获取所述k+1维候选子空间覆盖的所有k维密集子空间中样本点集合的交集及预设簇类密度阈值,并根据所述k+1维候选子空间、所述交集及所述预设簇类密度阈值,得到聚类后的k+1维密集子空间。
应用本实施例,首先,针对输入的高维度大数据中每一行数据建立第一Map任务,在每个Map任务中按照维度对数据进行分割,划分后的特征值通过汇总在第一Reduce节点中得到1维密集子空间;然后,通过低维密集子空间确定高维候选子空间,再针对每个低维密集子空间建立第二Map任务,得到分布于每个k维密集子空间的所有样本点,在第二Map任务中确定高维候选子空间是否覆盖低维密集子空间;最后,通过汇总后在第二Reduce节点中根据高维候选子空间所覆盖的低维密集子空间中样本集合的交集,确定聚类后的高维密集子空间。本实施例依托于分布式MapReduce架构实现分布式并行化的Mafia子空间聚类算法的改进,由MapReduce架构负责大数据处理的分布式存储、工作调度、负载均衡、容错均衡、容错处理以及网络通信等复杂问题,利用MapReduce的数据分区和任务并行化优势设计合理的Map和Reudce函数实现算法的分布式并行执行。本实施例避免了不必要的归约操作和输入/输出操作,确保整个计算任务在每个节点分配均衡且互不干涉,只有特定的少量数据需要共享,所有数据通过有效的键值结构存储和访问,用最小的输入/输出成本和节点通信实现磁盘访问成本和网络访问成本的平衡,并且本实施例可以处理高维大数据,显著加速了执行速度并具有良好的可扩展性,基于MapReduce架构可以提升高维度大数据聚类的运行效率。
可选的,所述第一确定模块320,具体可以用于:
根据每个维度的所有特征值,确定每个维度中特征值的最大值及最小值,并确定每个维度所有特征值的数据区域为大于或等于所述最小值、且小于或等于所述最大值的数据区域;
获取并根据预设窗口数,将所述数据区域均分为Np个初始窗口,并将所有特征值分配至各个初始窗口,其中,Np为所述预设窗口数;
获取预设窗口合并阈值,并统计每个初始窗口中特征值的数量;
在两个相邻初始窗口中特征值的数量的差值小于所述预设窗口合并阈值时,合并所述两个相邻初始窗口,得到合并后的窗口;
获取预设窗口密度阈值,确定所述合并后的窗口中、特征值的数量大于所述预设窗口密度阈值的窗口为1维密集子空间。
可选的,所述第一确定模块320,具体还可以用于:
在所述合并后的窗口的总数量为1时,根据所述预设窗口数,将所述合并后的窗口均分为Np个窗口。
可选的,所述第一确定模块320,具体还可以用于:
以键值对形式存储所述1维密集子空间及所述1维密集子空间中的所有样本点。
可选的,所述第二确定模块330,具体可以用于:
在每个k维密集子空间均为1维密集子空间时,合并每两个1维密集子空间,得到2维候选子空间;
在k维密集子空间为N维密集子空间时,若每两个k维密集子空间包含相同的k-1维密集子空间,通过对所述两个k维密集子空间进行融合、去重,得到k+1维候选子空间,其中,N大于1、且小于所述高维度大数据的总维度。
可选的,所述第四确定模块360,具体可以用于:
统计所述k+1维候选子空间覆盖的所有k维密集子空间中样本点集合的交集中样本点的数量;
获取预设簇类密度阈值,在所述交集中样本点的数量大于所述预设簇类密度阈值时,确定所述k+1维候选子空间为聚类后的k+1维密集子空间。
可选的,所述第四确定模块360,具体还可以用于:
以键值对形式存储所述k+1维密集子空间及所述k+1维密集子空间中的所有样本点。
更进一步的,在包含第一分割模块310、第一确定模块320、第二确定模块330、第二分割模块340、第三确定模块350、第四确定模块360的基础上,如图4所示,本发明实施例所提供的一种面向高维度大数据的子空间聚类装置还可以包括:
分发模块410,用于将所述k+1维候选子空间及所述k+1维候选子空间覆盖的k维密集子空间分发至各个子节点执行。
应用本实施例,首先,针对输入的高维度大数据中每一行数据建立第一Map任务,在每个Map任务中按照维度对数据进行分割,划分后的特征值通过汇总在第一Reduce节点中得到1维密集子空间;然后,通过低维密集子空间确定高维候选子空间,再针对每个低维密集子空间建立第二Map任务,得到分布于每个k维密集子空间的所有样本点,在第二Map任务中确定高维候选子空间是否覆盖低维密集子空间;最后,通过汇总后在第二Reduce节点中根据高维候选子空间所覆盖的低维密集子空间中样本集合的交集,确定聚类后的高维密集子空间。本实施例依托于分布式MapReduce架构实现分布式并行化的Mafia子空间聚类算法的改进,由MapReduce架构负责大数据处理的分布式存储、工作调度、负载均衡、容错均衡、容错处理以及网络通信等复杂问题,利用MapReduce的数据分区和任务并行化优势设计合理的Map和Reudce函数实现算法的分布式并行执行。本实施例避免了不必要的归约操作和输入/输出操作,确保整个计算任务在每个节点分配均衡且互不干涉,只有特定的少量数据需要共享,所有数据通过有效的键值结构存储和访问,用最小的输入/输出成本和节点通信实现磁盘访问成本和网络访问成本的平衡,并且本实施例可以处理高维大数据,显著加速了执行速度并具有良好的可扩展性,基于MapReduce架构可以提升高维度大数据聚类的运行效率;并且将聚类得到的密集子空间及候选子空间缓存、分发至各个子节点执行,可以保证聚类数据的并行执行,提高算法的运行效率。
需要说明的是,本发明实施例的面向高维度大数据的子空间聚类装置为应用上述面向高维度大数据的子空间聚类方法的装置,则上述面向高维度大数据的子空间聚类方法的所有实施例均适用于该装置,且均能达到相同或相似的有益效果。
需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
本说明书中的各个实施例均采用相关的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于系统实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
以上所述仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内所作的任何修改、等同替换、改进等,均包含在本发明的保护范围内。