CN108897847B - 基于局部敏感哈希的多gpu密度峰值聚类方法 - Google Patents
基于局部敏感哈希的多gpu密度峰值聚类方法 Download PDFInfo
- Publication number
- CN108897847B CN108897847B CN201810685672.9A CN201810685672A CN108897847B CN 108897847 B CN108897847 B CN 108897847B CN 201810685672 A CN201810685672 A CN 201810685672A CN 108897847 B CN108897847 B CN 108897847B
- Authority
- CN
- China
- Prior art keywords
- gpu
- data
- distance
- density
- hash
- 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.)
- Active
Links
Images
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明属于数据挖掘领域,针对解决现有密度峰值聚类方法在解决大型和高维数据集聚类问题时计算复杂性太高、时间消耗太高的问题,提供一种基于局部敏感哈希的多GPU密度峰值聚类方法,包括四个过程:计算距离矩阵;计算局部密度;计算距离δ;计算聚类中心并指派类簇。核心思想是原始数据通过局部敏感哈希进行划分,并利用共享内存提高读写速度。这种方法充分利用局部敏感哈希将相似数据划分到相同GPU中,能够减少不必要的距离计算。而且设计多个哈希函数通过或运算对数据划分,减少相似数据被映射到不同GPU中,基于消息传递接口MPI实现多GPU统计方法,提高了参数计算速度。
Description
技术领域
本发明属于数据挖掘领域,特别是涉及一种基于局部敏感哈希的多GPU(GraphicProcessing Unit,图形处理器)密度峰值聚类方法。
背景技术
聚类(clustering)是一种无监督分类技术,其目的是按照数据间相似性将未标记的数据集分成有限类别或集群,最终使得组内数据相似度大,而组间差异性大。由于聚类可以在数据集中找到隐藏的模式,因此已被广泛应用于机器学习、计算机视觉和生物信息学等众多科学研究中。目前主要有以下几种聚类方法:(1)K-means和K-medoids方法,将数据点的中心作为相应的聚类中心,只能发现球形簇的缺点,不适用于非球形聚类,聚类结果敏感到集群的数量,且对噪声不敏感;(2)分层聚类方法,根据接近矩阵将数据组织成层次结构,但这种方法的时间复杂度很高,需要提前指定簇的数量;(3)自组织映射(Self-organizing Maps,SOM)等基于模型的聚类方法,为每个集群设置一个模型,并找到模型的最佳拟合,但该模型不一定正确,且聚类结果对参数敏感。
2014年Rodriguez和Laio在《Science》发表的论文“Clustering by fast searchand find of density peaks,DPC(基于密度峰值的聚类方法),Science,2014,344(6191):1492-1496”提出了密度峰值(Density Peak,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.3 CPU按照GPU数量启动多个线程,调用每个GPU针对局部数据计算距离矩阵,方法是:数据点X被预先读取到共享内存,线程块中的每个线程从共享内存读取一个数据,从全局内存相应的数据点,再计算距离。完成后,这些线程使用共享内存中的下一个数据点来计算距离矩阵的其他元素;
第二步,计算局部密度;包括以下步骤:
2.1 多GPU计算参数dc,流程如下:
2.1.1 CPU启动M个线程,在每个GPU中查找距离矩阵的最大和最小元素,M为自然数;
2.1.2 CPU将最大、最小距离的均值发送给每个GPU;
2.1.3 每个GPU统计其中小于这个均值距离的元素个数,并将此元素个数发送给CPU;
2.1.4 CPU通过消息传递接口(Message passing interface,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。本申请主要针对多GPU环境下计算距离矩阵和参数dc进行优化,提高计算并行度和速度。为了充分利用多GPU的并行加速性能,方法由CPU启动与GPU数量相同的线程,根据GPU显存大小,为每个线程分配适量的数据进行计算。在GPU的计算代码中,本申请使用英伟达通用计算架构CUDA(Compute Unified Device Architecture)Thrust库中的同步函数接口,在CPU控制下进行同步。GPU计算结果既可以通过传统的主存-显存进行共享,也可以通过最新的GPU高速互联技术NVLink进行传输。基于这个思路,本发明按照如下方式设计了基于多GPU的密度峰值聚类方法:
A.多GPU下计算距离矩阵
在多GPU下计算距离矩阵核心是要解决数据分配问题和充分挖掘GPU计算性能。如图2所示,方法首先通过欧氏距离下的局部敏感哈希函数建立整个数据集上的索引,为每个GPU分配一部分数据,并计算这一部分数据和整个数据集的距离,并将得到的距离矩阵存储在各自的全局内存中。局部敏感哈希函数可以将相似的数据以较大的概率映射到同一个哈希桶中,这样既实现了对数据集的分配,充分利用硬件资源,还可以减少不必要的距离计算。另一方面,为了充分利用GPU线程块内共享内存读写速度快的优势,本发明设计利用共享内存存储每个GPU分配得到的数据,具体如图3所示。数据点X被预先读取到共享内存。线程块中的每个线程从共享内存读取一个数据,从全局内存相应的数据点,再计算距离。完成后,这些线程使用共享内存中的下一个数据点来计算距离矩阵的其他元素。由于共享内存带宽比全局内存大十倍以上,这一策略将大大减少程序的内存访问时间。而且,线程使用存储在寄存器中的数据点来计算多个距离,这是能够有效的利用GPU的浮点计算能力。
B.利用多个哈希函数提高哈希桶内数据相似度
通过局部敏感哈希函数使得同一个GPU中分配的数据尽可能相似,但是仍然存在相邻的数据被映射到了不同的GPU的情况,因此为了减少这种情况,本发明选取b(b≥2)组不同的k值(一个哈希函数簇包含k个哈希函数),将一个数据点映射到b个k维哈希值。对于数据点X,Y,若b个哈希值进行或运算之后,有一对哈希值相同,两个数据点就会被映射到同一个GPU,只有当所有哈希值都不同时,两个数据点才会被映射到不同的GPU。这种方法减少了相似数据被分配到不同GPU的概率,可以提高计算局部密度的准确性。
C.基于MPI在多GPU下计算参数dc
参数dc的值是这样一个距离,其能够使得每个数据点周围dc范围内的点数目平均为整个数据集大小的2%。在单个GPU下一般使用二分法求dc。本发明设计的多GPU下的计算方法如图4所示。首先CPU启动多个线程在每个GPU中查找距离矩阵的最大和最小元素,然后通过MPI归约后求全局最大、最小距离。在二分法的每个迭代中,将最大、最小距离的均值发送给每个GPU,统计在每个GPU中小于这个均值距离的元素个数,并再次通过MPI求和,检查这个均值距离是否符合dc条件,若不符合则继续将此均值距离作为最大值,重复迭代直到找到符合条件的dc。
以上所述仅是本发明的优选实施方式,本发明的保护范围并不仅局限于上述实施例,凡属于本发明思路下的技术方案均属于本发明的保护范围。应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理前提下的若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。
Claims (5)
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被预先读取到共享内存,线程块中的每个线程从共享内存读取一个数据,从全局内存相应的数据点,再计算距离;完成后,这些线程使用共享内存中的下一个数据点来计算距离矩阵的其他元素。
2.如权利要求1所述的基于局部敏感哈希的多GPU密度峰值聚类方法,其特征在于,所述第二步计算局部密度,包括以下步骤:
2.1多GPU计算参数dc;
2.2在每个GPU内计算局部密度。
3.如权利要求1所述的基于局部敏感哈希的多GPU密度峰值聚类方法,其特征在于,所述第三步计算距离δ,包括以下步骤:
3.1对于每个数据点,在GPU内查找与其距离最近的且具有更高密度的点,记录这个距离δ′;
3.2将这个点发送到其他GPU计算距离,并比较是否有距离更近的具有更高局部密度的数据点;
3.3若在其他GPU存在这样的点,则用新的距离作为δ,并记录这个最近的高密度点的索引。
4.如权利要求2所述的基于局部敏感哈希的多GPU密度峰值聚类方法,其特征在于,所述步骤2.1多GPU计算参数dc,流程如下:
2.1.1 CPU启动M个线程,在每个GPU中查找距离矩阵的最大和最小元素,M为自然数;
2.1.2 CPU将最大、最小距离的均值发送给每个GPU;
2.1.3每个GPU统计其中小于这个均值距离的元素个数,并将此元素个数发送给CPU;
2.1.4 CPU通过消息传递接口MPI求和,检查这个均值距离是否符合dc条件,若不符合则继续将此均值距离作为最大值,转2.1.1;否则,进入步骤2.2。
5.如权利要求3所述的基于局部敏感哈希的多GPU密度峰值聚类方法,其特征在于,所述第四步计算聚类中心并指派类簇,包括以下步骤:
4.1根据第三步的索引,建立数据点之间的从属关系,低密度点从属于与其距离最近的高密度点;
4.2根据局部密度ρ和δ归一化之后的乘积,选择二者均明显高于其他数据点的数据作为聚类中心;
4.3根据数据点的从属关系和类簇中心对数据集的每个数据点指派类簇,这个类簇指派即为每个数据点的类别;
4.3输出每个数据点的类别,结束。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810685672.9A CN108897847B (zh) | 2018-06-28 | 2018-06-28 | 基于局部敏感哈希的多gpu密度峰值聚类方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810685672.9A CN108897847B (zh) | 2018-06-28 | 2018-06-28 | 基于局部敏感哈希的多gpu密度峰值聚类方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108897847A CN108897847A (zh) | 2018-11-27 |
CN108897847B true CN108897847B (zh) | 2021-05-14 |
Family
ID=64346788
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810685672.9A Active CN108897847B (zh) | 2018-06-28 | 2018-06-28 | 基于局部敏感哈希的多gpu密度峰值聚类方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN108897847B (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112070652A (zh) * | 2019-06-10 | 2020-12-11 | 上海赜睿信息科技有限公司 | 数据压缩、解压方法、可读存储介质和电子设备 |
CN112052879B (zh) * | 2020-08-13 | 2023-06-13 | 东北大学 | 一种利用gpu加速密度峰聚类的方法 |
CN113743457B (zh) * | 2021-07-29 | 2023-07-28 | 暨南大学 | 基于量子Grover搜索技术的量子密度峰值聚类方法 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106778859A (zh) * | 2016-12-12 | 2017-05-31 | 中国科学院重庆绿色智能技术研究院 | 一种基于数据密度峰值的自标记半监督分类方法及装置 |
CN107392249A (zh) * | 2017-07-24 | 2017-11-24 | 江南大学 | 一种k近邻相似度优化的密度峰聚类方法 |
CN107563400A (zh) * | 2016-06-30 | 2018-01-09 | 中国矿业大学 | 一种基于网格的密度峰值聚类方法及系统 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9379951B2 (en) * | 2014-01-10 | 2016-06-28 | Instep Software, Llc | Method and apparatus for detection of anomalies in integrated parameter systems |
-
2018
- 2018-06-28 CN CN201810685672.9A patent/CN108897847B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107563400A (zh) * | 2016-06-30 | 2018-01-09 | 中国矿业大学 | 一种基于网格的密度峰值聚类方法及系统 |
CN106778859A (zh) * | 2016-12-12 | 2017-05-31 | 中国科学院重庆绿色智能技术研究院 | 一种基于数据密度峰值的自标记半监督分类方法及装置 |
CN107392249A (zh) * | 2017-07-24 | 2017-11-24 | 江南大学 | 一种k近邻相似度优化的密度峰聚类方法 |
Non-Patent Citations (2)
Title |
---|
Evaluating the Density Parameter in Density Peak Based Clustering;Jian Hou.etc;《International Conference on Intelligent Control and Information Processing》;20161231;全文 * |
一种改进的搜索密度峰值的聚类算法;淦文燕等;《智能系统学报》;20170430;第12卷(第2期);全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN108897847A (zh) | 2018-11-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Rao et al. | Spherical fractal convolutional neural networks for point cloud recognition | |
CN108897847B (zh) | 基于局部敏感哈希的多gpu密度峰值聚类方法 | |
CN109615014B (zh) | 一种基于kl散度优化的3d物体数据分类系统与方法 | |
Kong et al. | Manhattan hashing for large-scale image retrieval | |
CN104199827B (zh) | 基于局部敏感哈希的大规模多媒体数据的高维索引方法 | |
He et al. | K-nearest neighbors hashing | |
Xu et al. | An improved k-means clustering algorithm | |
US8352470B2 (en) | Adaptive aggregation: improving the performance of grouping and duplicate elimination by avoiding unnecessary disk access | |
CN107273505B (zh) | 基于非参数贝叶斯模型的监督跨模态哈希检索方法 | |
CN106845536B (zh) | 一种基于图像缩放的并行聚类方法 | |
CN109829066B (zh) | 基于分层结构的局部敏感哈希图像索引方法 | |
Wang et al. | Duplicate discovery on 2 billion internet images | |
JP7196542B2 (ja) | 学習装置および学習方法 | |
Xiao et al. | A survey of parallel clustering algorithms based on spark | |
CN109711442A (zh) | 无监督逐层生成对抗特征表示学习方法 | |
CN111429974A (zh) | 超级计算机平台上的分子动力学模拟短程力并行优化方法 | |
CN110781943A (zh) | 一种基于毗邻网格搜索的聚类方法 | |
CN106484532A (zh) | 面向sph流体模拟的gpgpu并行计算方法 | |
Yang et al. | Efficient locality-sensitive hashing over high-dimensional data streams | |
CN113204559A (zh) | 一种gpu上的多维kd树优化方法 | |
Heo et al. | Shortlist selection with residual-aware distance estimator for k-nearest neighbor search | |
Yu et al. | A DenseNet feature-based loop closure method for visual SLAM system | |
Zhang et al. | Bow pooling: a plug-and-play unit for feature aggregation of point clouds | |
JP7211020B2 (ja) | 学習装置および学習方法 | |
Donnelly et al. | A coordinate-oblivious index for high-dimensional distance similarity searches on the GPU |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |