基于MapReduce的并行密度聚类挖掘方法与流程

文档序号:22042055发布日期:2020-08-28 18:14阅读:382来源:国知局
基于MapReduce的并行密度聚类挖掘方法与流程

本发明涉及一种大数据挖掘技术领域,特别是涉及一种基于mapreduce的并行密度聚类挖掘方法。



背景技术:

数据挖掘又被称为知识发现kdd(knowledgediscoverindatabase),其目的在于发现大量数据集中有用的信息。常见的数据挖掘任务有聚类、分类、关联规则挖掘等。其中,聚类算法是一种无监督的学习算法,能够根据数据对象的相关特征,将相似的对象归为一类,而差别较大的数据对象则划分到不同类中,因此聚类算法可以从样本数据中发现潜在的分布模式,被广泛应用于文本分析,生物学,医学,卫星图像分析等各种领域。在聚类算法中,基于密度的聚类算法,如dbscan和optics算法,可以发现任意形状的簇且对噪声不敏感,受到人们的广泛关注。

随着互联网信息技术的不断发展以及大数据时代的到来,使得大数据相较于传统数据,具有了4v特性——volume(数量大)、variety(速度快)、value(价值密度低)。但是传统的密度聚类算法所需的时间复杂度较高,只适用于较小规模的数据集,而在处理大数据时无疑会产生更庞大的计算复杂度。所以,如何降低密度聚类算法的计算复杂度,将其应用到大数据上,是个具有挑战性的难题。

随着google开发的mapreduce架构的广泛应用,以hadoop、spark为代表的分布式计算架构受到了越来越多的关注。为了能进一步降低密度聚类算法的计算复杂度,通过改进传统的密度聚类算法,并与分布式计算架构相结合成为目前密度聚类算法研究的主要方向。li等人首先提出了基于mapreduce下的并行dbscan算法,其使用mapreduce计算架构,将数据分片后并行执行dbscan算法形成局部簇,再通过增量的方式合并得到全局簇,实现了dbscan算法的并行化,然而该算法没有提出有效的方法来划分数据,合并局部簇的计算复杂度较高;silva等人提出了mapreduce下的分布式dbscan算法,根据特定场景划分数据,聚类簇的合并采用增量的方式,算法的时间复杂度较高,算法总体并行化效率较低。noticewala等人和瞿原等人分别提出了基于hadoop和基于spark下的并行密度聚类算法,有效降低密度聚类算法的计算复杂度,同时分别给出了基于hadoop和spark下的数据划分方案,但算法对数据进行分区处理时未具体考虑数据特性,也没有给出有效的局部簇合并生成全局簇的方法。

如何有效地划分数据,合并局部簇一直是密度聚类算法并行化的重要研究内容。由于数据网格化能将空间数据划分为有限数目的单元,落入同一网格的点可以被看作一个对象进行处理,可以很好地解决数据划分的问题。因此,he等人提出mr-dbscan算法,采用均匀划分网格的方式将数据网格化,以网格单元作为对象并行执行dbscan算法,最后合并这些网格对象得到全局簇。然而算法明显存在两个问题:均匀划分网格时,网格单元的大小实际难以确定,算法的聚类效果受网格单元大小的影响较大,导致算法的聚类效果不佳;另外,算法在合并局部簇采用增量的方式,计算效率仍然较低。在此基础上,宋董飞等人和huang等人分别提出了基于hadoop下的h-dbscan算法和基于spark下的s-dbscan算法,同样是采用均分网格的方法来划分数据,不同的是他们通过加入网格边界的扩展,以此来提高聚类结果的精确度和局部簇的合并效率。为了能更有效地划分网格,以及进一步加快合并局部簇的效率,王兴等人提出增量并行化快速聚类算法ip-dbscan算法,该算法主要分为三个阶段:首先通过二分法和贪心算法对空间数据进行合理网格化;其次进行本地局部聚类,获得局部簇候选集;最后使用r*-tree索引策略进一步提高局部簇的合并速度。相较于其他按网格划分数据的并行密度聚类算法,ip-dbscan算法能更加合理地对数据进行划分,且在合并局部簇时加快了收敛速度,从而进一步加快了算法的并行化效率。然而该算法仍存在两个明显的不足:一方面,算法采用二分法划分数据时,仍需要输入网格边长阈值,阈值的不同会影响算法的聚类结果准确度,导致聚类结果的准确度不高;另一方面,在进行本地局部聚类时计算复杂度较高,在合并局部簇时没有采用并行化的思想,算法总体并行化效率有待进一步提升。



技术实现要素:

本发明旨在至少解决现有技术中存在的技术问题,特别创新地提出了一种基于mapreduce的并行密度聚类挖掘方法。

为了实现本发明的上述目的,本发明提供了一种基于mapreduce的并行密度聚类挖掘方法,包括以下步骤:

s1,根据数据点空间分布状况,自适应划分网格单元;

s2,对每个数据分区,构建加权网格间的关联性;

s3,计算网格密度;

s4,利用mapreduce计算模型,得到并行计算局部簇;

s5,利用并查集的局部簇合并算法,以及mapreduce计算模型,得到聚类全局簇。

在本发明的一种优选实施方式中,在步骤s1中包括:

将d维数据空间等分为2d个初始网格单元,再根据数据点之间的最小平均距离计算网格边长的划分阈值当所有网格满足非空且当前边长大于密度阈值时,则停止网格划分;其网格边长划分阈值的计算方法:

其中,n表示数据点的个数;

min()表示取最小值;

μ为当前最小网格单元中的点个数;

pi和pj分别为d维空间中的任意两个数据点。

在本发明的一种优选实施方式中,在步骤s2中包括:对加权网格的作用范围进行设置:

其中,表示加权网格作用范围内的网格集合,表示一个网格单元,si表示在某一维度下的第i个网格单元;

si'表示区别于si的其余网格单元;

表示对于任意的i其1≤i≤d;

对加权网格的权值进行设置:

对于中的一个数据点p,如果并且则设置为1;否则,设置为0;

其中,表示网格单元的加权网格中的任意网格单元,表示网格单元相对于网格单元的权重值。

在本发明的一种优选实施方式中,在步骤s3中包括:

lbp(t)表示对p(t)作以2为底的对数运算。

h'(x)表示网格单元的密度;

其中,t表示数据网格化后的某一非空网格单元的密度,即以该网格单元为中心构成的加权网格中的所有数据点个数;x表示该密度取值下的网格单元数量;p(t)是网格单元密度为t所出现的概率;count(t)表示网格单元中网格密度为t的网格单元个数;count(n)表示划分后的非空网格单元总数。

在本发明的一种优选实施方式中,在步骤s4中包括:

在并行计算网格密度阶段:

输入网格对象g以及网格中的点pi;接着,执行map函数计算出以网格对象g为中心的加权网格中点的数量ci[g],并输出key-value值<g,ci[g]>;之后,执行reduce函数合并map函数的结果,并使用wgie策略计算出每个网格对象的网格密度hi,最后输出key-value值<(g,n(gi)),hi>传入下一个阶段;

在并行计算局部簇阶段:

输入数据集d中的点pi以及上个阶段计算出的key-value值<(g,n(gi)),hi>;之后,调用map函数对数据进行计算,如果输入的数据为数据点pi,则map函数计算每个数据点所对应的网格对象g并输出key-value值<g,pi>,如果输入的数据为key-value值<(g,n(gi)),hi>,则map函数计算当前网格对象g是否为核心网格,如果hi≤μ,则当前网格对象g为核心网格,输出key-value值<g,n(gi)>,如果hi>μ,则不输出任何结果;最后执行reduce函数,合并map函数的结果,输出key-value值<(g,n(gi)),n(pi)>。

在本发明的一种优选实施方式中,在步骤s5中包括:

s51,初始化每一个非空网格对象g∈g,将其看作一个单独的簇,每一个网格对象的状态都被初始化为unvisited,并且在算法执行之后每个网格对象的状态将变为unvisited,border和core这三个状态之一;

g表示网格对象集合;

unvisited表示未被访问的数据对象;

border表示非核心对象;

core表示核心对象;

s52,检索每一个核心网格对象g的key-value值<g,n(gi)>,将其状态由unvisited更改为core;

s53,对其邻域内的网格对象n(g)的状态进行设置,分为以下几种情况:

如果在n(g)中的一个网格对象gi的状态为border,则表示当前的网格对象gi已经分配到了另一个簇中,因此网格对象gi的状态保持不变;

如果在n(g)中的一个网格对象gi的状态为core,则将以gi为核心的局部簇合并到g的局部簇中;

如果在n(g)中的一个网格对象gi的状态为unvisited,则将其加入到以g为核心的局部簇中,并将gi的状态变更为border;

