Page 77 - 《软件学报》2026年第3期
P. 77

1040                                                       软件学报  2026  年第  37  卷第  3  期


                 点的计算限制在分区内, 最终合并各分区聚类结果. 例如, Mr. Scan               [29] 使用  MRNet 树将数据划分至各    GPU  节点,

                 各分区需在分区边界节点的基础上进一步扩展                 ε 的范围, 称为  ε 邻域, 以保证准确识别核心点. 各         GPU  节点使用
                 改进后的   CUDA-DClust 进行局部   DBSCAN  的计算, 最终通过判断分区间重叠数据点的性质进行簇归并; GSCAN                  [42]
                 则使用网格划分数据, 计算簇时仅计算当前单元格及其邻近单元格点的距离; GPU Multi-grid                      [43] 扩展了网格的定
                 义, 实现了多层网格划分, 进一步限制搜索范围, 减小计算开销; Hybrid-DBSCAN                [44] 同样采用基于网格的方式, 不
                 同的是其设计了一种        GPU-CPU  异构执行策略, 使用     GPU  计算近邻点, 而使用     CPU  进行聚类的计算; 为了提高分
                 区效率, CudaSCAN  [45] 采用并行  KD  树划分数据集, 划分时与     Mr. Scan  采用相同的扩展   ε 邻域的策略, 合并簇时仅
                 需检查各分区间的重叠数据. 分区聚类计算虽限制了近邻计算范围, 但其仍需遍历分区内所有数据以计算各数据
                 点的近邻. 为了进一步减小近邻计算代价, 基于索引的聚类计算通过构建基于                         GPU  的索引实现近邻查询的加速,
                 进而加速    DBSCAN  的计算. 例如, FDBSCAN    与  FDBSCAN-DenseBox  [46] 使用层次包装盒树   (bounding volume
                 hierarchy based on tree, BVH) 作为索引结构, 每个线程分别负责一个数据点的近邻搜索; cuML-DBSACN           [47] 则采用
                 一种更适合    GPU  并行计算的索引——随机球形覆盖            (random ball cover), 进一步提高了计算效率. 尽管上述方法
                 通过不同路径提升性能, 其对于高维向量的聚类仍存在效率低下的问题.

                  2   基础知识
                    本节将在第     2.1  节介绍基于密度的聚类算法的相关概念和基础知识, 在第                 2.2  节介绍利用  K  近邻图作为索引
                 的  DBSCAN  算法的相关概念.
                  2.1   基于密度的聚类算法

                    DBSCAN  采用基于密度的思想, 将簇定义为密度相连点的最大集合, 能够发现任意形状的聚类, 并识别噪声
                 点. DBSCAN  算法基于以下重要概念实现聚类.
                    定义  1 (  ε 邻域). 给定数据点   p, 一个距离参数   ε, 数据点   p 的  ε 邻域为所有与   p 的距离小于等于    ε 的数据点组
                 成的集合, 即   N ε (p) = {q|d(p,q) ⩽ ε}, 其中  d  为距离函数.
                    定义   2 (核心点). 给定整数    minPts, 对于数据点   p, 如果  N ε (p) ⩾ minPts, 则称数据点  p  为核心点; 反之, 如果
                 N ε (p) < minPts, 则称  p  为非核心点.
                    定义  3 (边界点). 对于非核心点      q, 若存在一个核心点      p, 使得  q 位于   p 的   ε 邻域内, 即   q ∈ N ε (p), 则称数据点  q
                 为边界点.
                    定义  4 (噪声点). 对于非核心点     q, 若其不在任意一个核心点的         ε 邻域内, 则称该点为噪声点.
                    定义  5 (密度直达). 若   p 为核心点,   q 位于   p 的  ε 邻域内, 则称  q 可由  p 密度直达.
                    定义  6 (密度可达). 若存在核心点序列        {p 1 , p 2 ,..., p n }, 其中,   p 1 = p p n = q, 序列内任意一个点   p i +1 都可由   p i
                                                                       ,
                 密度直达, 则称    q 由  p 密度可达.
                    定义  7 (密度相连). 若存在数据点      o, 使得点   p 和点   q 都可由   o 密度可达, 则称   p 与  q 密度相连.
                    定义  8 (基于密度的聚类). 设集合       C  是所有数据点构成的集合的一个子集, 称集合             C  是一个基于密度的聚类
                 簇, 当且仅当   C  满足以下  3  个条件: (1)  C  中包含至少一个核心点     p; (2)  C  中任意两个数据点均密度相连; (3) 不存
                               s
                 在数据点   s < C, 且   与  C  内的数据点密度相连.
                    后文图   1  对上述定义进行展示, 该示例将         minPts 设为  3, 共形成  2  个簇  C 1  与  C 2 . 例如, 因为   p 1  位于   p 2  的  ε 邻
                 域内, 所以   p 1  可由  p 2  密度直达. 而由于存在核心点序列{p 3 , p 2 , p 1 }, 其中,  p 2  可由  p 3  密度直达,   p 1  可由  p 2  密度直
                 达, 所以   p 1  由   p 3  密度可达. 类似地,   p 5  由   p 3  密度可达. 由于点   p 1  和点   p 5  都可由   p 3  密度可达, 因此   p 1  与   p 5  密度相连.
                  2.2   基于  K  近邻图的  DBSCAN  算法
                    为了实现基于      K  近邻图的  DBSCAN  算法, 本文在不改变结果的前提下对第            2.1  节的核心点定义进行了修改.
                    定义  9 (K  近邻图核心点). 给定正整数      minPts < k, 对于任意数据  p, 其在  K  近邻图中的邻居列表      N k (p) 按距离
                 升序排序, 若   p 与其邻居列表中第      minPts 个点  N minPts (p) 的距离  d(p,N  minPts  (p)) ⩽ ε, 则  p 为  K  近邻图核心点.
                                                      k               k
   72   73   74   75   76   77   78   79   80   81   82