开放科学(资源服务)标志码(OSID):
聚类作为一种无监督学习方法,是数据挖掘领域[1]的重要技术之一。聚类的主要目的是依照所定义的聚类准则,将一组杂乱的数据中具有相似特征的数据点划归为一个类簇,同时使得不同类簇之间具有显著差异[2]。在如今万物互联、大数据蓬勃发展的当下,所产生的数据量也正在爆炸式增长,因此,寻求一种高效的数据聚类方法显得尤为重要。近年来,许多学者相继提出了多种不同的聚类算法,按照不同的算法原理可将其分为基于划分的聚类、基于层次的聚类、基于网格的聚类、基于密度的聚类、基于模型的聚类这五大类,这几类不同的聚类算法各自都具有独特的优势并得到了广泛研究与应用。
DBSCAN[3]作为一种典型的基于密度的聚类算法,能够有效识别任意形状的数据,且具有较好的聚类效果,但该算法在聚类过程中易受邻域参数的影响,其结果往往需要反复调参才能确保精确。RODRIGUEZ等[4]于2014年提出一种新的基于密度的聚类(DPC)算法,该算法因具有原理简单、高效等优点,自提出以来便引起许多学者的关注,且被广泛应用于图像处理[5]、生物医学[6]、文档处理[7]等领域,但是,DPC算法也存在一些缺陷,如聚类结果受局部密度及其相对距离的影响、截断距离需要人为设定且参数的选取较为敏感、聚类中心的选取需人为参与决策、算法难以处理密度分布差异较大和复杂的流形结构数据,这些问题提高了算法在聚类过程中的主观性与不稳定性。
为提高DPC算法的适用性,很多学者都对其做了相应的改进。DU等[8]提出一种基于KNN的改进密度峰值聚类(DPC-KNN)算法,将KNN与主成分分析法引入局部密度的计算过程,充分考虑数据的邻域分布特征,从而更好地识别边界点的类别。PARMAR等[9]采用残差来测量邻域内的局部密度,提出一种基于残差的密度峰值聚类(REDPC)算法,其能够更好地处理包含各种数据分布模式的数据集。LIU等[10]指出DPC算法中如局部密度及最短距离度量方法、剩余点分配策略等所存在的一些问题,提出一种基于共享近邻的聚类方法,该方法通过共享近邻重新定义密度及其距离的计算方式,最后设计两步分配方式对剩余点进行分配,其有效提高了算法的聚类性能。XIE等[11]提出一种基于模糊加权K近邻的改进DPC(FKNN-DPC)算法,利用K个最近邻个体之间的距离之和来衡量密度,并用一种新的分配方式对剩余点进行分配。CHENG等[12]提出一种新的基于自然邻居优化的DPC算法,该改进算法可以很好地反映数据的分布,且无需任何参数。HOU等[13]提出仅基于相对密度关系的聚类中心识别准则,以增强密度峰值聚类算法的聚类效果。FLORES等[14]通过检测一维决策图中数据点之间的间隙来自动确定聚类中心。LIANG等[15]提出一种基于分治法的改进DPC算法,该算法在不需要任何先验条件的情况下能够自动寻得聚类中心。QIAO等[16]引入一种新的不对称度量指标,增强了算法查找边界点的能力,解决了DPC算法在分布不均的数据上聚类效率不高的问题。XU等[17]提出一种具有密度敏感相似性的密度峰值聚类(RDPC-DSS)算法,其有效提高了流形数据的聚类精度。
本文提出一种基于加权共享近邻与累加序列的密度峰值(DPC-WSNN)算法。定义一种新的基于加权共享近邻的局部密度度量公式,替代DPC中根据截断距离
DPC算法在实现过程中主要基于以下2个假设:
1)聚类中心被一群密度较低的点包围。
2)聚类中心与其他高密度点之间的最短距离足够远。
基于上述2个假设,选取一个合适的截断距离参数
1)在截断核的定义下,点
$ {\rho }_{i}=\sum\limits _{j=1}^{n}\chi ({d}_{ij}-{d}_{c}) $ | (1) |
当
2)在高斯核的定义下,
$ {\rho }_{i}=\sum\limits _{j\ne i}^{}\mathrm{e}\mathrm{x}\mathrm{p}\left(-\frac{{d}_{ij}^{2}}{{d}_{c}^{2}}\right) $ | (2) |
点
$ {\delta }_{i}=\left\{\begin{array}{l}\underset{j}{\mathrm{m}\mathrm{a}\mathrm{x}}\left({d}_{ij}\right), {\rho }_{i}\mathrm{最}\mathrm{大}\\ \underset{j:{\rho }_{j} > {\rho }_{i}}{\mathrm{m}\mathrm{i}\mathrm{n}}\left({d}_{ij}\right), \mathrm{其}\mathrm{他}\end{array}\right. $ | (3) |
当计算出所有点的局部密度
DPC算法定义了2种密度计算方式,2种方式都是以欧几里得距离来衡量数据点的密度,但是欧几里得距离只考虑数据点之间的局部一致性特征,忽略了全局一致性特征,因此,当数据样本点分布不均时,基于欧几里得距离得到的密度通常不能准确地捕捉到固有的数据结构,最终导致聚类性能下降。为了适应更多复杂且分布不均的数据集,本文将共享近邻引入密度计算中,充分考虑样本的整体分布,以更好地平衡样本点的全局一致性与局部一致性。共享近邻[10]与样本间的相似度定义如下:
定义1(共享近邻) 对于数据集
$ \mathrm{S}\mathrm{N}\mathrm{N}({x}_{i}, {x}_{j})=\left|{\mathit{\Gamma}} \right({x}_{i})\bigcap {\mathit{\Gamma}} ({x}_{j}\left)\mathrm{ }\right| $ | (4) |
定义2(样本间的相似度) 根据共享近邻的定义,样本点
$ {s}_{ij}=\mathrm{e}\mathrm{x}\mathrm{p}\left(-\frac{\sum \limits_{o\in \mathrm{S}\mathrm{N}\mathrm{N}({x}_{i}, {x}_{j})}({d}_{io}+{d}_{jo}{)}^{2}}{1+\left|\mathrm{S}\mathrm{N}\mathrm{N}\right({x}_{i}, {x}_{j}){|}^{2}}\right) $ | (5) |
其中:
![]() |
Download:
|
图 1 共享邻居示意图 Fig. 1 Schematic diagram of shared neighbors |
此外,在面对不同密度和大小的类簇时,位于数据密集区域的样本点和位于数据稀疏区域的样本点对聚类中心选取的贡献度不一样,因此,在解决数据分布不均的问题上,除对数据进行过采样和欠采样调节外,对样本点的贡献度进行加权处理也可以起到很好的平衡作用。本文以样本点间的共享近邻数作为密度的重要衡量指标,以对每个样本点所在的区域相似度进行权重调整,为此,引入图 2所示的sigmoid函数,其定义如下:
$ \theta \left(x\right)=\frac{1}{1+\mathrm{e}\mathrm{x}\mathrm{p}(-x)} $ | (6) |
![]() |
Download:
|
图 2 sigmoid函数图像 Fig. 2 Image of the sigmoid function |
相比于一元一次函数,sigmoid函数在一定程度上可以对数据相似度进行权重调整,减少了因数据分布不均而带来的误差。本文将sigmoid函数引入密度计算中,以互近邻点的数目作为变量
定义3(局部密度) 对于样本点
$ {\rho }_{i}=\sum\limits _{j\in {\mathit{\Gamma}} \left(i\right)}\theta \left( \right|{\rm{SNN}}({x}_{i}, {x}_{j}) \left| \right)\cdot {s}_{ij} $ | (7) |
通过定义3所给出的密度度量公式,可计算出数据集中所有点的局部密度及相对距离。
为了进一步说明所改进的密度在处理分布不均数据集时的有效性,以Pathbased数据集为例,DPC算法与加权共享近邻的改进DPC算法的决策图如图 3所示。从图 3(a)可以看出,DPC的决策图在确定聚类中心时很容易将第3个聚类点处理为噪声点,从而导致最终聚类结果出现偏差;从图 3(b)可以看出,对密度进行改进后,决策图中聚类中心分布在右上角,均位于高密度区域,通过该决策图可以准确选出目标聚类中心。实验结果表明,改进DPC可以对数据进行全局考虑,解决数据集中的分布不均问题,从而确定正确的聚类中心。
![]() |
Download:
|
图 3 2种算法的决策图对比 Fig. 3 Comparison of decision diagrams of two algorithms |
DPC算法在选取聚类中心时,需要人为参与决策,通过决策图来选取
$ {\gamma }_{i}=\frac{{\rho }_{i}}{{\rho }_{\mathrm{m}\mathrm{a}\mathrm{x}}}\cdot \frac{{\delta }_{i}}{{\delta }_{\mathrm{m}\mathrm{a}\mathrm{x}}} $ | (8) |
为消除
$ {s}_{j}^{\left(1\right)}=\sum\limits _{v=1}^{j}{\lambda }^{j-v}\cdot {s}_{v}^{\left(0\right)}, \lambda \in \left(\mathrm{0, 1}\right), j=\mathrm{1, 2}, \cdots , n $ | (9) |
观察式(9)可知,由于
对于
$ {s}_{j}^{\left(1\right)}=\sum\limits _{\nu =1}^{j}{\lambda }^{\nu -1}\cdot {s}_{\nu }^{\left(0\right)}, \lambda \in (0, \mathrm{ }1)\mathrm{ }, j=\mathrm{1, 2}, \cdots , n $ | (10) |
利用式(10)对
$ \left\{\begin{array}{l}{\gamma }_{1}^{\left(t\right)}={\gamma }_{1}\\ {\gamma }_{2}^{\left(t\right)}={\lambda }^{1}{\gamma }_{2}+{\gamma }_{1}\\ {\gamma }_{3}^{\left(t\right)}={\lambda }^{2}{\gamma }_{3}+{\lambda }^{1}{\gamma }_{2}+{\gamma }_{1}\\ ⋮\\ {\gamma }_{n}^{\left(t\right)}={\lambda }^{n-1}{\gamma }_{n}+{\lambda }^{n-2}{\gamma }_{n-1}+\cdots +{\lambda }^{1}{\gamma }_{2}+{\gamma }_{1}\end{array}\right. $ | (11) |
由于
$ \mu =\frac{1}{n}\sum\limits_{i=1}^{n}{\gamma }_{i}^{\left(t\right)} $ | (12) |
在选取聚类中心时,只需在
![]() |
Download:
|
图 4 Aggregation数据集的 |
综上,聚类中心选取策略步骤为:
1)根据式(8)和式(11)得到累加序列
2)将前
改进DPC算法描述如算法1所示:首先,计算样本点间的距离矩阵;然后,根据式(3)、式(7)分别计算相对距离与局部密度,在求得每个点的距离与密度后,根据式(11)、式(12)自动选择聚类中心;最后,按照DPC的分配策略对剩余点进行分配聚类。
算法1 DPC-WSNN算法
输入 数据集
输出 聚类结果
1.计算样本点的距离矩阵
2.根据式(7)计算各点的局部密度
3.根据式(3)计算各点的相对距离
4.利用式(8)计算
5.根据式(11)对
6.对剩余点按照DPC算法的分配准则进行聚类分配,绘制聚类结果图
7.完成聚类
2.4 算法复杂度分析对于含有
为了评估本文所提算法的有效性,采用如表 1、表 2所示的8个合成数据集和8个UCI数据集对其进行验证。
![]() |
下载CSV 表 1 合成数据集 Table 1 Synthetic datasets |
![]() |
下载CSV 表 2 UCI数据集 Table 2 UCI datasets |
在实验中,本文将DPC-WSNN算法的聚类结果与FKNN-DPC、DPC、DBSCAN、AP、K-Means的聚类结果进行比较,评价指标选取FM指数(FMI)[19]、调整兰德指数(Adjusted Rand Index,ARI)[20]和调整互信息(Adjusted Mutual Information,AMI)[21]。各指标具体如下:
1)FMI指标。FMI是成对精度与召回率的几何均值,定义如下:
$ {F}_{\mathrm{F}\mathrm{M}\mathrm{I}}=\sqrt{\frac{a}{a+b}\cdot \frac{a}{a+c}} $ | (13) |
其中:
2)ARI指标。兰德指数(RI)的定义式为:
$ {R}_{\mathrm{R}\mathrm{I}}=\frac{a+b}{{C}_{2}^{{n}_{\mathrm{s}\mathrm{a}\mathrm{m}\mathrm{p}\mathrm{l}\mathrm{e}\mathrm{s}}}} $ | (14) |
其中:
$ {A}_{\mathrm{A}\mathrm{R}\mathrm{I}}=\frac{{R}_{\mathrm{R}\mathrm{I}}-E\left({R}_{\mathrm{R}\mathrm{I}}\right)}{\mathrm{m}\mathrm{a}\mathrm{x}\left({R}_{\mathrm{R}\mathrm{I}}\right)-E\left({R}_{\mathrm{R}\mathrm{I}}\right)} $ | (15) |
其中:
3)AMI指标。与ARI相似,AMI也是一种常见的聚类评价指标,其定义式为:
$ {A}_{\mathrm{A}\mathrm{M}\mathrm{I}}=\frac{{M}_{\mathrm{M}\mathrm{I}}-E\left({M}_{\mathrm{M}\mathrm{I}}\right)}{\mathrm{m}\mathrm{a}\mathrm{x}\left(H\left(A\right), H\left(B\right)\right)-E\left({M}_{\mathrm{M}\mathrm{I}}\right)} $ | (16) |
其中:
为了更好地测试算法的聚类效果,对各对比算法进行参数调优。DPC-WSNN算法和FKNN-DPC算法需要设定样本近邻数
选取8种合成数据集和8种UCI数据集,对本文所提算法进行测试和评价,并将其实验结果与FKNN-DPC、DPC、DBSCAN、AP、K-Means进行对比,各算法的3种评价指标值如表 3~表 6所示,其中,加粗值表示最好的聚类结果。从表 3、表 4可以看出,本文所提DPC-WSNN算法相比其他对比算法具有更好的聚类表现,尤其对于Jain数据集,本文算法的聚类准确率较对比算法具有大幅提升。从表 5、表 6可以看出:对于维度高且样本点密度变化大的数据集,DPC、DBSCAN、AP、K-Means的聚类效果都不理想,无法得到较高的聚类指标值;FKNN-DPC算法在Wine数据集上达到最优,而在其他数据集上的聚类效果略差于DPC-WSNN算法,由于DPC-WSNN算法在DPC的基础上引入SNN来对密度公式进行改进,充分考虑了数据分布稀疏的情况,进而可以得到更准确的密度。DPC-WSNN在UCI数据集上的聚类指标值整体更高,在所有对比算法中,其聚类表现最优,在其他数据集上也能达到较好的聚类效果。相比DPC算法和其他几种对比算法,DPC-WSNN算法在处理大部分问题上均能达到较好的效果。
![]() |
下载CSV 表 3 6种算法在前4个合成数据集上的聚类结果比较 Table 3 Comparison of clustering results of six algorithms on first four synthetic datasets |
![]() |
下载CSV 表 4 6种算法在后4个合成数据集上的聚类结果比较 Table 4 Comparison of clustering results of six algorithms on last four synthetic datasets |
![]() |
下载CSV 表 5 6种算法在前4个UCI数据集上的聚类结果比较 Table 5 Comparison of clustering results of six algorithms on first four UCI datasets |
![]() |
下载CSV 表 6 6种算法在后4个UCI数据集上的聚类结果比较 Table 6 Comparison of clustering results of six algorithms on last four UCI datasets |
图 5~图 7分别为DPC-WSNN、FKNN-DPC、DPC、DBSCAN、AP、K-Means这6种对比算法在Jain数据集、Flame数据集、Pathbased数据集上的聚类效果(彩色效果见《计算机工程》官网HTML版),图中不同颜色的点被分配到不同的类簇中,其中,蓝色星形代表聚类中心点,叉形代表噪声点。
![]() |
Download:
|
图 5 6种算法在Jain数据集上的聚类效果 Fig. 5 Clustering effects of six algorithms on Jain dataset |
![]() |
Download:
|
图 6 6种算法在Flame数据集上的聚类效果 Fig. 6 Clustering effect of six algorithms on Flame dataset |
![]() |
Download:
|
图 7 6种算法在Pathbased数据集上的聚类效果 Fig. 7 Clustering effects of six algorithms on Pathbased dataset |
从图 5可以看出:本文DPC-WSNN算法不仅可以找到正确的聚类中心,而且聚类结果也完全正确;DPC-KNN算法、DPC算法、AP算法、K-Means算法都将本该属于下半部分的类簇错误地分配到了上半部分,从而出现了错误的聚类结果;DBSCAN算法下半部分类簇的聚类结果正确,但上半部分左端几个数据点被错误分配。
从图 6可以看出:DPC-WSNN算法、DPC-KNN算法、DPC算法、DBSCAN算法均得到了正确的类簇数目,其中,DBSCAN算法将左上角的2个点识别为噪声点,导致聚类准确率有所降低,AP算法错误地识别类簇数目,导致将聚类结果分为了3类,而K-Means算法将本该属于红色类簇的点错误地分配给了蓝色类簇。
从图 7可以看出:本文DPC-WSNN算法聚类准确度较高;AP算法不能准确识别出类簇中心,导致聚类结果出现明显偏差;DPC-KNN算法、DPC算法和K-Means算法虽能正确识别类簇中心,但将半环部分的类簇点进行了错误分配;在DBSCAN算法中,虽然2个类簇被正确分配,但半环部分被识别为噪声点,导致聚类准确率大幅降低。
3.5 参数敏感性分析DPC-WSNN算法在运行过程中,需要人为设置参数
![]() |
Download:
|
图 8 K值对DPC-WSNN算法聚类效果的影响 Fig. 8 Influence of K values on clustering effect of DPC-WSNN algorithm |
本文对DPC算法进行改进,提出一种基于加权共享近邻与累加序列的密度峰值算法DPC-WSNN。该算法考虑各数据点的邻域分布情况,利用加权共享近邻重新定义局部密度的度量方式,同时使用
[1] |
CHEN M S, HAN J, YU P S. Data mining: an overview from a database perspective[J]. IEEE Transactions on Knowledge & Data Engineering, 2002, 8(6): 866-883. |
[2] |
JAIN A K, MURTY M N, FLYNN P J. Data clustering: a review[J]. ACM Computing Surveys, 1999, 31(3): 264-323. DOI:10.1145/331499.331504 |
[3] |
ESTER M. A density-based algorithm for discovering clusters in large spatial databases with noise[EB/OL]. [2020-12-05]. https://www.cs.upc.edu/~bejar/URL/material_art/DM%20clustring%20DBSCAN%20kdd-96.pdf.
|
[4] |
RODRIGUEZ A, LAIO A. Clustering by fast search and find of density peaks[J]. Science, 2014, 344(6191): 1492-1496. DOI:10.1126/science.1242072 |
[5] |
吴辰文, 魏立鑫, 刘晓光. 一种改进节点凝聚度的密度峰值聚类算法[J]. 小型微型计算机系统, 2020, 41(7): 1427-1432. WU C W, WEI L X, LIU X G. Density peak clustering algorithm for improved node aggregation[J]. Journal of Chinese Computer Systems, 2020, 41(7): 1427-1432. (in Chinese) |
[6] |
ZENG X, CHEN A, ZHOU M. Color perception algorithm of medical images using density peak based hierarchical clustering[J]. Biomedical Signal Processing and Control, 2019, 48: 69-79. DOI:10.1016/j.bspc.2018.09.013 |
[7] |
WANG B, ZOU Y, ZHANG J, et al. Multidocument summarization via LDA and density peaks based sentence level clustering[C]//Proceedings of International Symposium on Intelligence Computation and Applications. Berlin, Germany: Springer, 2017: 12-23.
|
[8] |
DU M, DING S, JIA H. Study on density peaks clustering based on K-nearest neighbors and principal component analysis[J]. Knowledge-Based Systems, 2016, 99: 135-145. DOI:10.1016/j.knosys.2016.02.001 |
[9] |
PARMAR M, WANG D, ZHANG X, et al. REDPC: a residual error based density peak clustering algorithm[J]. Neurocomputing, 2019, 348(5): 82-96. |
[10] |
LIU R, WANG H, YU X. Shared-nearest-neighbor-based clustering by fast search and find of density peaks[J]. Information Sciences, 2018, 450: 200-226. DOI:10.1016/j.ins.2018.03.031 |
[11] |
XIE J, GAO H, XIE W, et al. Robust clustering by detecting density peaks and assigning points based on fuzzy weighted K-nearest neighbors[J]. Information Sciences: An International Journal, 2016, 354(C): 19-40. |
[12] |
CHENG D, ZHU Q, HUANG J, et al. Natural neighbor-based clustering algorithm with density peeks[C]//Proceedings of International Joint Conference on Neural Networks. Washington D.C., USA: IEEE Press, 2016: 125-163.
|
[13] |
HOU J, ZHANG A, QI N. Density peak clustering based on relative density relationship[J]. Pattern Recognition, 2020, 108(8): 107554. |
[14] |
FLORES K G, GARZA S E. Density peaks clustering with gap-based automatic center detection[J]. Knowledge-Based Systems, 2020, 206: 106350. DOI:10.1016/j.knosys.2020.106350 |
[15] |
ZHOU L, PEI C. Delta-density based clustering with a divide-and-conquer strategy[M]. [S. l. ]: Elsevier Science Inc., 2016.
|
[16] |
QIAO D, LIANG Y, JIAO L. Boundary detection based density peaks clustering[J]. IEEE Access, 2019, 7: 152755-152765. DOI:10.1109/ACCESS.2019.2947640 |
[17] |
XU X, DING S, WANG L, et al. A robust density peaks clustering algorithm with density sensitive similarity[J]. Knowledge-Based Systems, 2020, 200: 106028. DOI:10.1016/j.knosys.2020.106028 |
[18] |
周伟杰, 张宏如, 党耀国, 等. 新息优先累加灰色离散模型的构建及应用[J]. 中国管理科学, 2017, 25(8): 140-148. ZHOU W J, ZHANG H R, DANG Y G, et al. New information priority accumulated grey discrete model and its application[J]. Chinese Journal of Management, 2017, 25(8): 140-148. (in Chinese) |
[19] |
TAN P N, STEINBACH M, KUMAR V. 数据挖掘导论[M]. 范明, 范宏建, 译. 北京: 人民邮电出版社, 2006. TAN P N, STEINBACH M, KUMAR V. Introduction to data mining[M]. FAN M, FAN H J, Translation. Beijing: Posts and Telecom Press, 2006. (in Chinese) |
[20] |
朱明. 数据挖掘导论[M]. 合肥: 中国科学技术大学出版社, 2012. ZHU M. Introduction to data mining[M]. Hefei: University of Science and Technology of China Press, 2012. (in Chinese) |
[21] |
杨燕, 靳蕃, MOHAMED K. 聚类有效性评价综述[J]. 计算机应用研究, 2008, 25(6): 1630-1632, 1638. YANG Y, JIN F, MOHAMED K. Survey of clustering validity evaluation[J]. Application Research of Computers, 2008, 25(6): 1630-1632, 1638. (in Chinese) |