s54,执行完之后,根据数据点和网格id的相对应,得到聚类的全局簇,而被标记为unvisited的网格对象中的数据点是离群点。

在本发明的一种优选实施方式中,还包括:

s61,首先随机地将网格对象集合g划分为数量相近的k个部分g1,g2,...,gk,同时,将表r也划分为k个部分r1,r2,...,rk,其中k的值对应了执行算法所需要的并行节点数;

s62,执行map函数:

如果map函数输入的数据为数据点pi∈d,则map函数计算每个数据点所对应的网格对象g并输出key-value值<g,pi>;

如果输入的数据为表r中的局部簇数据,则检索该局部簇的核心网格对象的key-value值<g,n(gi)>,根据key值g在g1,g2,...,gk中进行索引,得到相应的k值,将此核心网格对象的key-value值分配到相应的rk中,并输出key-value值<mi,(g,n(gi))>传递到reduce函数中去;

s63,执行reduce函数,对于每个mi,并行化执行mecore算法,将得到的k个合并结果最后执行一次局部簇合并算法,再与<g,pi>进行结合得到聚类全局簇。

综上所述,由于采用了上述技术方案,本发明提出的方法在运行效率上以及聚类精确度上都有显著的提高。

本发明的附加方面和优点将在下面的描述中部分给出,部分将从下面的描述中变得明显,或通过本发明的实践了解到。

附图说明

本发明的上述和/或附加的方面和优点从结合下面附图对实施例的描述中将变得明显和容易理解,其中:

图1是本发明dbwgie-mr的流程示意图。

图2是本发明dbwgie-mr算法的加速比示意图。

图3是本发明三种算法的运行时间比较示意图。

具体实施方式

下面详细描述本发明的实施例,所述实施例的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。下面通过参考附图描述的实施例是示例性的,仅用于解释本发明,而不能理解为对本发明的限制。

该算法首先根据数据点空间分布状况,提出自适应网格划分策略(adg)来自适应划分网格单元;其次针对每个数据分区,提出邻居网格扩展策略(ne)构建其加权网格用于加强网格之间的关联性,以此提高聚类效果;同时提出加权网格信息熵策略(wgie)来计算网格密度以及密度聚类算法的ε邻域和核心对象,使密度聚类算法更适用于加权网格;接着结合mapreduce计算模型,提出并行计算局部簇算法(comcore-mr),从而提升算法的总体并行化效率;最后提出了基于并查集的局部簇合并算法(mecore),用于加快合并局部簇的收敛速度,并结合mapreduce计算模型,提出了并行合并局部簇算法(mecore-mr),实现了并行化合并局部簇,从而更快得到聚类结果的全局簇,提升了基于密度的聚类算法对局部簇合并的效率。本发明原理简单且易于实现,与已有的基于mapreduce的并行密度聚类算法相比较,本发明提出的算法无论是在运行效率上还是聚类精确度上都有显著的提高,此外通过该方法所挖掘出的知识,能够在生物学,医学,天文地理学上提供巨大的帮助。

1.数据划分

针对图像数据环境下基于网格划分数据的并行化密度聚类算法中存在的网格边长选取的不确定性和网格数据密度不一致性问题,提出adg策略用于将数据自适应地划分为网格。adg策略的描述如下:

先将d维图像数据空间等分为2d个初始图像网格单元,再根据图像数据点之间的最小平均距离计算图像网格边长的划分阈值当所有图像网格满足非空且当前边长大于密度阈值时,则停止图像网格划分。图像网格边长划分阈值的计算公式如下:

其中,pi和pj分别为d维空间中的任意两个数据点,μ为当前最小网格单元中的点个数。

证明:设最小非空网格单元的长度为l,若最小网格单元中两点的距离

又因为所以

又因为μ>0,所以

当μ≤2时,则有此时密度阈值小于该网格单元边长,则停止该网格的划分;而当密度阈值μ增大或者数据点距离||pi-pj||增大时,密度阈值也会随之增大,说明网格单元的数据点较多且网格中的点分布趋于稀疏时,密度阈值会大于该网格单元边长,则需要进一步划分网格单元。

因此公式能度量空间数据的分布状况,是网格边长划分阈值计算公式。

2.局部簇形成

针对图像数据环境下基于网格划分数据的并行化密度聚类算法中,局部簇的形成过程中存在的数据关联性较差导致的聚类效果不好以及局部簇的计算效率较低的问题,首先基于邻居网格和网格边界扩展原理,提出ne策略来构建每个数据分区的加权网格,加强图像网格之间的关联性,以此来提高聚类效果;同时,提出wgie策略来计算图像网格对象的密度值,并重定义ε邻域和核心对象,使密度聚类算法更适用于加权网格;最后结合mapreduce计算模型,提出并行的局部簇聚类算法comcore-mr,解决并行密度聚类算法对局部簇的计算效率较低的问题,以此来提升算法的总体并行化效率。

2.1加权网格构建

在对图像数据进行网格化处理后,为了能在聚类过程中考虑到相邻图像网格之间数据的关联性,进一步提升聚类效果,提出了ne策略来构建每个数据分区的加权网格,加强图像网格之间的关联性,以此来提高聚类效果。ne策略的描述如下:

首先对加权网格的作用范围进行设置。为更好地确定加权网格的作用范围,基于网格对象的邻居网格,加权网格的作用范围定义如下:

其中表示加权网格作用范围内的网格集合,表示一个网格单元,其中si代表在某一维度下的第i个网格单元;s.t.指subjectto,受限制于...;si'表示区别于si的其余网格单元;表示对于任意的i其1≤i≤d,d表示维度值。

其次对加权网格的权值进行设置。基于网格边界扩展原理,加权网格的权值设置如下:

对于中的一个图像数据点p,如果并且则设置为1;否则,设置为0。其中,表示网格单元的加权网格中的任意网格单元,表示网格单元相对于网格单元的权重值。

2.2网格密度的计算

目前图像数据环境下基于网格划分的并行化密度聚类算法中,网格密度的计算是使用网格中的数据点个数作为该网格对象的密度值,虽然这种密度表示方法在大多数基于密度的聚类问题中取得了较好效果,但在基于加权网格的密度聚类问题中,由于不同网格对象之间存在着关联性,因此直接使用网格中的数据点个数来计算加权网格中的网格密度,有失合理性。在构建好网格对象的加权网格之后,为使密度聚类算法能更好地应用于加权网格,提出wgie策略用于计算网格单元的密度,并重新定义密度聚类算法的ε邻域和核心对象。wgie策略定义如下:

其中,t表示图像数据网格化后的某一非空网格单元的密度,即以该网格单元为中心构成的加权网格中的所有数据点个数;x表示该密度取值下的网格单元数量;p(t)是网格单元密度为t所出现的概率;count(t)表示网格单元中网格密度为t的网格单元个数;count(n)表示划分后的非空网格单元总数。lbp(t)表示对p(t)作以2为底的对数运算,h'(x)表示网格单元的密度。

证明:

1)单调性:对于且t1-t2>0,p(t1)-p(t2)>0,则h'(p(t1))-h'(p(t2))<0;

2)非负性:因为0<p(t),lbp(t)<0,所以即h'(x)>0;

3)累加性:对于h'(p(t))=h'(p(t1,t2))=h'(p(t1)·p(t2))=h'(p(t1))+h'(p(t2))。

因此公式满足信息熵定义的基本条件,是系统稳定程度的度量公式。

为使密度聚类算法更好地应用于加权网格,根据加权网格的作用范围和加权网格信息熵策略来重定义ε邻域和核心对象。核心对象与网格单元的密度值密切相关,采用加权网格与信息熵策略能有效刻画加权网格中网格对象的密度值,当网格单元的密度h'(x)小于给定的密度阈值μ时,则说明以该网格单元为中心的加权网格中的数据是比较有序的,因此执行聚类算法的过程中以该网格单元作为中心效果会更好,该网格单元中成为核心对象的概率越大。ε邻域和核心对象定义如下:

定义1(加权网格的ε邻域)对于一个网格对象gi,以该网格对象为中心构建加权网格后,加权网格范围内的所有网格对象为网格对象gi的ε邻域。

定义2(加权网格的核心对象)对于一个网格对象gi,若其密度满足h'(x)≤μ(即加权网格信息熵小于给定的阈值),则该网格对象为核心网格对象。包含在核心网格内的任一点均为核心对象。

2.3局部聚类

在提出了图像网格对象的密度计算方法之后,为了能更快地进行局部聚类,进一步加快算法的总体并行化效率,本文提出基于mapreduce的并行化计算局部簇的comcore-mr算法。该算法主要分为两个阶段,并行计算图像网格密度阶段和并行计算局部簇阶段。

首先在并行计算图像网格密度阶段,需要输入网格对象g以及网格中的点pi;pi为d维空间中的任意一个数据点,接着,执行map函数计算出以网格对象g为中心的加权网格中点的数量ci[g],并输出key-value值<g,ci[g]>。之后,执行reduce函数合并map函数的结果,并使用wgie策略计算出每个网格对象的网格密度hi,最后输出key-value值<(g,n(gi)),hi>传入下一个阶段。

接着在并行计算局部簇阶段,需要输入数据集d中的点pi以及上个阶段计算出的key-value值<(g,n(gi)),hi>;之后,调用map函数对数据进行计算,如果输入的数据为数据点pi,则map函数计算每个数据点所对应的网格对象g并输出key-value值<g,pi>,如果输入的数据为key-value值<(g,n(gi)),hi>,则map函数根据定义2计算当前网格对象g是否为核心网格,如果hi≤μ,则当前网格对象g为核心网格,输出key-value值<g,n(gi)>,如果hi>μ,则不输出任何结果;最后执行reduce函数,合并map函数的结果,输出key-value值<(g,n(gi)),n(pi)>。最终得到的结果便是核心簇的序列集合,即聚类结果的局部簇。

3.局部簇的合并

目前图像数据环境下基于网格划分的并行化密度聚类算法中,对局部簇的合并通常是采取增量的方式,且没采取并行化思想,导致算法在合并局部簇时计算复杂度较高,算法总体并行化效率较低。针对这些问题,本文首先提出了基于并查集的局部簇合并算法mecore,用于加快合并局部簇的收敛速度;接着结合mapreduce计算模型,提出了基于mapreduce的并行化合并局部簇算法mecore-mr,实现并行化合并局部簇,从而进一步提升算法总体并行化效率。

3.1局部簇合并

为进一步加快合并局部簇的收敛速度,本文提出了基于并查集的合并局部簇算法mecore,该算法首先基于并查集对两个不相交集的合并方法,提出了基于并查集的合并不同网格对象的三个方法:makeset,find,unionset。makeset方法先将每个不同的网格对象单独处理为一个树叶节点;find方法将处于同一局部簇中的网格对象节点相连接,返回一棵以根节点为代表的树,簇的核心网格对象作为根节点,而局部簇中的其他网格对象作为叶节点,所有的叶节点都与根节点连接;unionset方法是将两个不同的局部簇进行合并,寻找共同的叶子结点,将其中一棵树的根节点转换为另一棵树的叶子结点。接着使用这三个方法对局部簇进行合并。对于所有的局部簇对象,将这些局部簇对象所构成的表r作为合并局部簇算法的输入,表的每一项都是核心网格对象g以及核心网格的邻域n(g)。总体步骤如下:

步骤1.首先,算法初始化每一个非空网格对象g∈g,将其看作一个单独的簇,每一个网格对象的状态都被初始化为unvisited,并且在算法执行之后每个网格对象的状态将变为unvisited,border和core这三个状态之一;g表示网格对象集合;unvisited表示未被访问的数据对象;border表示非核心对象;core表示核心对象;

步骤2.算法检索每一个核心网格对象g的key-value值<g,n(gi)>,将其状态由unvisited更改为core;

步骤3.对其邻域内的网格对象n(g)的状态进行设置,分为以下几种情况:

如果在n(g)中的一个网格对象gi的状态为border,则表示当前的网格对象gi已经分配到了另一个簇中,因此网格对象gi的状态保持不变。

如果在n(g)中的一个网格对象gi的状态为core,则将以gi为核心的局部簇合并到g的局部簇中。

如果在n(g)中的一个网格对象gi的状态为unvisited,则将其加入到以g为核心的局部簇中,并将gi的状态变更为border。

步骤4.算法执行完之后,根据数据点和网格id的相对应,便能得到聚类的全局簇,而被标记为unvisited的网格对象中的图像数据点便是离群点(outlier)。

3.2局部簇的并行化合并

基于并查集的局部簇合并算法可以很好地对局部簇进行合并得到聚类的全局簇。为了进一步提高合并局部簇的效率,解决基于密度的并行化聚类算法中没有并行化合并局部簇的问题,本文提出了基于mapreduce的并行化合并局部簇的mecore-mr算法。算法需要将网格对象集g、数据集d以及表r作为输入,其中表r中的数据是comcore-mr算法计算出的局部簇数据。mecore-mr算法的步骤如下:

步骤1.首先随机地将图像网格对象集合g划分为数量相近的k个部分g1,g2,...,gk,同时,将表r也划分为k个部分r1,r2,...,rk,其中k的值对应了执行算法所需要的并行节点数;

步骤2.执行map函数,如果map函数输入的数据为数据点pi∈d,则map函数计算每个数据点所对应的网格对象g并输出key-value值<g,pi>;如果输入的数据为表r中的局部簇数据,则检索该局部簇的核心网格对象的key-value值<g,n(gi)>,根据key值g在g1,g2,...,gk中进行索引,得到相应的k值,将此核心网格对象的key-value值分配到相应的rk中,并输出key-value值<mi,(g,n(gi))>传递到reduce函数中去;

步骤3.执行reduce函数,对于每个mi,并行化执行mecore算法,将得到的k个合并结果最后执行一次局部簇合并算法,再与<g,pi>进行结合得到聚类全局簇;mi表示节点对象,i为数量。

基于mapreduce的并行密度聚类算法(dbwgie-mr)的流程图如图1所示。首先根据数据点空间分布状况,提出自适应网格划分策略(adg)来自适应划分网格单元;其次针对每个数据分区,提出邻居网格扩展策略(ne)构建其加权网格用于加强网格之间的关联性,以此提高聚类效果;同时提出加权网格信息熵策略(wgie)来计算网格密度以及密度聚类算法的邻域和核心对象,使密度聚类算法更适用于加权网格;接着结合mapreduce计算模型,提出并行计算局部簇算法(comcore-mr),从而提升算法的总体并行化效率;最后提出了基于并查集的局部簇合并算法(mecore),用于加快合并局部簇的收敛速度,并结合mapreduce计算模型,提出了并行合并局部簇算法(mecore-mr),实现了并行化地合并局部簇,从而更快地得到聚类结果的全局簇,提升了基于密度的聚类算法对局部簇合并的效率。

4.基于mapreduce的并行密度聚类算法(dbwgie-mr)的有效性验证

为了验证方法dbwgie-mr的聚类效果,我们将dbwgie-mr方法应用于flame,compound,aggregation和d31四个数据集上,其具体信息如表1所示。将方法dbwgie-mr与mr-dbscan和h-dbscan方法在密度聚类精确度等方面进行了比较。另外,将d31数据集中的点数量进行扩充,构造成行数为30万行(0.6g),50万行(1g),100万行(2g),150万行(3g)的图像数据集,将方法dbwgie-mr与mr-dbscan和ip-dbscan在并行效率上进行比较。

表1实验数据集

4.1dbwgie-mr方法的聚类效果分析

为验证dbwgie-mr算法聚类结果的精准度,本文在基于flame,compound,aggregation和d31的数据集下进行实验,根据聚类结果的最优值、精确度、方差和运行时间,分别与mr-dbscan算法和h-dbscan算法的性能进行综合比较。聚类结果的最优值能够反映算法寻优能力的强弱程度,值越小表示寻找局部簇的能力越强;精确度可直观的反映算法聚类结果的好坏程度;运行算法20次得到聚类结果的方差能够表示算法的稳定程度,值越小表示算法越稳定;运行时间表示得到聚类结果所花费的时间。实验结果如表2所示。

表2各方法的聚类结果比较分析

从表2中可以看出,h-dbscan算法的聚类效果要比mr-dbscan算法的聚类效果要好,尤其是在flame数据集上精确度提升了4.6%。因为其在数据网格化的基础上加入了网格边界的二次扩展,在一定程度上克服了mr-dbscan算法没有考虑网格之间关联性的缺陷,具有一定的寻优能力。但由于采用的是均分网格的数据网格化方法,没有考虑到数据点的分布状况,因此h-dbscan算法的准确度和稳定性均不佳。而dbwgie-mr算法在精确度上比h-dbscan算法进一步提升了1.9%,最优值比其他两种算法都低,说明dbwgie-mr克服了以上算法的缺陷,采用adg策略自适应地划分网格单元,保证了数据网格化的合理性,加强了算法的寻优能力,因此dbwgie-mr算法的最优值最小;而且采用wgie策略,在聚类的过程中增强了网格对象之间的关联性,更合理地生成局部簇,算法的聚类效果更佳;由于这两种策略都很好地考虑到了空间中数据的分布状况,说明dbwgie-mr算法聚类过程的波动性较低,因此算法稳定性更好,dbwgie-mr算法的方差较低;此外,dbwgie-mr算法的运行时间比起mr-dbscan和h-dbscan算法,在flame数据集上分别降低了0.47s和0.89s,原因是dbwgie-mr算法采用了并行化合并局部簇算法mecore-mr算法,加快了合并局部簇的收敛速度,因此dbwgie-mr算法对聚类过程的执行速度得到提升。

