CN104615638A - 一种面向大数据的分布式密度聚类方法 - Google Patents
一种面向大数据的分布式密度聚类方法 Download PDFInfo
- Publication number
- CN104615638A CN104615638A CN201410687507.9A CN201410687507A CN104615638A CN 104615638 A CN104615638 A CN 104615638A CN 201410687507 A CN201410687507 A CN 201410687507A CN 104615638 A CN104615638 A CN 104615638A
- Authority
- CN
- China
- Prior art keywords
- value
- point
- key
- distance
- data
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2458—Special types of queries, e.g. statistical queries, fuzzy queries or distributed queries
- G06F16/2471—Distributed queries
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/18—File system types
- G06F16/182—Distributed file systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F18/00—Pattern recognition
- G06F18/20—Analysing
- G06F18/23—Clustering techniques
- G06F18/232—Non-hierarchical techniques
- G06F18/2321—Non-hierarchical techniques using statistics or function optimisation, e.g. modelling of probability density functions
Abstract
一种面向大数据的分布式密度聚类方法,包括如下步骤:步骤一:虚拟化环境、搭建Hadoop平台;步骤二:数据预处理与加载:从数据库中将原始数据表抽取,利用sqoop–query命令截取需要的字段,将预处理后的数据直接抽取到Hdfs中;步骤三:计算距离矩阵;步骤四:计算截止距离与点密度;步骤五:计算点与较高密度点的最小距离;步骤六:临界密度点临界距离以及聚类中心;步骤七:点进行聚类,得到最终的聚类结果;步骤八:剔除离群点。本发明在处理大数据集时快速有效,并具备输入参数对聚类结果的鲁棒性较好的效果。
Description
技术领域
本发明涉及一种大数据处理领域,涉及一种分布式密度聚类方法。
背景技术
基于密度的聚类方法将簇看作是数据空间中被低密度区域分割开的高密度对象区域。具备发现任意形状的聚类、识别数据集中的噪点、对输入对象的顺序不敏感、可伸缩性好等特点,因此在聚类分析中有着重要的应用。然而,绝大部分基于密度的聚类算法无法在密度不均匀的数据集中发现聚类并且存在对输入参数敏感、大规模数据迭代复杂等缺点。使得基于密度算法的应用在一定程度上受到限制。
DBSCAN(Density-Based Spatial Clustering of Applicationswith Noise)是一个比较有代表性的基于密度的聚类算法。DBSCAN聚类的结果受输入参数的影响,没有普适性。该算法用固定的参数识别聚类,在聚类过程中首先找到核心对象,然后向外扩展。然而,当聚类的稀疏程度不同时,若用固定的参数可能会破坏聚类的自然结构;当核心对象将不断增多时,未处理的对象被保留在内存中,因此在处理数据集庞大时造成严重内存消耗。目前虽然有很多方法对基于密度聚类算法进行了改进,但是一般方法都只是提高了小数据集的聚类质量及精度,并没有解决数据规模与维度增加所带来的计算效率问题。例如专利《基于空间最短距离平均的密度自适应无监督聚类方法》提出一种通过最短距离平均倍数系数步长来调整距离密度范围以适应不同密度聚类区的方法,部分解决了输入参数对聚类结果的影响问题。。专利《基于限定区域数据取样的密度聚类方法》中,发明者采用基于限定 区域数据取样技术的密度聚类方法,将每次数据取样的范围限定在距离核心点较近的区域,降低了大簇分裂产生造成的过多微簇的可能性。
大规模和高维度数据在以上方法中都不有得到解决。而随着物联网的发展,各种传感器大量的使用,使得采集的数据量急剧膨胀。单就交通领域的浮动车数据而言,每辆浮动车每隔5秒返回一条数据,一个中等城市的一天数据规模就达到108条。当我们在基于浮动车历史数据研究出行密度区识别问题时,这个数据量将达到1010条。
目前的密度聚类算法的无法快速有效的处理如此大规模的数据。
快速密度聚类算法(Clustering by fast search and find of density peaks)是一种无需根据目标函数不断迭代,并且能够有效识别任意形状簇的聚类算法。该方法主要利用点对之间的距离矩阵计算点密度,并结合与高密度点的距离参数来选取聚类中心,进而进行簇类划分。然而随着数据维度与规模的增加,该方法在计算空间点的密度矩阵时的计算量是成非线性增加的,聚类过程中不断的对距离矩阵中数据重复排序来确定各点的距离阈值时造成大量的内存消耗。在利用java和matlab编程实验中,30000点2维数据时算法就无法完成聚类过程。
发明内容
为解决现有密度聚类方法在处理大数据集时算法效率低下的问题,本发明提出了一种面向大数据的分布式密度聚类方法,利用分布式方法计算点密度与点与最小密度的距等阈值来对点进行聚类,在处理大数据集时快速有效,并具备输入参数对聚类结果的鲁棒性较好的效果。
本发明解决其技术问题所采用的技术方案是:
一种面向大数据的分布式密度聚类方法,所述聚类方法包括如下步骤:
步骤一:虚拟化环境、搭建Hadoop平台;
步骤二:数据预处理与加载
从数据库中将原始数据表抽取,利用sqoop–query命令截取需要的字段,将预处理后的数据直接抽取到Hdfs中;
步骤三:计算距离矩阵
Ai={di1 … din}ai·{a1 … an}={|ai·a1| … |ai·an|} (2)
其中,ai代表点的坐标(1≤i≤N),N为点集合的总数,Ai为距离矩阵的第i行距离向量。R为地球半径,0为地心,ai、aj为球面上的两点、球面坐标为ai(x1,y1),B(x2,y2),x1、x2∈[-π,π],y1、y2∈[-π/2,π/2];
在计算距离矩阵的第i行时,向量Ai中所有的|ai·aj|(1≤j≤N)都会用到相同起始点ai和整个数据集的所有点{aj|1≤j≤N};
|ai·aj|=R·arccos[cosy1cosy2cos(x1-x2)+siny1siny2] (3)
步骤四:计算截止距离与点密度
4.1)计算截止距离
截至距离dc为距离集合降序排列的20%的位置处的距离即:
dc=D([N*0.2]);
其中,D为计算所得的距离{dij|1≤i,j≤N}的降序排列集合,N为点的总数,[]为取整函数;
4.2)计算点密度ρ
点密度ρi为点i与其他所有点的距离小于截止距离dc的个数;
在Map过程中将同一行的元素集中在相同Key中,将每个小于 dij的元素化成常数‘1’加入到key值为i的value里;Reduce过程中对key值i对应的Values里的元素进行累加就得到各点的密度ρi;
步骤五:计算点与较高密度点的最小距离δi
δi为i与其高局部密度点的最小距离,计算δi的公式如下:
δi=min{dij|ρi<ρj},最大Max(ρi)点所对应的δ=Max(dij),包括如下步骤:
5.1)对ρi进行降序排序,得到对应i的排序后的集合{i}decrbypi;
5.2)利用i对应的{j|ρi<ρj},得到i点的δi计算所需要的d的角标集合{ij|ρi<ρj};
5.3)计算角标集合中对应dij的最小值,由{ij|ρi<ρj},距离集合{dij|1≤i,j≤N}得到计算δi所需要的{dij|ρi<ρj};并且记录当δi=min{dij|ρi<ρj}成立时所对应的j值;
其中,dij为点i与点j的距离,ρi代表点i与其他所有点的距离小于dc的个数,ρj代表点j与其他所有点的距离小于dc的个数,N为点的总个数;
步骤六:临界密度点临界距离以及聚类中心
6.1)临界密度点ρ0、临界距离δ0
临界密度点ρ0为{ρi}是密度从大到小后的排列的第C个点,临界距离δ0是集合{δi}从大到小后的排列的第C个点,我们对{ρi}从小到达的排序,然后取点{ρi|i=C}的点作为ρ0,对{δi},我们进行从小到达的排序,然后取点{δi|i=C}的点作为δ0;
其中,ρi代表点i与其他所有点的距离小于dc的个数,δi为i与其高局部密度点的最小距离,C为固定常数;
6.2)判定i是否为聚类中心
分别判断i与之对应的ρi>ρ0,δi>δ0是否成立,若都成立则点i为聚类中心;判断所有的点后得到聚类中心集合M={i|ρi>ρ0,δi>δ0};
步骤七:点进行聚类
顺序取{(i,j)}的点,判断i是否为聚类中心,如果属于则判断下个点,如果不属于判断(i,j)的j是否属于聚类中心,如果属于则i为j类,如果不属于判断i=j点对应的j是否属于聚类中心,循环后会得到最终的聚类结果,
其中i为点编号,j为当δi=min{dij|ρi<ρj}成立时所对应的值,{(i,j)}代表(i,j)按照ρi从大到小排列。
进一步,所述聚类方法还包括以下步骤:步骤八:判定离群点:计算每个点的广义密度值:
broad_pi=(pi+max{pj|dij<dc,i与j属于不同的聚类中心})/2
将原有点密度pi与广义密度值broad_pi比较,Pi>broad_pi,则i仍属于原有类,否则将i则属于离群点,其中i为点编号,pi为点密度值。
再进一步,所述步骤三中,在计算距离矩阵的第i行时,向量Ai中所有的|ai·aj|(1≤j≤N)都会用到相同起始点ai和整个数据集的所有点{aj|1≤j≤N};
|ai·aj|=R·arccos[cosy1cosy2cos(x1-x2)+siny1siny2] (3)
在Map阶段,把计算行Ai所需要的ai,标识成条<key,value>的形式,其中key=<i>,i=1,2,…,N,value=(‘A#’,ai);把的元素行Ai所需要的{aj|1≤j≤N},标识成条<key,value>形式,其中key=<i>,i=1,2,…,N,value=(‘B#’,{aj})j=1,2,…,N,那么在Reduce阶段,计算Ai所需要的ai和集合{aj}就会被分配到同一reduce任务中。
更进一步,所述步骤4.1)中,在计算一大数据集中的最大的前K个数时,将数据集切分若干段,不同机器分别求出分片后各数据集中的最大的前K个数,然后合并到一台机器,求出整个数据集的最大的前K个数,Topk为数据集中元素按从大到小排列的后的前K个值的集合;
在Map任务完成后将所有中间值传递到同一个Key之下,在Map阶段中,将来自数据集中元素,标识成条<key,value>的形式,其中key=<NullWritable>,value=(dij),(1≤i,j≤N);那么在Reduce阶段,就将求出合并后的小数据集中的TopK;
所述步骤4.2)中,Map阶段,当dij<dc,将添加一条<key,value>,其中key=<i>,i=1,2,…,N,value=(onewritable),onewritable代表常数‘1’;在Reduce阶段,Key值i所对应的则为ρi=Σonewritable。
所述步骤5.2)中,在Map阶段,把点i与对应的ρi,标识成条<key,value>的形式,其中key=<NullWritable>,value=(‘i’,ρi),在Reduce阶段,对vaule集合里的i按ρi大小做降序排序得到{j|ρi<ρj},标识成条<key,value>的形式,其中key=<i>,i=1,2,…,N,value=({ij|ρi<ρj});
所述步骤5.3)包括如下过程:
①在Map阶段,把来自角标数据的元素,标识成条<key,value>的形式,其中key=<i>,i=1,2,…,N,value=(‘A#’,list(ij)i);把来自距离矩阵的元素,标识成条<key,value>形式,其中key=<i>,i=1,2,…,N,value=(‘B#’,list(dij)i);
在Map阶段,通过key,我们把参与计算的数据归为一类,通过value区分元素是来自还是角标数据还是距离数据;
②在Shuffle阶段,相同key的value会被加入到同一个列表中, 形成<key,list(value)>对,传递给Reduce,这个由Hadoop自动完成;
③在Reduce阶段,计算(i,j)∈list(i,j)i的最小距离,即为所求的δi。
本发明的技术构思为:在面对大数据集时,通常采用MapReduce的计算模型。MapReduce在处理数据集时采用并行化处理方式,具有高容错性、数据均匀分布、自动负载均衡等优点。Hadoop的Mapreduce是一个分布并行处理大数据的开源程序框架,一个Map/Reduce作业(job)通常会把输入的数据集切分为若干独立的数据块,由map任务(task)以完全并行的方式处理它们。框架会对map的输出先进行排序,然后把结果输入给reduce任务。通常作业的输入和输出都会被存储在文件系统中。在本发明的方法中,主要计算的对数据的排序计算阈值,然后分类、聚类。各步骤都符MapReduce数据独立和计算独立的要求。所以采用MapReduce这个计算框架设计本方法十分有效。
本发明的有益效果主要表现在:(1)处理大数据集,本方法面向大规模、高维数据。具有良好的处理能力,完成单机无法完成的计算任务。(2)计算速度快,本方法主要计算都为线性计算,符合MapReduce特有的计算模式。计算速度是单机的几倍,甚至几十倍。(3)可扩展性,本方法采用MapReduce的计算框架,具有高横向扩展性。(4)支持广泛类型数据集,支持不同点数据集且具有良好聚类结果,具有普适性。
附图说明
图1是计算截止距离MapReduce过程图。
图2是计算点密度MapReduce过程图。
图3是点密度排序MapReduce过程图。
图4是计算点与较高密度点的最小距离δi的MapReduce过程图。
图5是面向大数据的分布式密度聚类方法的流程图。
图6是计算点与较高密度点的最小距离δi流程图。
具体实施方式
下面结合附图对本发明作进一步描述。
参照图1~图6,一种面向大数据的分布式密度聚类方法,包括如下步骤:
步骤一:虚拟化环境、搭建Hadoop平台
在一台刀片服务器中,虚拟化出多台虚拟机,虚拟机分配在不同的硬盘上,分配IP建立相互通信。安装hadoop软件,规划平台规模及节点的角色实例。所有节点配置主要配置文件。
步骤二:数据预处理与加载
从数据库中将原始数据表抽取,利用sqoop–query命令截取需要的字段,将预处理后的数据直接抽取到Hdfs中。
步骤三:计算距离矩阵
Ai={di1 … din}ai·{a1 … an}={|ai·a1| … |ai·an|} (2)
计算距离矩阵D,可以将矩阵分割计算。例如在计算距离矩阵的第i行时,向量Ai中所有的|ai·aj|(1≤j≤N)都会用到相同起始点ai和整个数据集的所有点{aj|1≤j≤N}。
|ai·aj|=R·arccos[cosy1cosy2cos(x1-x2)+siny1siny2] (3)
在Map阶段,把计算行Ai所需要的ai,标识成条<key,value>的形式。其中key=<i>,i=1,2,…,N,value=(‘A#’,ai);把的元素行Ai所需要的{aj|1≤j≤N},标识成条<key,value>形式,其中key=<i>,i=1,2,…,N, value=(‘B#’,{aj}),j=1,2,…,N。那么在Reduce阶段,计算Ai所需要的ai和集合{aj}就会被分配到同一reduce任务中。
其中ai代表点的坐标(1≤i≤N),N为点集合的总数,Ai为距离矩阵的第i行距离向量。R为地球半径,0为地心,ai、aj为球面上的两点、球面坐标为ai(x1,y1),B(x2,y2),x1、x2∈[-π,π],y1、y2∈[-π/2,π/2]。
步骤四:计算截止距离与点密度
4.1)计算截止距离
截至距离dc为距离集合降序排列的20%的位置处的距离即:
dc=D([N*0.2])
计算dc时,为了降低计算量采用了计算TopK的方法。避免对距离矩阵的所有元素进行排序而造成对内存的浪费。在计算一大数据集中的最大的前K个数时,可以将数据集切分若干段,不同机器分别求出分片后各数据集中的最大的前K个数。然后合并到一台机器,求出整个数据集的最大的前K个数。
因为最终结果只产生一个TopK的集合,所以在Map任务完成后需要将所有中间值传递到同一个Key之下。所以在Map阶段中,将来自数据集中元素,标识成条<key,value>的形式。其中key=<NullWritable>,value=(dij),(1≤i,j≤N)。那么在Reduce阶段,就将求出合并后的小数据集中的TopK。
参照图1,D为计算所得的距离{dij|1≤i,j≤N}的降序排列集合,N为点的总数,[]为取整函数,Topk为数据集中元素按从大到小排列的后的前K个值的集合。
4.2)计算点密度ρ
点密度ρi为点i与其他所有点的距离小于截止距离dc的个数。
因为ρi的计算只与距离矩阵的第i行相关,所以在Map过程中将同一行的元素集中在相同Key中。另外为了减少Suffer过程的中间值的量,在Map的过程中将每个小于dij的元素化成常数‘1’加入到key值为i的value里。Reduce过程中对key值i对应的Values里的元素进行累加就可以得到各点的密度ρi。
Map阶段,当dij<dc,将添加一条<key,value>。其中key=<i>,i=1,2,…,N,value=(onewritable)。onewritable代表常数‘1’;在Reduce阶段,Key值i所对应的则为ρi=Σonewritable。
步骤五:计算点与较高密度点的最小距离δi
δi为i与其高局部密度点的最小距离,计算δi的公式如下:
δi=min{dij|ρi<ρj}而最大Max(ρi)点所对应的δ=Max(dij)。这样使得δi>min(dij)成立。
5.1)对ρi进行降序排序,得到对应i的排序后的集合{i}decrbypi。
5.2)利用i对应的{j|ρi<ρj},我们得到i点的δi计算所需要的d的角标集合{ij|ρi<ρj}。
在Map阶段,把点i与对应的ρi,标识成条<key,value>的形式。其中key=<NullWritable>,value=(‘i’,ρi)。在Reduce阶段,对vaule集合里的i按ρi大小做降序排序得到{j|ρi<ρj}。标识成条<key,value>的形式。其中key=<i>,i=1,2,…,N,value=({ij|ρi<ρj})。
5.3)计算角标集合中对应dij的最小值,由{ij|ρi<ρj},距离集合{dij|1≤i,j≤N}得到计算δi所需要的{dij|ρi<ρj};并且记录当δi=min{dij|ρi<ρj}成立时所对应的j值;
①在Map阶段,把来自角标数据的元素,标识成条<key,value>的形式。其中key=<i>,i=1,2,…,N,value=(‘A#’,list(ij)i);把来自距离矩 阵的元素,标识成条<key,value>形式,其中key=<i>,i=1,2,…,N,value=(‘B#’,list(dij)i);。
于是乎,在Map阶段,我们实现了这样的战术目的:通过key,我们把参与计算的数据归为一类。通过value,我们能区分元素是来自还是角标数据还是距离数据。
②在Shuffle阶段,相同key的value会被加入到同一个列表中,形成<key,list(value)>对,传递给Reduce,这个由Hadoop自动完成。
③在Reduce阶段,计算(i,j)∈list(i,j)i的最小距离。即为我们所求的δi。
其中,dij为点i与点j的距离,ρi代表点i与其他所有点的距离小于dc的个数,ρj代表点j与其他所有点的距离小于dc的个数,N为点的总个数;
步骤六:临界密度点临界距离以及聚类中心
6.1)临界密度点ρ0、临界距离δ0
临界密度点ρ0为{ρi}是密度从大到小后的排列的第C个点,临界距离δ0是集合{δi}从大到小后的排列的第C个点,我们对{ρi}从小到达的排序,然后取点{ρi|i=C}的点作为ρ0,对{δi},我们进行从小到达的排序,然后取点{δi|i=C}的点作为δ0;
MapReduce过程相同于步骤四的4.1)。
其中ρi代表点i与其他所有点的距离小于dc的个数,δi为i与其高局部密度点的最小距离,C为固定常数,根据聚类要求可以自行调节。
6.2)判定i是否为聚类中心
分别判断i与之对应的ρi>ρ0,δi>δ0是否成立。若都成立则点i 为聚类中心。判断所有的点我们将得到聚类中心集合M={i|ρi>ρ0,δi>δ0}。
步骤七:点进行聚类
以上计算都是基于距离矩阵的大规模计算,量级都在o(n2)以上。步骤七点的聚类是基于点与聚类中心集合M的关系,计算量在o(n)次所以采用单机完成最后一步。
顺序取{(i,j)}的点,判断i是否为聚类中心。如果属于则判断下个点,如果不属于判断(i,j)的j是否属于聚类中心,如果属于则i为j类,如果不属于判断i=j点对应的j是否属于聚类中心。循环后会得到最终的聚类结果。
其中i为点编号,j为当δi=min{dij|ρi<ρj}成立时所对应的值,{(i,j)}代表(i,j)按照ρi从大到小排列。
步骤八:判定离群点
在聚类结果中,有些点是多个类群的边界点。需要重新判断这些点是否属于它的聚类中心。
那么计算每个点的广义密度值:
broad_pi=(pi+max{pj|dij<dc,i与j属于不同的聚类中心})/2
将原有点密度pi与广义密度值broad_pi比较,Pi>broad_pi,则i仍属于原有类,否则将i则属于离群点,其中i为点编号,pi为点密度值。
实例:结合浮动车数据,对出行密度点进行聚类应用实例,进一步说明本方法。
参照图5,本方法的主要步骤有:
步骤一,虚拟化环境
在一台刀片服务器中,虚拟化出8台虚拟机,虚拟机分配在不同的硬盘上,分配IP建立相互通信。系统为Centos6.5、CPU4个64位、8G内存。
步骤二,搭建Hadoop平台
在每台虚拟机中安装Hadoop-2.2.0,对集群中的每个节点配置/etc/hadoop目录下的配置文件,通过文件中属性参数dfs.namenode和dfs.datanode的设置,使集群中包含两个主节点master(一个为活跃节点,一个为热备份节点)和多个数据节点datanode;通过文件中属性参数mapred.jobtracker和mapred.tasktracker的设置,使集群中包含两个个调度节点和多个任务节点,建立开源的Hadoop平台。
步骤三,数据预处理与加载
从数据库中将原始数据表抽取,利用sqoop–query“select id,id_j,id_w from table”命令截取有效点的坐标,将预处理后的数据直接抽取到Hdfs中。处理后的点格式为:
ID | 经度 | 维度 |
1 | 120.2497 | 30.222417 |
2 | 120.189567 | 30.27865 |
表1
步骤四,计算距离矩阵
对所有点进行编号,统一处理成编号、经度、维度即{i,α,β};建立第一个MapReduce任务,在Map的输出过程中我们将编号i设为Key,将各个点的经纬度(α,β)设为Value。在Reduce过程中,对应的key编号的点就可以与Values里的所有点进行距离计算我们将结果直接存储在Hdfs上,避免内存被过度占用。矩阵的储存格 式为(i,j,d)。
ID1 | ID2 | dij(km) |
1 | 1 | 0.00 |
1 | 2 | 8.52 |
1 | 3 | 2.10 |
表2
其中i为行,j为列。d为两点对应的距离。
步骤五,计算截止距离与点密度
5.1截至距离dc
输入距离矩阵的所有点。数据分片后,计算各分片的TopK。然后再合并得到全数据集的TopK。集合中最后一个值即为dc。
5.2计算点密度ρi
表3
第四个MapReduce任务将i即第一个点编号设为Map阶段的输出key,dij设为value。在Reduce阶段,我们得到i与其对应的 距离集合{dij},统计集合{dij}中小于dc的个数。将其记为ρi。
步骤六,计算点与较高密度点的最小距离
参照附图6,计算点与较高密度点的最小距离主要步骤有:
δi为i与其高局部密度点的最小距离δi=min{dij|ρi<ρj}而最大Max(ρi)点所对应的δ=Max(dij)。这样使得δi>min(dij)成立。
6.1对ρi进行降序排序
步骤5.2所产生的结果的格式为编号,以及对应的ρ即:(i,ρi)。
我们根据ρi进行降序排序。得到对应i的序列。
i | ρi |
1 | 4654 |
2 | 6231 |
表4
6.2生成角标集合
启动第五个MapReduce的任务,我们步骤5.2所产生的结果,计算ρ大于ρi所有点的集合{j|ρi<ρj}。在Map阶段将i设为key,将与之对应的{j|ρi<ρj}设为vaule。Reduce阶段利用输入key与valuse集合元素组合将得到i点的δi计算所需要的d的角标集合{ij|ρi<ρj}。
表5
6.3计算角标集合中对应dij的最小值
根据6.2生成的角标集合{ij|ρi<ρj},在步骤4产生的结果中寻找角标所对应的{dij|ρi<ρj}且求得δi=min{dij|ρi<ρj}以及最小距离对应的j值。
表6
步骤七,求临界密度点临界距离以及聚类中心
求临界密度点临界距离以及聚类中心主要步骤有:
7.1临界密度点ρ0、临界距离δ0
在对5.2的结果集{ρi},我们进行从小到达的排序,然后取点{ρi|i=C}的点作为ρ0。在对6.3的结果集{δi},我们进行从小到达的排序,然后取点{δi|i=C}的点作为δ0。
7.2判定i是否为聚类中心m
在步骤5.2和步骤6.3得到的{ρi},{δi}。分别判断i的ρi>ρ0,δi>δ0是否成立。若都成立则点i为聚类中心。判断所有的点我们将得到聚类中心集合{i|ρi>ρ0,δi>δ0}。
表7
步骤八,聚类
对所有点进行聚类主要步骤有:
8.1在经过步骤5.2、6.3后将存储一份格式为i,j的文件。其中i为点的编号,j为i对应δi=min{dij|ρi<ρj}的j。并将结果存在HashMap中,key为i,value为j。
8.2读取第一行数据,判断编号i是否属于聚类中心集合{i|ρi>ρ0,δi>δ0},如果属于则为聚类中心,读取下一行。如果不属于,判断key值为i对应在HashMap的valuej是否属于{i|ρi>ρ0,δi>δ0}。如果属于则i属于类j。如果不属于则判断key为j对应的HashMap的value是否属于{i|ρi>ρ0,δi>δ0}。如果属于则i属于类j所对应的value类。如果不属于则递归下去,直至找到i所属的聚类中心。然后读取下一行。
表8。
Claims (5)
1.一种面向大数据的分布式密度聚类方法,其特征在于:所述聚类方法包括如下步骤:
步骤一:虚拟化环境、搭建Hadoop平台;
步骤二:数据预处理与加载
从数据库中将原始数据表抽取,利用sqoop-query命令截取需要的字段,将预处理后的数据直接抽取到Hdfs中;
步骤三:计算距离矩阵
Ai={di1 … din}=ai·{a1 … an}={|ai·a1| … |ai·an|} (2)
其中,ai代表点的坐标(1≤i≤N),N为点集合的总数,Ai为距离矩阵的第i行距离向量,R为地球半径,,ai、aj为球面上的两点、球面坐标为ai(x1,y1),B(x2,y2),x1、x2∈[-π,π],y1、y2∈[-π/2,π/2];
在计算距离矩阵的第i行时,向量Ai中所有的|ai·aj|(1≤j≤N)都会用到相同起始点ai和整个数据集的所有点{aj|1≤j≤N};
|ai·aj|=R·arccos[cosy1cosy2cos(x1-x2)+siny1siny2] (3)
步骤四:计算截止距离与点密度
4.1)计算截止距离
截至距离dc为距离集合降序排列的20%的位置处的距离即:
dc=D([N*0.2]);
其中,D为计算所得的距离{dij|1≤i,j≤N}的降序排列集合,N为点的总数,[]为取整函数;
4.2)计算点密度ρ
点密度ρi为点i与其他所有点的距离小于截止距离dc的个数;
在Map过程中将同一行的元素集中在相同Key中,将每个小于dij的元素化成常数‘1’加入到key值为i的value里;Reduce过程中对key值i对应的Values里的元素进行累加就得到各点的密度ρi;
步骤五:计算点与较高密度点的最小距离δi
δi为i与其高局部密度点的最小距离,计算δi的公式如下:
δi=min{dij|ρi<ρj},最大Max(ρi)点所对应的δ=Max(dij),包括如下步骤:
5.1)对ρi进行降序排序,得到对应i的排序后的集合{i}decrbypi;
5.2)利用i对应的{j|ρi<ρj},得到i点的δi计算所需要的d的角标集合{ij|ρi<ρj};
5.3)计算角标集合中对应dij的最小值,由{ij|ρi<ρj},距离集合{dij1≤i,j≤N}得到计算δi所需要的{dij|ρi<ρj};并且记录当δi=min{dij|ρi<ρj}成立时所对应的j值;
其中,dij为点i与点j的距离,ρi代表点i与其他所有点的距离小于dc的个数,ρj代表点j与其他所有点的距离小于dc的个数,N为点的总个数;
步骤六:临界密度点临界距离以及聚类中心
6.1)临界密度点ρ0、临界距离δ0
临界密度点ρ0为{ρi}是密度从大到小后的排列的第C个点,临界距离δ0是集合{δi}从大到小后的排列的第C个点,我们对{ρi}从小到达的排序,然后取点{ρi|i=C}的点作为ρ0,对{δi},我们进行从小到达的排序,然后取点{δi|i=C}的点作为δ0;
其中,ρi代表点i与其他所有点的距离小于dc的个数,δi为i与其高局部密度点的最小距离,C为固定常数;
6.2)判定i是否为聚类中心
分别判断i与之对应的ρi>ρ0,δi>δ0是否成立,若都成立则点i为聚类中心;判断所有的点后得到聚类中心集合M={i|ρi>ρ0,δi>δ0};
步骤七:点进行聚类
顺序取{(i,j)}的点,判断i是否为聚类中心,如果属于则判断下个点,如果不属于判断(i,j)的j是否属于聚类中心,如果属于则i为j类,如果不属于判断i=j点对应的j是否属于聚类中心,循环后会得到最终的聚类结果,
其中i为点编号,j为当δi=min{dij|ρi<ρj}成立时所对应的值,{(i,j)}代表(i,j)按照ρi从大到小排列。
2.如权利要求1所述的一种面向大数据的分布式密度聚类方法,其特征在于:所述聚类方法还包括以下步骤:
步骤八:判定离群点:计算每个点的广义密度值:
broad_pi=(pi+max{pj|dij<dc,i与j属于不同的聚类中心})/2
将原有点密度pi与广义密度值broad_pi比较,Pi>broad_pi,则i仍属于原有类,否则将i则属于离群点,其中i为点编号,pi为点密度值。
3.如权利要求1或2所述的一种面向大数据的分布式密度聚类方法,其特征在于:所述步骤三中,在Map阶段,把计算行Ai所需要的ai,标识成条<key,value>的形式,其中key=<i>,i=1,2,…,N,value=(‘A#’,ai);把的元素行Ai所需要的{aj|1≤j≤N},标识成条<key,value>形式,其中key=<i>,i=1,2,…,N,value=(‘B#’,{aj}),j=1,2,…,N,那么在Reduce阶段,计算Ai所需要的ai和集合{aj}就会被分配到同一reduce任务中。
4.如权利要求3所述的一种面向大数据的分布式密度聚类方法,其特征在于:所述步骤4.1)中,在计算一大数据集中的最大的前K个数时,将数据集切分若干段,不同机器分别求出分片后各数据集中的最大的前K个数,然后合并到一台机器,求出整个数据集的最大的前K个数,Topk为数据集中元素按从大到小排列的后的前K个值的集合;
在Map任务完成后将所有中间值传递到同一个Key之下,在Map阶段中,将来自数据集中元素,标识成条<key,value>的形式,其中key=<NullWritable>,value=(dij),(1≤i,j≤N);那么在Reduce阶段,就将求出合并后的小数据集中的TopK;
所述步骤4.2)中,Map阶段,当dij<dc,将添加一条<key,value>,其中key=<i>,i=1,2,…,N,value=(onewritable),onewritable代表常数‘1’;在Reduce阶段,Key值i所对应的则为ρi=∑onewritable。
5.如权利要求4所述的一种面向大数据的分布式密度聚类方法,其特征在于:所述步骤5.2)中,在Map阶段,把点i与对应的ρi,标识成条<key,value>的形式,其中key=<NullWritable>,value=(‘i’,ρi),在Reduce阶段,对vaule集合里的i按ρi大小做降序排序得到{j|ρi<ρj},标识成条<key,value>的形式,其中key=<i>,i=1,2,…,N,value=({ij|ρi<ρj});
所述步骤5.3)包括如下过程:
①在Map阶段,把来自角标数据的元素,标识成条<key,value>的形式,其中key=<i>,i=1,2,…,N,value=(‘A#’,list(ij)i);把来自距离矩阵的元素,标识成条<key,value>形式,其中key=<i>,i=1,2,…,N,value=(‘B#’,list(dij)i);
在Map阶段,通过key,我们把参与计算的数据归为一类,通过value区分元素是来自还是角标数据还是距离数据;
②在Shuffle阶段,相同key的value会被加入到同一个列表中,形成<key,list(value)>对,传递给Reduce,这个由Hadoop自动完成;
③在Reduce阶段,计算(i,j)∈list(i,j)i的最小距离,即为所求的δi。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410687507.9A CN104615638B (zh) | 2014-11-25 | 2014-11-25 | 一种面向大数据的分布式密度聚类方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410687507.9A CN104615638B (zh) | 2014-11-25 | 2014-11-25 | 一种面向大数据的分布式密度聚类方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104615638A true CN104615638A (zh) | 2015-05-13 |
CN104615638B CN104615638B (zh) | 2017-11-07 |
Family
ID=53150082
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410687507.9A Active CN104615638B (zh) | 2014-11-25 | 2014-11-25 | 一种面向大数据的分布式密度聚类方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN104615638B (zh) |
Cited By (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105447008A (zh) * | 2014-08-11 | 2016-03-30 | 中国移动通信集团四川有限公司 | 时序聚类的分布式处理方法及系统 |
CN105760478A (zh) * | 2016-02-15 | 2016-07-13 | 中山大学 | 一种基于机器学习的大规模分布式的数据聚类方法 |
CN106021458A (zh) * | 2016-05-16 | 2016-10-12 | 广州鼎鼎信息科技有限公司 | 一种云环境下的大数据快速聚合查询方法 |
CN106650799A (zh) * | 2016-12-08 | 2017-05-10 | 重庆邮电大学 | 一种电子证据分类提取方法及系统 |
CN107291847A (zh) * | 2017-06-02 | 2017-10-24 | 东北大学 | 一种基于MapReduce的大规模数据分布式聚类处理方法 |
CN108268611A (zh) * | 2017-12-29 | 2018-07-10 | 天津南大通用数据技术股份有限公司 | 一种基于MapReduce的k-means文本聚类的方法及装置 |
CN109636020A (zh) * | 2018-11-30 | 2019-04-16 | 广州亚美信息科技有限公司 | 一种预测目的地地址的方法及系统 |
CN109995611A (zh) * | 2019-03-18 | 2019-07-09 | 新华三信息安全技术有限公司 | 流量分类模型建立及流量分类方法、装置、设备和服务器 |
CN111738341A (zh) * | 2020-06-24 | 2020-10-02 | 佳都新太科技股份有限公司 | 一种分布式大规模人脸聚类方法及装置 |
CN112309117A (zh) * | 2020-10-30 | 2021-02-02 | 上海炬宏信息技术有限公司 | 一种基于密度聚类的交通事件融合系统和方法 |
CN113744405A (zh) * | 2021-08-26 | 2021-12-03 | 武汉理工大学 | 一种基于指数函数密度聚类模型的室内目标提取方法 |
CN114844781A (zh) * | 2022-05-20 | 2022-08-02 | 南京大学 | Rack架构下面向编码MapReduce的Shuffle性能优化方法及系统 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103714138A (zh) * | 2013-12-20 | 2014-04-09 | 南京理工大学 | 一种基于密度聚类的区域数据可视化方法 |
US20140149412A1 (en) * | 2012-11-26 | 2014-05-29 | Ricoh Company, Ltd. | Information processing apparatus, clustering method, and recording medium storing clustering program |
CN103903276A (zh) * | 2014-04-23 | 2014-07-02 | 吉林大学 | 基于密度聚类法和形态学聚类法的驾驶员注视点聚类方法 |
-
2014
- 2014-11-25 CN CN201410687507.9A patent/CN104615638B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20140149412A1 (en) * | 2012-11-26 | 2014-05-29 | Ricoh Company, Ltd. | Information processing apparatus, clustering method, and recording medium storing clustering program |
CN103714138A (zh) * | 2013-12-20 | 2014-04-09 | 南京理工大学 | 一种基于密度聚类的区域数据可视化方法 |
CN103903276A (zh) * | 2014-04-23 | 2014-07-02 | 吉林大学 | 基于密度聚类法和形态学聚类法的驾驶员注视点聚类方法 |
Non-Patent Citations (2)
Title |
---|
倪巍伟等: "一种基于局部密度的分布式聚类挖掘算法", 《软件学报》 * |
倪巍伟等: "一种基于数据垂直划分的分布式密度聚类算法", 《计算机研究与发展》 * |
Cited By (19)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105447008A (zh) * | 2014-08-11 | 2016-03-30 | 中国移动通信集团四川有限公司 | 时序聚类的分布式处理方法及系统 |
CN105760478A (zh) * | 2016-02-15 | 2016-07-13 | 中山大学 | 一种基于机器学习的大规模分布式的数据聚类方法 |
CN106021458A (zh) * | 2016-05-16 | 2016-10-12 | 广州鼎鼎信息科技有限公司 | 一种云环境下的大数据快速聚合查询方法 |
CN106650799B (zh) * | 2016-12-08 | 2019-05-31 | 重庆邮电大学 | 一种电子证据分类提取方法及系统 |
CN106650799A (zh) * | 2016-12-08 | 2017-05-10 | 重庆邮电大学 | 一种电子证据分类提取方法及系统 |
CN107291847A (zh) * | 2017-06-02 | 2017-10-24 | 东北大学 | 一种基于MapReduce的大规模数据分布式聚类处理方法 |
CN107291847B (zh) * | 2017-06-02 | 2019-06-25 | 东北大学 | 一种基于MapReduce的大规模数据分布式聚类处理方法 |
WO2018219163A1 (zh) * | 2017-06-02 | 2018-12-06 | 东北大学 | 一种基于MapReduce的大规模数据分布式聚类处理方法 |
CN108268611A (zh) * | 2017-12-29 | 2018-07-10 | 天津南大通用数据技术股份有限公司 | 一种基于MapReduce的k-means文本聚类的方法及装置 |
CN108268611B (zh) * | 2017-12-29 | 2021-03-26 | 天津南大通用数据技术股份有限公司 | 一种基于MapReduce的k-means文本聚类的方法及装置 |
CN109636020A (zh) * | 2018-11-30 | 2019-04-16 | 广州亚美信息科技有限公司 | 一种预测目的地地址的方法及系统 |
CN109995611A (zh) * | 2019-03-18 | 2019-07-09 | 新华三信息安全技术有限公司 | 流量分类模型建立及流量分类方法、装置、设备和服务器 |
CN109995611B (zh) * | 2019-03-18 | 2021-06-25 | 新华三信息安全技术有限公司 | 流量分类模型建立及流量分类方法、装置、设备和服务器 |
CN111738341B (zh) * | 2020-06-24 | 2022-04-26 | 广州佳都科技软件开发有限公司 | 一种分布式大规模人脸聚类方法及装置 |
CN111738341A (zh) * | 2020-06-24 | 2020-10-02 | 佳都新太科技股份有限公司 | 一种分布式大规模人脸聚类方法及装置 |
CN112309117A (zh) * | 2020-10-30 | 2021-02-02 | 上海炬宏信息技术有限公司 | 一种基于密度聚类的交通事件融合系统和方法 |
CN113744405A (zh) * | 2021-08-26 | 2021-12-03 | 武汉理工大学 | 一种基于指数函数密度聚类模型的室内目标提取方法 |
CN113744405B (zh) * | 2021-08-26 | 2023-06-06 | 武汉理工大学 | 一种基于指数函数密度聚类模型的室内目标提取方法 |
CN114844781A (zh) * | 2022-05-20 | 2022-08-02 | 南京大学 | Rack架构下面向编码MapReduce的Shuffle性能优化方法及系统 |
Also Published As
Publication number | Publication date |
---|---|
CN104615638B (zh) | 2017-11-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104615638A (zh) | 一种面向大数据的分布式密度聚类方法 | |
Welton et al. | Mr. scan: Extreme scale density-based clustering using a tree-based network of gpgpu nodes | |
Chen et al. | Parallel Gaussian process regression with low-rank covariance matrix approximations | |
Ouyang et al. | Estimating parameters of Muskingum model using an adaptive hybrid PSO algorithm | |
Candelieri et al. | A graph based analysis of leak localization in urban water networks | |
CN102722531B (zh) | 一种云环境中基于分片位图索引的查询方法 | |
CN102915347A (zh) | 一种分布式数据流聚类方法及系统 | |
Liao et al. | An improved parallel K-means clustering algorithm with MapReduce | |
CN107862416B (zh) | 一种基于盒子不确定集的应急物资储备库选址优化方法 | |
CN103020256A (zh) | 一种大规模数据的关联规则挖掘方法 | |
CN105159971B (zh) | 一种云平台数据检索方法 | |
Azimi et al. | A novel clustering algorithm based on data transformation approaches | |
Labouseur et al. | Scalable and Robust Management of Dynamic Graph Data. | |
CN102737123B (zh) | 一种多维数据分布方法 | |
CN104731925A (zh) | 基于MapReduce的FP-Growth的负载均衡并行计算方法 | |
CN101697174B (zh) | 面向稳态热分析的零件模型自动简化及评价方法 | |
CN100530192C (zh) | 一种文本检索的方法和装置 | |
CN102902742A (zh) | 一种云环境下的空间数据划分方法 | |
Boukhdhir et al. | An improved MapReduce Design of Kmeans for clustering very large datasets | |
CN109961129A (zh) | 一种基于改进粒子群的海上静止目标搜寻方案生成方法 | |
Sun | Personalized music recommendation algorithm based on spark platform | |
Gao et al. | Research on data stream clustering based on fcm algorithm1 | |
CN105138536B (zh) | 基于有向超图的移动社交网络数据分片方法 | |
CN110705606A (zh) | 一种基于Spark分布式内存计算的空间K均值聚类方法 | |
Chen et al. | DBSCAN-PSM: an improvement method of DBSCAN algorithm on Spark |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
TR01 | Transfer of patent right | ||
TR01 | Transfer of patent right |
Effective date of registration: 20220311 Address after: Hangzhou City, Zhejiang province Xihu District 310012 west of West Doumen high tech Park Yinjiang building Patentee after: ZHEJIANG YINJIANG TRAFFIC TECHNOLOGY Co.,Ltd. Address before: 310012 Room 101, floor 1, building 1, No. 223, Yile Road, Xihu District, Hangzhou City, Zhejiang Province Patentee before: ZHEJIANG ENJOYOR RESEARCH INSTITUTE CO.,LTD. |