基于局部敏感哈希的多GPU密度峰值聚类方法技术

技术编号:19593416 阅读:182 留言:0更新日期:2018-11-28 04:53
本发明专利技术属于数据挖掘领域,针对解决现有密度峰值聚类方法在解决大型和高维数据集聚类问题时计算复杂性太高、时间消耗太高的问题,提供一种基于局部敏感哈希的多GPU密度峰值聚类方法,包括四个过程:计算距离矩阵;计算局部密度;计算距离δ;计算聚类中心并指派类簇。核心思想是原始数据通过局部敏感哈希进行划分,并利用共享内存提高读写速度。这种方法充分利用局部敏感哈希将相似数据划分到相同GPU中,能够减少不必要的距离计算。而且设计多个哈希函数通过或运算对数据划分,减少相似数据被映射到不同GPU中,基于消息传递接口MPI实现多GPU统计方法,提高了参数计算速度。

【技术实现步骤摘要】
基于局部敏感哈希的多GPU密度峰值聚类方法
本专利技术属于数据挖掘领域,特别是涉及一种基于局部敏感哈希的多GPU(GraphicProcessingUnit,图形处理器)密度峰值聚类方法。
技术介绍
聚类(clustering)是一种无监督分类技术,其目的是按照数据间相似性将未标记的数据集分成有限类别或集群,最终使得组内数据相似度大,而组间差异性大。由于聚类可以在数据集中找到隐藏的模式,因此已被广泛应用于机器学习、计算机视觉和生物信息学等众多科学研究中。目前主要有以下几种聚类方法:(1)K-means和K-medoids方法,将数据点的中心作为相应的聚类中心,只能发现球形簇的缺点,不适用于非球形聚类,聚类结果敏感到集群的数量,且对噪声不敏感;(2)分层聚类方法,根据接近矩阵将数据组织成层次结构,但这种方法的时间复杂度很高,需要提前指定簇的数量;(3)自组织映射(Self-organizingMaps,SOM)等基于模型的聚类方法,为每个集群设置一个模型,并找到模型的最佳拟合,但该模型不一定正确,且聚类结果对参数敏感。2014年Rodriguez和Laio在《Science》发表的论文“Clusteringbyfastsearchandfindofdensitypeaks,DPC(基于密度峰值的聚类方法),Science,2014,344(6191):1492-1496”提出了密度峰值(DensityPeak,DP)聚类方法,为聚类算法的设计提供了新的思路,他们提出了局部密度和相对距离这两个假设,因而DP能够快速有效地发现任意形状的簇,已经广泛应用于各种领域,并且显示出良好的聚类结果。DP把较低局部密度的相邻点包围的数据点作为聚类中心,其中较低局部密度意味着该点的局部密度低于一定范围内的至少一个点的局部密度。由于类簇中心彼此远离,因此类簇中心距离与具有较高局部密度的数据点具有相对较大的距离。与其他以前的聚类方法相比,DP具有很多优点,虽然DP具有许多有吸引力的特征,但计算复杂度非常高,特别是随着数据大小和数据维度的增加,这阻碍了密度峰值方法的广泛应用。要确定集群中心并将点分类到相应的集群,DP需要计算每个点的两个元素:局部密度ρ和相对高密度点的距离δ。其定义分别公式(1)、(2)所示:数据点的局部密度:其中dc为超参数,其满足这样的条件:平均每个点的dc范围内的数据点数目是数据点总数的2%。相对高密度点的距离δ:它们都取决于所有数据点对之间的距离。假设数据集的大小为N,则每对点之间的距离的计算复杂度为O(N2)。此外,局部密度ρ的大小对阈值dc敏感,通常,通过对所有距离的值进行排序来实现计算dc的过程,然后在排序的距离列表中找到其位置。对于大型和高维数据集,排序矩阵时间消耗太高。
技术实现思路
本专利技术将针对解决现有密度峰值聚类方法在解决大型和高维数据集聚类问题时计算复杂性太高、时间消耗太高的问题,提供一种基于局部敏感哈希的多GPU密度峰值聚类方法。基于局部敏感哈希的多GPU密度峰值聚类方法主要包括四个过程组成:计算距离矩阵;计算局部密度;计算距离δ;计算聚类中心并指派类簇;具体技术方案如下:第一步,计算距离矩阵;包括以下步骤:1.1使用CPU对数据点p进行编码,记p是d维数据,所有点的每一位数据中最大值为C,则用C位0/1编码来表示p的每一维,这样每个数据点就用C×d位0/1编码来表示;接下来在[0,C×d]中选取k个数,组成哈希函数簇,k、d均为自然数,每个哈希函数用公式(3)表示:hi(p)=pi(3)对于选取的第i个数[i],哈希函数的结果为数据点p的0/1编码的第[i]位的值。这样k个哈希函数的输出结果就组成了一个k维哈希值,再经过哈希映射对应到一个哈希桶中,i为自然数。1.2在CPU端使用多组哈希函数建立数据索引,将数据分配到每个GPU中,方法是:记一个哈希函数簇包含k个哈希函数,选取b组不同的k值,将一个数据点映射到b个k维哈希值,b≥2;对于数据点X、Y,若b个哈希值进行或运算后,有一对哈希值相同,则数据点X、Y就会被映射到同一个GPU;只有当所有哈希值都不同时,两个数据点才会被映射到不同的GPU;1.3CPU按照GPU数量启动多个线程,调用每个GPU针对局部数据计算距离矩阵,方法是:数据点X被预先读取到共享内存,线程块中的每个线程从共享内存读取一个数据,从全局内存相应的数据点,再计算距离。完成后,这些线程使用共享内存中的下一个数据点来计算距离矩阵的其他元素;第二步,计算局部密度;包括以下步骤:2.1多GPU计算参数dc,流程如下:2.1.1CPU启动M个线程,在每个GPU中查找距离矩阵的最大和最小元素,M为自然数;2.1.2CPU将最大、最小距离的均值发送给每个GPU;2.1.3每个GPU统计其中小于这个均值距离的元素个数,并将此元素个数发送给CPU;2.1.4CPU通过消息传递接口(Messagepassinginterface,MPI)求和,检查这个均值距离是否符合dc条件,若不符合则继续将此均值距离作为最大值,转2.1.1;否则,进入步骤2.2。2.2在每个GPU内计算局部密度;第三步,计算距离δ;包括以下步骤:3.1对于每个数据点,在GPU内查找与其距离最近的且具有更高密度的点,记录这个距离δ′;3.2将这个点发送到其他GPU计算距离,并比较是否有距离更近的具有更高局部密度的数据点;3.3若在其他GPU存在这样的点,则用新的距离作为δ,并记录这个最近的高密度点的索引;第四步,计算聚类中心并指派类簇;包括以下步骤:4.1根据第三步的索引,建立数据点之间的从属关系,低密度点从属于与其距离最近的高密度点;4.2根据局部密度ρ和δ归一化之后的乘积,选择二者均明显高于其他数据点的数据作为聚类中心;4.3根据数据点的从属关系和类簇中心对数据集的每个数据点指派类簇,这个类簇指派即为每个数据点的类别。4.3输出每个数据点的类别,结束。与现有技术相比,本专利技术可以取得以下有益效果:1)本专利技术设计了多GPU距离矩阵计算方法。核心思想是原始数据通过局部敏感哈希进行划分,并利用共享内存提高读写速度。这种方法充分利用局部敏感哈希将相似数据划分到相同GPU中,能够减少不必要的距离计算。2)设计多个哈希函数通过或运算对数据划分。方法是将数据点通过同一个哈希函数族的b(b≥2)个哈希函数值进行或运算,当有一对以上的函数值相同时就将数据映射到同一个GPU中。这样可以减少相似数据被映射到不同GPU中。3)本专利技术在多GPU上实现了高效密度峰值聚类并行方法。为了在实现过程中用二分法计算局部密度的参数,方法实现了基于消息传递接口MPI的多GPU统计方法,提高了参数计算速度。附图说明图1为本专利技术总体流程图;图2为本专利技术基于局部敏感哈希的数据分发图;图3为本专利技术单个GPU内距离矩阵的计算示意图;图4为本专利技术计算参数dc的流程图。具体实施方式为了使本申请中的技术方案被更好地理解,下面将结合本申请实施例中的附图和具体实施方式,对本申请进行清楚、详细的描述:基于多GPU的密度峰值聚类并行方法由四个过程组成:计算距离矩阵;计算局部密度;计算距离δ;计算聚类中心并指派类簇。其中,每个GPU内计算局部密度之前,需要计算参数dc。本申本文档来自技高网
...

【技术保护点】
1.基于局部敏感哈希的多GPU密度峰值聚类方法,其特征在于,包括以下步骤:第一步,计算距离矩阵;第二步,计算局部密度;第三步,计算距离δ;第四步,计算聚类中心并指派类簇。

【技术特征摘要】
1.基于局部敏感哈希的多GPU密度峰值聚类方法,其特征在于,包括以下步骤:第一步,计算距离矩阵;第二步,计算局部密度;第三步,计算距离δ;第四步,计算聚类中心并指派类簇。2.如权利要求1所述的基于局部敏感哈希的多GPU密度峰值聚类方法,其特征在于,所述第一步计算距离矩阵,包括以下步骤:1.1使用CPU对数据点p进行编码,记p是d维数据,所有点的每一位数据中最大值为C,则用C位0/1编码来表示p的每一维,这样每个数据点就用C×d位0/1编码来表示;接下来在[0,C×d]中选取k个数,组成哈希函数簇,k、d均为自然数,每个哈希函数用公式(3)表示:hi(p)=pi(3)对于选取的第i个数[i],哈希函数的结果为数据点p的0/1编码的第[i]位的值;这样k个哈希函数的输出结果就组成了一个k维哈希值,再经过哈希映射对应到一个哈希桶中,i为自然数;1.2在CPU端使用多组哈希函数建立数据索引,将数据分配到每个GPU中,方法是:记一个哈希函数簇包含k个哈希函数,选取b组不同的k值,将一个数据点映射到b个k维哈希值,b≥2;对于数据点X、Y,若b个哈希值进行或运算后,有一对哈希值相同,则数据点X、Y就会被映射到同一个GPU;只有当所有哈希值都不同时,两个数据点才会被映射到不同的GPU;1.3CPU按照GPU数量启动多个线程,调用每个GPU针对局部数据计算距离矩阵,方法是:数据点X被预先读取到共享内存,线程块中的每个线程从共享内存读取一个数据,从全局内存相应的数据点,再计算距离;完成后,这些线程使用共享内存中的下一个数据点来计算距离矩阵的其他元素。3.如权利要求1所述的基于局部敏感哈希的多GPU密度峰值聚类方法,其特...

【专利技术属性】
技术研发人员:李东升葛可适苏华友
申请(专利权)人:中国人民解放军国防科技大学
类型:发明
国别省市:湖南,43

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1