4.2dbwgie-mr方法的并行性能分析

为验证dbwgie-mr算法在大数据环境下的运行性能,实验数据在基于d31数据集下进行实验,首先将d31数据集中的点数量进行扩充,构造成行数为30万行(0.6g),50万行(1g),100万行(2g),150万行(3g)的大数据集。同时,为验证算法在hadoop并行化框架下的计算能力,采用算法的加速比进行衡量。算法的加速比是指通过并行化计算使得算法的运行时间降低从而得到的性能提升,加速比通常被作为检验并行化算法性能的重要指标。在不同数据集规模下,dbwgie-mr算法的实验结果如图2所示。

从图中可以看出,dbwgie-mr算法在处理大数据集上具有很好的加速比。在一开始图像数据集较小时,如图中的0.6g数据量所示,随着计算节点数量的增加,加速比趋近于1,甚至在节点4时,出现了下降的趋势,加速比降低了0.2,这是由于在数据集的规模较小时,数据量远小于集群所处理的数据量,将数据分散到不同的计算节点中产生了不同的时间开销,包括集群运行时间,任务调度时间,节点存储时间等,这些开销降低了算法的计算速度,因此在这种情况下的并行效果是较低的;而在数据规模达到3g时,算法在4个节点下计算的加速比为4.6,比在一个节点下计算提高了3.6,原因是随着数据集规模的逐步增加,算法并行化计算局部簇和合并局部簇的优点逐渐被放大,使得算法在计算节点增加的同时,加速比呈线性的增长,算法的并行化效果得到很大的提升。这也表明dbwgie-mr算法适用于处理较大规模的数据集,并且随着计算节点的增长,并行化的效果更佳。

为进一步验证dbwgie-mr算法在大数据下的并行化性能,将dbwgie-mr算法的算法运行时间分别与mr-dbscan,ip-dbscan算法进行比较,所有的算法都是基于扩充后的d31数据集下,以及相同的并行计算节点下。实验结果如图3所示。

从图中可以看出,在数据集规模较小时,即数据点的数量在30m左右时,mr-dbscan算法完成聚类所需的时间最少,运行时间比ip-dbscan算法和dbwgie-mr算法分别减少102s和95s,dbwgie-mr算法执行时间则相对较长,原因是在数据集规模较小的阶段,dbwgie-mr算法需要采用adg策略和wgie策略自适应计算网格划分边长以及计算每个网格单元的密度,增加了算法处理数据集的时间。然而,随着数据集的规模提升,数据集的规模达到100m时,可以明显看到,ip-dbscan算法和dbwgie-mr算法的运行时间分别比mr-dbscan算法减少了160s和400s,原因在于在大规模数据集下,聚类过程中产生的局部簇的数量明显增加,而相较于mr-dbscan算法,ip-dbscan算法采用了并查集对局部簇进行合并,加快了局部簇的收敛,因此在合并局部簇上所需的计算时间有所减少,dbwgie-mr算法更是并查集合并局部簇的基础上,提出并行化合并局部簇,更进一步加快了对局部簇的合并计算,因此dbwgie-mr算法的运行时间要少于ip-dbscan算法;当数据规模达到150m时,dbwgie-mr算法的运行时间明显要少于mr-dbscan和ip-dbscan算法,分别降低了400s和700s,这也更加表明了在数据规模较大的情况下,dbwgie-mr算法能更快的对数据进行处理得到结果,并行化效果更佳。

综上所述,我们所提出的基于mapreduce的并行密度聚类方法(dbwgie-mr),在聚类效果和并行效率上都有显著的提升。

尽管已经示出和描述了本发明的实施例,本领域的普通技术人员可以理解:在不脱离本发明的原理和宗旨的情况下可以对这些实施例进行多种变化、修改、替换和变型,本发明的范围由权利要求及其等同物限定。

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