首页 / 专利库 / 单位和数量 / 密度 / 一种面向大数据的分布式密度聚类方法

一种面向大数据的分布式密度聚类方法

阅读:363发布:2023-01-24

专利汇可以提供一种面向大数据的分布式密度聚类方法专利检索,专利查询,专利分析的服务。并且一种面向 大数据 的分布式 密度 聚类方法,包括如下步骤:步骤一:虚拟化环境、搭建Hadoop平台;步骤二:数据预处理与加载:从 数据库 中将原始数据表 抽取 ,利用sqoop–query命令截取需要的字段,将预处理后的数据直接抽取到Hdfs中;步骤三:计算距离矩阵;步骤四:计算截止距离与点密度;步骤五:计算点与较高密度点的最小距离;步骤六: 临界密度 点临界距离以及聚类中心;步骤七:点进行聚类,得到最终的聚类结果;步骤八:剔除离群点。本 发明 在处理大数据集时快速有效,并具备输入参数对聚类结果的鲁棒性较好的效果。,下面是一种面向大数据的分布式密度聚类方法专利的具体信息内容。

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=1,2,…,N,value=(‘A#’,ai);把的元素行Ai所需要的{aj|1≤j≤N},标识成条<key,value>形式,其中key=,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=,value=(dij),(1≤i,j≤N);那么在Reduce阶段,就将求出合并后的小数据集中的TopK;
所述步骤4.2)中,Map阶段,当dij<dc,将添加一条<key,value>,其中key=,i=1,2,…,N,value=(onewritable),onewritable代表常数‘1’;在Reduce阶段,Key值i所对应的则为ρi=∑onewritable。
5.如权利要求4所述的一种面向大数据的分布式密度聚类方法,其特征在于:所述步骤5.2)中,在Map阶段,把点i与对应的ρi,标识成条<key,value>的形式,其中key=,value=(‘i’,ρi),在Reduce阶段,对vaule集合里的i按ρi大小做降序排序得到{j|ρi<ρj},标识成条<key,value>的形式,其中key=,i=1,
2,…,N,value=({ij|ρi<ρj});
所述步骤5.3)包括如下过程:
①在Map阶段,把来自角标数据的元素,标识成条<key,value>的形式,其中key=,i=1,2,…,N,value=(‘A#’,list(ij)i);把来自距离矩阵的元素,标识成条<key,value>形式,其中key=,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。

说明书全文

一种面向大数据的分布式密度聚类方法

技术领域

[0001] 本发明涉及一种大数据处理领域,涉及一种分布式密度聚类方法。

背景技术

[0002] 基于密度的聚类方法将簇看作是数据空间中被低密度区域分割开的高密度对象区域。具备发现任意形状的聚类、识别数据集中的噪点、对输入对象的顺序不敏感、可伸缩性好等特点,因此在聚类分析中有着重要的应用。然而,绝大部分基于密度的聚类算法无法在密度不均匀的数据集中发现聚类并且存在对输入参数敏感、大规模数据迭代复杂等缺点。使得基于密度算法的应用在一定程度上受到限制。
[0003] DBSCAN(Density-Based Spatial Clustering of Applicationswith Noise)是一个比较有代表性的基于密度的聚类算法。DBSCAN聚类的结果受输入参数的影响,没有普适性。该算法用固定的参数识别聚类,在聚类过程中首先找到核心对象,然后向外扩展。然而,当聚类的稀疏程度不同时,若用固定的参数可能会破坏聚类的自然结构;当核心对象将不断增多时,未处理的对象被保留在内存中,因此在处理数据集庞大时造成严重内存消耗。目前虽然有很多方法对基于密度聚类算法进行了改进,但是一般方法都只是提高了小数据集的聚类质量精度,并没有解决数据规模与维度增加所带来的计算效率问题。例如专利《基于空间最短距离平均的密度自适应无监督聚类方法》提出一种通过最短距离平均倍数系数步长来调整距离密度范围以适应不同密度聚类区的方法,部分解决了输入参数对聚类结果的影响问题。。专利《基于限定区域数据取样的密度聚类方法》中,发明者采用基于限定 区域数据取样技术的密度聚类方法,将每次数据取样的范围限定在距离核心点较近的区域,降低了大簇分裂产生造成的过多微簇的可能性。
[0004] 大规模和高维度数据在以上方法中都不有得到解决。而随着物联网的发展,各种传感器大量的使用,使得采集的数据量急剧膨胀。单就交通领域的浮动车数据而言,每辆浮8
动车每隔5秒返回一条数据,一个中等城市的一天数据规模就达到10条。当我们在基于
10
浮动车历史数据研究出行密度区识别问题时,这个数据量将达到10 条。
[0005] 目前的密度聚类算法的无法快速有效的处理如此大规模的数据。
[0006] 快速密度聚类算法(Clustering by fast search and find of density peaks)是一种无需根据目标函数不断迭代,并且能够有效识别任意形状簇的聚类算法。该方法主要利用点对之间的距离矩阵计算点密度,并结合与高密度点的距离参数来选取聚类中心,进而进行簇类划分。然而随着数据维度与规模的增加,该方法在计算空间点的密度矩阵时的计算量是成非线性增加的,聚类过程中不断的对距离矩阵中数据重复排序来确定各点的距离阈值时造成大量的内存消耗。在利用java和matlab编程实验中,30000点2维数据时算法就无法完成聚类过程。

发明内容

[0007] 为解决现有密度聚类方法在处理大数据集时算法效率低下的问题,本发明提出了一种面向大数据的分布式密度聚类方法,利用分布式方法计算点密度与点与最小密度的距等阈值来对点进行聚类,在处理大数据集时快速有效,并具备输入参数对聚类结果的鲁棒性较好的效果。
[0008] 本发明解决其技术问题所采用的技术方案是:
[0009] 一种面向大数据的分布式密度聚类方法,所述聚类方法包括如下步骤:
[0010] 步骤一:虚拟化环境、搭建Hadoop平台;
[0011] 步骤二:数据预处理与加载
[0012] 从数据库中将原始数据表抽取,利用sqoop–query命令截取需要的字段,将预处理后的数据直接抽取到Hdfs中;
[0013] 步骤三:计算距离矩阵
[0014]
[0015] Ai={di1 … din}ai·{a1 … an}={|ai·a1| … |ai·an|} (2)
[0016] 其中,ai代表点的坐标(1≤i≤N),N为点集合的总数,Ai为距离矩阵的第i行距离向量。R为地球半径,0为地心,ai、aj为球面上的两点、球面坐标为ai(x1,y1),B(x2,y2),x1、x2∈[-π,π],y1、y2∈[-π/2,π/2];
[0017] 在计算距离矩阵的第i行时,向量Ai中所有的|ai·aj|(1≤j≤N)都会用到相同起始点ai和整个数据集的所有点{aj|1≤j≤N};
[0018] |ai·aj|=R·arccos[cosy1cosy2cos(x1-x2)+siny1siny2] (3)
[0019] 步骤四:计算截止距离与点密度
[0020] 4.1)计算截止距离
[0021] 截至距离dc为距离集合降序排列的20%的位置处的距离即:
[0022] dc=D([N*0.2]);
[0023] 其中,D为计算所得的距离{dij|1≤i,j≤N}的降序排列集合,N为点的总数,[]为取整函数;
[0024] 4.2)计算点密度ρ
[0025] 点密度ρi为点i与其他所有点的距离小于截止距离dc的个数;
[0026] 在Map过程中将同一行的元素集中在相同Key中,将每个小于 dij的元素化成常数‘1’加入到key值为i的value里;Reduce过程中对key值i对应的Values里的元素进行累加就得到各点的密度ρi;
[0027] 步骤五:计算点与较高密度点的最小距离δi
[0028] δi为i与其高局部密度点的最小距离,计算δi的公式如下:
[0029] δi=min{dij|ρi<ρj},最大Max(ρi)点所对应的δ=Max(dij),包括如下步骤:
[0030] 5.1)对ρi进行降序排序,得到对应i的排序后的集合{i}decrbypi;
[0031] 5.2)利用i对应的{j|ρi<ρj},得到i点的δi计算所需要的d的标集合{ij|ρi<ρj};
[0032] 5.3)计算角标集合中对应dij的最 小值,由{ij|ρi<ρj},距离集合{dij|1≤i,j≤N}得 到 计 算δi所 需 要 的{dij|ρi<ρj};并且 记 录当δi =min{dij|ρi<ρj}成立时所对应的j值;
[0033] 其中,dij为点i与点j的距离,ρi代表点i与其他所有点的距离小于dc的个数,ρj代表点j与其他所有点的距离小于dc的个数,N为点的总个数;
[0034] 步骤六:临界密度点临界距离以及聚类中心
[0035] 6.1)临界密度点ρ0、临界距离δ0
[0036] 临界密度点ρ0为{ρi}是密度从大到小后的排列的第C个点,临界距离δ0是集合{δi}从大到小后的排列的第C个点,我们对{ρi}从小到达的排序,然后取点{ρi|i=C}的点作为ρ0,对{δi},我们进行从小到达的排序,然后取点{δi|i=C}的点作为δ0;
[0037] 其中,ρi代表点i与其他所有点的距离小于dc的个数,δi为i与其高局部密度点的最小距离,C为固定常数;
[0038] 6.2)判定i是否为聚类中心
[0039] 分别判断i与之对应的ρi>ρ0,δi>δ0是否成立,若都成立则点i为聚类中心;判断所有的点后得到聚类中心集合M={i|ρi>ρ0,δi>δ0};
[0040] 步骤七:点进行聚类
[0041] 顺序取{(i,j)}的点,判断i是否为聚类中心,如果属于则判断下个点,如果不属于判断(i,j)的j是否属于聚类中心,如果属于则i为j类,如果不属于判断i=j点对应的j是否属于聚类中心,循环后会得到最终的聚类结果,
[0042] 其中i为点编号,j为当δi=min{dij|ρi<ρj}成立时所对应的值,{(i,j)}代表(i,j)按照ρi从大到小排列。
[0043] 进一步,所述聚类方法还包括以下步骤:步骤八:判定离群点:计算每个点的广义密度值:
[0044] broad_pi=(pi+max{pj|dij
[0045] 将原有点密度pi与广义密度值broad_pi比较,Pi>broad_pi,则i仍属于原有类,否则将i则属于离群点,其中i为点编号,pi为点密度值。
[0046] 再进一步,所述步骤三中,在计算距离矩阵的第i行时,向量Ai中所有的|ai·aj|(1≤j≤N)都会用到相同起始点ai和整个数据集的所有点{aj|1≤j≤N};
[0047] |ai·aj|=R·arccos[cosy1cosy2cos(x1-x2)+siny1siny2] (3)
[0048] 在Map阶段,把计算行Ai所需要的ai,标识成条的形式,其中key=,i=1,2,…,N,value=(‘A#’,ai);把的元素行Ai所需要的{aj|1≤j≤N},标识成条形式,其中key=,i=1,2,…,N,value=(‘B#’,{aj})j=1,2,…,N,那么在Reduce阶段,计算Ai所需要的ai和集合{aj}就会被分配到同一reduce任务中。
[0049] 更进一步,所述步骤4.1)中,在计算一大数据集中的最大的前K个数时,将数据集切分若干段,不同机器分别求出分片后各数据集中的最大的前K个数,然后合并到一台机器,求出整个数据集的最大的前K个数,Topk为数据集中元素按从大到小排列的后的前K个值的集合;
[0050] 在Map任务完成后将所有中间值传递到同一个Key之下,在Map阶段中,将来自数据集中元素,标识成条的形式,其中key=,value=(dij),(1≤i,j≤N);那么在Reduce阶段,就将求出合并后的小数据集中的TopK;
[0051] 所述步骤4.2)中,Map阶段,当dij<dc,将添加一条,其中key=,i=1,2,…,N,value=(onewritable),onewritable代表常数‘1’;在Reduce阶段,Key值i所对应的则为ρi=Σonewritable。
[0052] 所述步骤5.2)中,在Map阶段,把点i与对应的ρi,标识成条的形式,其中key=,value=(‘i’,ρi),在Reduce阶段,对vaule集合里的i按ρi大小做降序排序得到{j|ρi<ρj},标识成条的形式,其中key=,i=1,2,…,N,value=({ij|ρi<ρj});
[0053] 所述步骤5.3)包括如下过程:
[0054] ①在Map阶段,把来自角标数据的元素,标识成条的形式,其中key=,i=1,2,…,N,value=(‘A#’,list(ij)i);把来自距离矩阵的元素,标识成条形式,其中key=,i=1,2,…,N,value=(‘B#’,list(dij)i);
[0055] 在Map阶段,通过key,我们把参与计算的数据归为一类,通过value区分元素是来自还是角标数据还是距离数据;
[0056] ②在Shuffle阶段,相同key的value会被加入到同一个列表中, 形成对,传递给Reduce,这个由Hadoop自动完成;
[0057] ③在Reduce阶段,计算(i,j)∈list(i,j)i的最小距离,即为所求的δi。
[0058] 本发明的技术构思为:在面对大数据集时,通常采用MapReduce的计算模型。MapReduce在处理数据集时采用并行化处理方式,具有高容错性、数据均匀分布、自动负载均衡等优点。Hadoop的Mapreduce是一个分布并行处理大数据的开源程序框架,一个Map/Reduce作业(job)通常会把输入的数据集切分为若干独立的数据,由map任务(task)以完全并行的方式处理它们。框架会对map的输出先进行排序,然后把结果输入给reduce任务。通常作业的输入和输出都会被存储在文件系统中。在本发明的方法中,主要计算的对数据的排序计算阈值,然后分类、聚类。各步骤都符MapReduce数据独立和计算独立的要求。所以采用MapReduce这个计算框架设计本方法十分有效。
[0059] 本发明的有益效果主要表现在:(1)处理大数据集,本方法面向大规模、高维数据。具有良好的处理能,完成单机无法完成的计算任务。(2)计算速度快,本方法主要计算都为线性计算,符合MapReduce特有的计算模式。计算速度是单机的几倍,甚至几十倍。(3)可扩展性,本方法采用MapReduce的计算框架,具有高横向扩展性。(4)支持广泛类型数据集,支持不同点数据集且具有良好聚类结果,具有普适性。
附图说明
[0060] 图1是计算截止距离MapReduce过程图。
[0061] 图2是计算点密度MapReduce过程图。
[0062] 图3是点密度排序MapReduce过程图。
[0063] 图4是计算点与较高密度点的最小距离δi的MapReduce过程图。
[0064] 图5是面向大数据的分布式密度聚类方法的流程图
[0065] 图6是计算点与较高密度点的最小距离δi流程图。
[0066]

具体实施方式

[0067] 下面结合附图对本发明作进一步描述。
[0068] 参照图1~图6,一种面向大数据的分布式密度聚类方法,包括如下步骤:
[0069] 步骤一:虚拟化环境、搭建Hadoop平台
[0070] 在一台刀片服务器中,虚拟化出多台虚拟机,虚拟机分配在不同的硬盘上,分配IP建立相互通信。安装hadoop软件,规划平台规模及节点的角色实例。所有节点配置主要配置文件。
[0071] 步骤二:数据预处理与加载
[0072] 从数据库中将原始数据表抽取,利用sqoop–query命令截取需要的字段,将预处理后的数据直接抽取到Hdfs中。
[0073] 步骤三:计算距离矩阵
[0074]
[0075] Ai={di1 … din}ai·{a1 … an}={|ai·a1| … |ai·an|} (2)
[0076] 计算距离矩阵D,可以将矩阵分割计算。例如在计算距离矩阵的第i行时,向量Ai中所有的|ai·aj|(1≤j≤N)都会用到相同起始点ai和整个数据集的所有点{aj|1≤j≤N}。
[0077] |ai·aj|=R·arccos[cosy1cosy2cos(x1-x2)+siny1siny2] (3)
[0078] 在Map阶段,把计算行Ai所需要的ai,标识成条的形式。其中key=,i=1,2,…,N,value=(‘A#’,ai);把的元素行Ai所需要的{aj|1≤j≤N},标识成条形式,其中key=,i=1,2,…,N, value=(‘B#’,{aj}),j=1,2,…,N。那么在Reduce阶段,计算Ai所需要的ai和集合{aj}就会被分配到同一reduce任务中。
[0079] 其中ai代表点的坐标(1≤i≤N),N为点集合的总数,Ai为距离矩阵的第i行距离向量。R为地球半径,0为地心,ai、aj为球面上的两点、球面坐标为ai(x1,y1),B(x2,y2),x1、x2∈[-π,π],y1、y2∈[-π/2,π/2]。
[0080] 步骤四:计算截止距离与点密度
[0081] 4.1)计算截止距离
[0082] 截至距离dc为距离集合降序排列的20%的位置处的距离即:
[0083] dc=D([N*0.2])
[0084] 计算dc时,为了降低计算量采用了计算TopK的方法。避免对距离矩阵的所有元素进行排序而造成对内存的浪费。在计算一大数据集中的最大的前K个数时,可以将数据集切分若干段,不同机器分别求出分片后各数据集中的最大的前K个数。然后合并到一台机器,求出整个数据集的最大的前K个数。
[0085] 因为最终结果只产生一个TopK的集合,所以在Map任务完成后需要将所有中间值传递到同一个Key之下。所以在Map阶段中,将来自数据集中元素,标识成条的形式。其中key=,value=(dij),(1≤i,j≤N)。那么在Reduce阶段,就将求出合并后的小数据集中的TopK。
[0086] 参照图1,D为计算所得的距离{dij|1≤i,j≤N}的降序排列集合,N为点的总数,[]为取整函数,Topk为数据集中元素按从大到小排列的后的前K个值的集合。
[0087] 4.2)计算点密度ρ
[0088] 点密度ρi为点i与其他所有点的距离小于截止距离dc的个数。
[0089] 因为ρi的计算只与距离矩阵的第i行相关,所以在Map过程中将同一行的元素集中在相同Key中。另外为了减少Suffer过程的中间值的量,在Map的过程中将每个小于dij的元素化成常数‘1’加入到key值为i的value里。Reduce过程中对key值i对应的Values里的元素进行累加就可以得到各点的密度ρi。
[0090] Map阶段,当dij<dc,将添加一条。其中key=,i=1,2,…,N,value=(onewritable)。onewritable代表常数‘1’;在Reduce阶段,Key值i所对应的则为ρi=Σonewritable。
[0091] 步骤五:计算点与较高密度点的最小距离δi
[0092] δi为i与其高局部密度点的最小距离,计算δi的公式如下:
[0093] δi=min{dij|ρi<ρj}而最大Max(ρi)点所对应的δ=Max(dij)。这样使得δi>min(dij)成立。
[0094] 5.1)对ρi进行降序排序,得到对应i的排序后的集合{i}decrbypi。
[0095] 5.2)利用i对应的{j|ρi<ρj},我们得到i点的δi计算所需要的d的角标集合{ij|ρi<ρj}。
[0096] 在Map阶段,把点i与对应的ρi,标识成条的形式。其中key=,value=(‘i’,ρi)。在Reduce阶段,对vaule集合里的i按ρi大小做降序排序得到{j|ρi<ρj}。标识成条的形式。其中key=,i=1,2,…,N,value=({ij|ρi<ρj})。
[0097] 5.3)计算角标集合中对应dij的最 小值,由{ij|ρi<ρj},距离集合{dij|1≤i,j≤N}得 到 计 算δi所 需 要 的{dij|ρi<ρj};并且 记 录当δi =min{dij|ρi<ρj}成立时所对应的j值;
[0098] ①在Map阶段,把来自角标数据的元素,标识成条的形式。其中key=,i=1,2,…,N,value=(‘A#’,list(ij)i);把来自距离矩 阵的元素,标识成条形式,其中key=,i=1,2,…,N,value=(‘B#’,list(dij)i);。
[0099] 于是乎,在Map阶段,我们实现了这样的战术目的:通过key,我们把参与计算的数据归为一类。通过value,我们能区分元素是来自还是角标数据还是距离数据。
[0100] ②在Shuffle阶段,相同key的value会被加入到同一个列表中,形成对,传递给Reduce,这个由Hadoop自动完成。
[0101] ③在Reduce阶段,计算(i,j)∈list(i,j)i的最小距离。即为我们所求的δi。
[0102] 其中,dij为点i与点j的距离,ρi代表点i与其他所有点的距离小于dc的个数,ρj代表点j与其他所有点的距离小于dc的个数,N为点的总个数;
[0103] 步骤六:临界密度点临界距离以及聚类中心
[0104] 6.1)临界密度点ρ0、临界距离δ0
[0105] 临界密度点ρ0为{ρi}是密度从大到小后的排列的第C个点,临界距离δ0是集合{δi}从大到小后的排列的第C个点,我们对{ρi}从小到达的排序,然后取点{ρi|i=C}的点作为ρ0,对{δi},我们进行从小到达的排序,然后取点{δi|i=C}的点作为δ0;
[0106] MapReduce过程相同于步骤四的4.1)。
[0107] 其中ρi代表点i与其他所有点的距离小于dc的个数,δi为i与其高局部密度点的最小距离,C为固定常数,根据聚类要求可以自行调节。
[0108] 6.2)判定i是否为聚类中心
[0109] 分别判断i与之对应的ρi>ρ0,δi>δ0是否成立。若都成立则点i 为聚类中心。判断所有的点我们将得到聚类中心集合M={i|ρi>ρ0,δi>δ0}。
[0110] 步骤七:点进行聚类
[0111] 以上计算都是基于距离矩阵的大规模计算,量级都在o(n2)以上。步骤七点的聚类是基于点与聚类中心集合M的关系,计算量在o(n)次所以采用单机完成最后一步。
[0112] 顺序取{(i,j)}的点,判断i是否为聚类中心。如果属于则判断下个点,如果不属于判断(i,j)的j是否属于聚类中心,如果属于则i为j类,如果不属于判断i=j点对应的j是否属于聚类中心。循环后会得到最终的聚类结果。
[0113] 其中i为点编号,j为当δi=min{dij|ρi<ρj}成立时所对应的值,{(i,j)}代表(i,j)按照ρi从大到小排列。
[0114] 步骤八:判定离群点
[0115] 在聚类结果中,有些点是多个类群的边界点。需要重新判断这些点是否属于它的聚类中心。
[0116] 那么计算每个点的广义密度值:
[0117] broad_pi=(pi+max{pj|dij
[0118] 将原有点密度pi与广义密度值broad_pi比较,Pi>broad_pi,则i仍属于原有类,否则将i则属于离群点,其中i为点编号,pi为点密度值。
[0119] 实例:结合浮动车数据,对出行密度点进行聚类应用实例,进一步说明本方法。
[0120] 参照图5,本方法的主要步骤有:
[0121] 步骤一,虚拟化环境
[0122] 在一台刀片服务器中,虚拟化出8台虚拟机,虚拟机分配在不同的硬盘上,分配IP建立相互通信。系统为Centos6.5、CPU4个64位、8G内存。
[0123] 步骤二,搭建Hadoop平台
[0124] 在每台虚拟机中安装Hadoop-2.2.0,对集群中的每个节点配置/etc/hadoop目录下的配置文件,通过文件中属性参数dfs.namenode和dfs.datanode的设置,使集群中包含两个主节点master(一个为活跃节点,一个为热备份节点)和多个数据节点datanode;通过文件中属性参数mapred.jobtracker和mapred.tasktracker的设置,使集群中包含两个个调度节点和多个任务节点,建立开源的Hadoop平台。
[0125] 步骤三,数据预处理与加载
[0126] 从数据库中将原始数据表抽取,利用sqoop–query“select id,id_j,id_w from table”命令截取有效点的坐标,将预处理后的数据直接抽取到Hdfs中。处理后的点格式为:
[0127]ID 经度 维度
1 120.2497 30.222417
2 120.189567 30.27865
[0128] 表1
[0129] 步骤四,计算距离矩阵
[0130] 对所有点进行编号,统一处理成编号、经度、维度即{i,α,β};建立第一个MapReduce任务,在Map的输出过程中我们将编号i设为Key,将各个点的经纬度(α,β)设为Value。在Reduce过程中,对应的key编号的点就可以与Values里的所有点进行距离计算我们将结果直接存储在Hdfs上,避免内存被过度占用。矩阵的储存格 式为(i,j,d)。
[0131]ID1 ID2 dij(km)
1 1 0.00
1 2 8.52
1 3 2.10
[0132] 表2
[0133] 其中i为行,j为列。d为两点对应的距离。
[0134] 步骤五,计算截止距离与点密度
[0135] 5.1截至距离dc
[0136] 输入距离矩阵的所有点。数据分片后,计算各分片的TopK。然后再合并得到全数据集的TopK。集合中最后一个值即为dc。
[0137] 5.2计算点密度ρi
[0138]
[0139] 表3
[0140] 第四个MapReduce任务将i即第一个点编号设为Map阶段的输出key,dij设为value。在Reduce阶段,我们得到i与其对应的 距离集合{dij},统计集合{dij}中小于dc的个数。将其记为ρi。
[0141] 步骤六,计算点与较高密度点的最小距离
[0142] 参照附图6,计算点与较高密度点的最小距离主要步骤有:
[0143] δi为i与其高局部密度点的最小距离δi=min{dij|ρi<ρj}而最大Max(ρi)点所对应的δ=Max(dij)。这样使得δi>min(dij)成立。
[0144] 6.1对ρi进行降序排序
[0145] 步骤5.2所产生的结果的格式为编号,以及对应的ρ即:(i,ρi)。
[0146] 我们根据ρi进行降序排序。得到对应i的序列。
[0147]i ρi
1 4654
2 6231
[0148] 表4
[0149] 6.2生成角标集合
[0150] 启动第五个MapReduce的任务,我们步骤5.2所产生的结果,计算ρ大于ρi所有点的集合{j|ρi<ρj}。在Map阶段将i设为key,将与之对应的{j|ρi<ρj}设为vaule。Reduce阶段利用输入key与valuse集合元素组合将得到i点的δi计算所需要的d的角标集合{ij|ρi<ρj}。
[0151]
[0152] 表5
[0153] 6.3计算角标集合中对应dij的最小值
[0154] 根据6.2生成的角标集合{ij|ρi<ρj},在步骤4产生的结果中寻找角标所对应的{dij|ρi<ρj}且求得δi=min{dij|ρi<ρj}以及最小距离对应的j值。
[0155]
[0156] 表6
[0157] 步骤七,求临界密度点临界距离以及聚类中心
[0158] 求临界密度点临界距离以及聚类中心主要步骤有:
[0159] 7.1临界密度点ρ0、临界距离δ0
[0160] 在对5.2的结果集{ρi},我们进行从小到达的排序,然后取点{ρi|i=C}的点作为ρ0。在对6.3的结果集{δi},我们进行从小到达的排序,然后取点{δi|i=C}的点作为δ0。
[0161] 7.2判定i是否为聚类中心m
[0162] 在步骤5.2和步骤6.3得到的{ρi},{δi}。分别判断i的ρi>ρ0,δi>δ0是否成立。若都成立则点i为聚类中心。判断所有的点我们将得到聚类中心集合{i|ρi>ρ0,δi>δ0}。
[0163]
[0164] 表7
[0165] 步骤八,聚类
[0166] 对所有点进行聚类主要步骤有:
[0167] 8.1在经过步骤5.2、6.3后将存储一份格式为i,j的文件。其中i为点的编号,j为i对应δi=min{dij|ρi<ρj}的j。并将结果存在HashMap中,key为i,value为j。
[0168] 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所属的聚类中心。然后读取下一行。
[0169]
[0170] 表8。
相关专利内容
标题 发布/更新时间 阅读量
高密度织物 2020-05-13 108
高密度织物 2020-05-13 659
密度仪 2020-05-11 398
高密度织物 2020-05-13 347
高密度光盘 2020-05-13 713
固体密度计 2020-05-11 220
高密度插座 2020-05-11 1057
骨密度仪 2020-05-11 418
高密度装置 2020-05-12 578
高密度织物 2020-05-12 338
高效检索全球专利

专利汇是专利免费检索,专利查询,专利分析-国家发明专利查询检索分析平台,是提供专利分析,专利查询,专利检索等数据服务功能的知识产权数据服务商。

我们的产品包含105个国家的1.26亿组数据,免费查、免费专利分析。

申请试用

分析报告

专利汇分析报告产品可以对行业情报数据进行梳理分析,涉及维度包括行业专利基本状况分析、地域分析、技术分析、发明人分析、申请人分析、专利权人分析、失效分析、核心专利分析、法律分析、研发重点分析、企业专利处境分析、技术处境分析、专利寿命分析、企业定位分析、引证分析等超过60个分析角度,系统通过AI智能系统对图表进行解读,只需1分钟,一键生成行业专利分析报告。

申请试用

QQ群二维码
意见反馈