陳 磊,吳潤秀,李沛武,趙 嘉
南昌工程學院 信息工程學院,南昌 330099
聚類分析是數據挖掘的重要技術。它根據數據點間的相似性將數據集劃分成類簇,使得屬于同一類簇的樣本具有較高相似性,不同類簇間的樣本存在顯著差異。聚類可以揭示數據中隱藏的模式和規律,是認識和了解世界的重要方式,被廣泛應用于計算機科學、信息安全、圖像處理等研究領域。
由于聚類算法的廣泛應用,學者們對聚類算法進行了深入研究并提出了眾多的聚類算法。依據對樣本的不同處理方式,可分為基于劃分的聚類算法、基于層次的聚類算法、基于密度的聚類算法以及基于網格的聚類算法等。最著名的基于劃分的聚類算法是-means 算法,該算法實現簡單,在凸形結構數據集上具有良好的聚類效果,但-means 算法的聚類結果嚴重依賴于初始類簇中心的選擇,需要指定類簇個數,對噪聲點和離群點敏感。BIRCH(balanced iterative reducing and clustering using hierarchies)是一種基于層次的聚類算法,它能夠快速對數據集進行聚類,但是該算法的聚類結果與樣本的輸入順序有關,屬于同一類簇的兩樣本可能會因為輸入順序相差較遠而被分配到不同類簇。DBSCAN(densitybased algorithm for discovering clusters in large spatial databases with noise)是一種典型的基于密度的聚類算法,它可以對任意形狀數據進行聚類,不需要預先指定類簇個數,但受核心對象鄰域包含的最少樣本數和鄰域半徑參數設置的影響較大且高維數據的聚類效果差。STING(statistical information grid)是一種基于網格的聚類算法,它將樣本所在空間按照不同的維度劃分成有限個網格單元,所有的處理都以網格單元為對象,這種方法將數據集的聚類操作轉變為對數據空間中塊的處理,提高了算法效率,但該算法需設置合理的網格粒度,不同的網格粒度大小對聚類精度和聚類效率有重要影響。
2014 年Rodriguez 和Laio在上提出了 一種新的快速搜索和尋找密度峰值的聚類算法,簡稱密度峰值聚類(density peaks clustering,DPC)算法。該算法只有一個參數,能快速發現任意形狀數據的密度峰值。DPC 算法基于兩點假設:(1)類簇中心的局部密度很大,并且被密度均不超過它的鄰居包圍;(2)各類簇中心之間的距離相對較遠。
DPC 算法雖然能快速發現任意形狀數據的密度峰值(類簇中心),但存在如下缺陷:(1)DPC 有兩種局部密度定義方式,沒有統一的密度度量準則,兩種定義方式的聚類結果差異較大,且人為主觀選取的截斷距離值對聚類結果影響大;(2)DPC 的分配策略是將非密度峰值分配給距其最近且密度比它大的樣本所在類簇,該樣本分配方法很容易產生分配連帶錯誤,即一旦某一個樣本分配錯誤,會導致后續一連串的樣本分配錯誤,造成不理想的聚類效果。
由于DPC 算法存在上述缺陷,近年來學者們對其進行了改進。針對局部密度定義存在的問題,紀霞等人提出了一種相對鄰域與剪枝策略優化的密度峰值聚類算法(relative neighborhood and pruning strategy optimized density peaks clustering algorithm,RP-DPC)。該算法首先利用相對距離將樣本映射到相對鄰域中,再從相對鄰域來計算各樣本的局部密度,從而縮小各樣本距離計算及密度統計的范圍。薛小娜等人提出了結合K 近鄰的改進密度峰值聚類算法(improved density peaks clustering algorithm combining K-nearest neighbors,IDPCA)。IDPCA 算法通過引入相似系數來調節各樣本對當前樣本的密度貢獻權重,并使用帶有相似系數的高斯核函數來定義局部密度。在類簇間樣本數不均勻的情況下,該局部密度定義能準確找到密度峰值。Du 等人提出了基于K 近鄰和主成分分析的密度峰值聚類算法(density peaks clustering based on K-nearest neighbors and principal component analysis,DPC-KNN-PCA)。DPC-KNN-PCA 算法采用樣本的K 近鄰信息重新定義了樣本的局部密度。這種局部密度定義方式將密度計算范圍從整個數據集縮減為樣本的個近鄰,得到的樣本密度僅與其個近鄰有關,能更加體現樣本的局部信息,一定程度上提升了算法對密度不均勻數據的聚類性能。
針對分配策略設計存在的不足,Xie 等人提出了一種基于模糊加權K 近鄰分配點的密度峰值聚類算法(robust clustering by detecting density peaks and assigning points based on fuzzy weighted K-nearest neighbors,FKNN-DPC)。該算法將樣本分為核心樣本和離群樣本,先從密度峰值開始對每個樣本的K近鄰進行廣度優先搜索來分配核心樣本,再使用加權K 近鄰技術對第一次未分配樣本和離群樣本進行分配。這種分配策略能夠有效緩解DPC 算法一步分配導致的分配錯誤傳遞問題。賈露等人提出了一種物理學優化的密度峰值聚類算法(optimized density peak clustering algorithm in physics,W-DPC)。該算法根據第一宇宙速度建立了兩步分配策略對樣本進行分配,即必然從屬于點的分配和可能從屬于點的分配,使得樣本的分配更加精確。
針對DPC 算法的局部密度定義和分配策略設計的不足,本文提出了一種加權K 近鄰和多簇合并的密度峰值聚類(weighted K-nearest neighbors and multicluster merge density peaks clustering,WKMM-DPC)算法。WKMM-DPC 算法在計算樣本的局部密度時采用加權K 近鄰思想,引入樣本的權重系數,重新定義并計算樣本的局部密度,使樣本局部密度更加依賴于K 近鄰內樣本的位置,統一了樣本局部密度定義的度量準則;采用一種新的類簇間相似性的度量準則,并據此度量準則,對潛在類簇進行合并,直到潛在類簇個數等于實際類簇個數為止。
DPC 算法定義了兩個重要的概念:一個是樣本的局部密度ρ,另一個是樣本與具有更高局部密度樣本的最小距離δ。
對于給定數據集X=[,,…,x],其中x=[x,x,…,x],為樣本個數,為樣本維數。樣本x的局部密度表示為ρ,其計算公式如式(1)所示:

其中,d為樣本x與x之間的距離,為截斷距離。當d-<0 時,(d-)=1;否則,(d-)=0。
對于小規模數據集,DPC 采用高斯核函數定義樣本的局部密度,其計算公式如式(2)所示:

相對距離δ指樣本與密度比它高且距離它最近樣本的距離。 δ計算公式如式(3)所示:

對于密度最大的樣本,δ定義為:

密度峰值通常是局部密度較高且相對距離較大的樣本。DPC 算法選擇決策值γ較大的樣本作為密度峰值,γ的計算公式如下:

找到密度峰值后,DPC 將剩余樣本分配給密度比它高且距它最近的樣本所在類簇。
實驗證明,DPC 算法在多數情況下都有不錯的聚類性能,但仍然存在以下缺陷:
(1)DPC 算法的樣本局部密度定義的度量準則不統一且兩者的聚類結果存在較大差異。DPC 算法有兩種局部密度定義方式:截斷核和高斯核。采用截斷核計算大規模數據集時,聚類效果更好,小規模數據集,采用高斯核的效果更佳。然而,沒有客觀的度量標準來衡量數據集是大規模還是小規模,并且選擇不同的密度度量準則會對聚類結果造成較大影響。如圖1 所示,取相同值時,分別使用高斯核和截斷核對flame 數據集進行聚類的結果可以看出,對于同一數據集,聚類效果依據局部密度定義方式選擇的不同而存在較大差異。

圖1 DPC 算法對flame數據集的聚類結果(dc=2)Fig.1 Clustering result of DPC for flame dataset (dc=2)
(2)DPC 算法的分配策略易產生分配連帶錯誤。DPC 的分配策略將非密度峰值分配給距其最近且密度比它大的樣本所在類簇,該樣本分配策略會形成類似“多米諾骨牌效應”,即一旦某一個樣本分配錯誤,會導致后續一連串的樣本分配錯誤。
如圖2 所示,樣本是數據集S={208,209,…,227}的局部密度極大值點。該樣本到其他類簇的密度較大值點(圖2 中的樣本)的距離小于它到真實類簇的密度較大值點(圖2 中的樣本)的距離,因此,樣本被分配到與樣本相同的類簇,致使樣本被錯誤分配。樣本分配錯誤,會導致數據集合S中的樣本均被錯誤分配。這種分配錯誤不僅與DPC算法的分配策略缺陷有關,也和其局部密度定義方式有關。

圖2 DPC 算法對Spiral數據集的聚類結果(dc=2)Fig.2 Clustering result of DPC for Spiral dataset (dc=2)
通過前文的分析可知,DPC 算法在局部密度定義和分配策略設計方面存在缺陷。針對上述缺陷,本文提出了WKMM-DPC 算法,從局部密度定義和分配策略設計兩方面對DPC 算法進行改進。
K 近鄰(K-nearest neighbours,KNN)是一個理論上比較成熟的機器學習算法,最早由Cover 和Hart 在1968 年提出,已被廣泛用于分類、回歸、密度估計及模式識別等領域。KNN 的目的就是在所有樣本中找到距離目標樣本最近的個近鄰,通常用歐氏距離表示樣本之間的距離。

本文基于加權K 近鄰思想,引入樣本的權重系數,重新定義樣本的局部密度。采用K 近鄰思想后,WKMM-DPC 算法只需要確定一個參數,且是一個整數,而DPC 算法需要人為主觀選擇局部密度定義的度量準則和截斷距離,且截斷距離的取值無法枚舉,因此本文算法的魯棒性強于DPC算法的魯棒性。
(樣本的權重系數)樣本的局部密度定義應盡可能準確反映樣本的局部分布。樣本的權重系數定義如下:

式中,d表示樣本x和樣本x之間的歐氏距離,加權的目標是增加樣本局部信息的差異化,更加準確地反映樣本的相對位置。
(樣本的局部密度)基于加權K 近鄰思想,新的樣本局部密度定義為:


圖3 為Aggregation 數據集的真實分布圖,Aggregation 數據集由7 個堆狀類簇組成,類簇間存在交叉纏繞。圖4為DPC和WKMM-DPC算法對Aggregation數據集聚類時的決策圖,圖中被圈出的點為密度峰值。從圖4(a)可以看出,DPC 算法決策圖里的密度峰值分布散亂,作為密度峰值的特征不明顯,且難以發現第7 個密度峰值。從圖4(b)可以看出,WKMMDPC 算法決策圖的密度峰值分布緊湊,且易發現所有7 個密度峰值,其中密度峰值的局部密度均接近所有樣本局部密度的最大值,由此說明本文算法新定義的局部密度能夠更加準確地表征密度峰值的特性。

圖3 Aggregation 數據集的真實分布圖Fig.3 True distribution of Aggregation dataset

圖4 Aggregation 數據集的聚類決策圖Fig.4 Decision gragh of Aggregation dataset
本節針對DPC 分配策略存在的分配連帶錯誤,提出一種新的類簇間相似性的度量準則,并據此度量準則,設計了一種多簇合并策略。
由式(6)和式(7)計算樣本的局部密度ρ,由式(3)和式(4)計算樣本的距離δ,通過式(5)計算決策值γ,對進行排序,選擇前個樣本作為最終生成類簇的密度峰值,選擇前(≤)個樣本作為潛在的密度峰值。通過DPC 的分配策略,將非密度峰值分配給密度比它高的最近的樣本,生成個類簇,最后通過多簇合并策略完成聚類。
(樣本間的相似度)用樣本間的距離度量定義它們的相似度,新的樣本間的相似度如式(8)所示:

其中,ω為樣本和樣本∈()的相似度,兩樣本距離越近,相似程度就越高,相似度也就越大,并且樣本與其個近鄰點以外的樣本的相似度為0,這使得樣本間的相似度僅與其個近鄰樣本有關,減小了無關數據的干擾。
(樣本到類簇的鄰近度)利用樣本間的相似度,定義樣本到類簇的鄰近度,如式(9)所示:


(類簇間的相似度)類簇與類簇間的相似度如式(10)所示:

其中,(C,C)為兩類簇之間的相似度,樣本∈C到C鄰近度的和越大,C和C之間的相似度越大。
針對DPC 算法分配策略存在的連帶錯誤,通過類簇間的相似度進行潛在類簇合并。首先,計算類簇間的相似度,建立類簇相似度矩陣;其次,找到相似度最高的兩類簇,將上述兩類簇合并,直到潛在類簇個數等于真實的類簇個數為止。
輸入:數據集data,樣本最近鄰個數。
輸出:聚類結果。
對數據進行歸一化;
計算數據集樣本間的歐氏距離,并按距離值升序排列;
根據式(7)計算樣本的ρ值;
根據式(3)、式(4)計算樣本的δ值;
根據式(5)計算樣本的決策值,選出潛在類簇的密度峰值集合,將剩余樣本分配給密度比它高且距離它最近的樣本所在類簇;

根據式(10)計算類簇間的相似度(C,C),建立相似度矩陣,潛在類簇依次進行合并,直到潛在類簇個數等于真實類簇個數為止。
DPC 算法的時間復雜度主要由計算樣本間的距離矩陣的復雜度,計算每個樣本的局部密度的復雜度和計算每個樣本的相對距離的復雜度組成。每個部分的時間復雜度均為(),因此總的時間復雜度為()。
本文WKMM-DPC 算法的時間復雜度主要由四部分組成:(1)計算樣本間的距離矩陣的復雜度();(2)計算每個樣本的局部密度的復雜度();(3)計算每個樣本的相對距離的復雜度();(4)合并潛在類簇,其中,合并潛在類簇的過程中需要計算樣本間的相似度、樣本到類簇的鄰近度和類簇間相似度,各部分的時間復雜度都為(),因此合并潛在類簇總時間復雜度為()。因此,本文WKMM-DPC 算法的時間復雜度為(),與DPC 算法的時間復雜度相同。
對于樣本規模為的數據集,DPC 算法的空間復雜度為()。WKMM-DPC 算法比DPC 算法增加了存儲各樣本到其個近鄰的距離和分配策略中的識別矩陣,但增加的空間復雜度不高于(||),且表示類簇數的||通常較小,因此,本文WKMM-DPC 算法的空間復雜度與DPC 算法的空間復雜度相同。
為驗證WKMM-DPC 算法的有效性,本文使用人工數據集和UCI 數據集對其進行測試和評價。表1和表2 詳細描述了本文實驗所用的數據集。將WKMM-DPC 算法與FKNN-DPC、DPCSA(density peaks clustering based on weighted local density sequenceand nearest neighbor assignment)、FNDPC(robust density peaks clustering algorithm using fuzzy neighborhood)、DPC和DBSCAN算法進行比較。其中DBSCAN和FNDPC算法參照原文獻使用Matlab2019a編程實現。DPCSA 算法基于作者提供的源代碼在Matlab2019a中實現。DPC 算法基于作者提供的源代碼,但由于本文的數據集不包含噪聲,刪除“Halo”部分。FKNN-DPC算法無法從論文作者處獲得源代碼,因此參照原文獻實現了該算法。

表1 人工數據集Table 1 Synthetic datasets

表2 UCI數據集Table 2 UCI datasets
本文將聚類性能評價常用的調整互信息(adjusted mutual information,AMI)、Fowlkes-Mallows 指 數(Fowlkes-Mallows index,FMI)、調整蘭德系數(adjusted Rand index,ARI)作為聚類性能度量標準。其中,FMI和AMI的取值范圍為[0,1],ARI取值范圍為[-1,1],各指標值越接近1,表明算法的聚類性能越優。實驗環境:硬件平臺為IntelCore?i5-7300 CPU@2.50 GHz 2.50 GHz 處理器,8.0 GB 內存,Win10 64 bit 操作系統,Matlab2019a軟件。
為客觀評價算法的聚類性能,本文對各算法進行參數調優,從而保證各算法的最佳聚類效果。WKMMDPC 及FKNN-DPC 算法的值選擇為1~100 間的最優值。DPC 算法依據經驗法則,將樣本間的距離降序排列,取前1%至2%的距離作為截斷距離的值。通過實驗發現,并不是所有數據都能在這個范圍內取得最好的結果,修改這個百分比以獲得最好的聚類效果。DPCSA 算法設置了一個固定參數,它的取值為5。FNDPC 算法的參數在0.01~1.00 之間選取。DBSCAN 算法有和兩個參數:從0.01 到1.00 之間選取,步長為0.01;從1 到100 之間選取,步長為1。
表3 給出了6 種聚類算法對表1 所示8 個人工數據集聚類結果的三種評價指標AMI、ARI、FMI 的值。表3 中的“—”表示沒有對應值,Arg-為各算法的最優參數,加粗的值表示較好的實驗結果。

表3 6 種聚類算法在8 個人工數據集上的聚類性能Table 3 Performance of 6 clustering algorithms on 8 synthetic datasets
從表3 可以看出,處理Pathbased 數據集時,WKMM-DPC 算法聚類效果低于DBSCAN 和FKNNDPC 算法聚類效果,但要好于其余算法。處理D31數據集時,WKMM-DPC 算法的聚類效果優于DBSCAN算法,略低于其余聚類算法。剩余的Spiral、Jain、Flame、Aggregation、S2 和R15 數據集上,WKMMDPC算法的聚類效果優于或持平與之比較的算法。
圖5~圖12 展示了人工數據集的聚類結果,相同顏色的點屬于同一聚類。除DBSCAN 外,其他方法的聚類中心用“六角星”表示,DBSCAN 算法中的“叉”代表該算法的噪聲點。

圖5 6 種算法對Aggregation 數據集的聚類結果Fig.5 Clustering results of 6 algorithms on Aggregation dataset

圖6 6 種算法對Flame數據集的聚類結果Fig.6 Clustering results of 6 algorithms on Flame dataset

圖7 6 種算法對Jain 數據集的聚類結果Fig.7 Clustering results of 6 algorithms on Jain dataset

圖8 6 種算法對Pathbased 數據集的聚類結果Fig.8 Clustering results of 6 algorithms on Pathbased dataset

圖9 6 種算法對Spiral數據集的聚類結果Fig.9 Clustering results of 6 algorithms on Spiral dataset

圖10 6 種算法對R15 數據集的聚類結果Fig.10 Clustering results of 6 algorithms on R15 dataset

圖11 6 種算法對D31 數據集的聚類結果Fig.11 Clustering results of 6 algorithms on D31 dataset

圖12 6 種算法對S2 數據集的聚類結果Fig.12 Clustering results of 6 algorithms on S2 dataset
圖5 顯示了6 種算法對Aggregation 數據集的聚類結果。Aggregation 數據集由7 個堆狀類簇組成,其特征較為明顯,但類簇間存在交叉纏繞。WKMMDPC 算法的聚類性能最好,它能夠完全正確地發現密度峰值并完成聚類。對于DBSCAN 算法,雖然可以比較準確地完成聚類,但存在一些噪聲點。DPCSA算法不能對Aggregation 數據集最右邊的兩類簇進行準確聚類,產生了較明顯的聚類錯誤。
圖6 顯示了6 種算法對Flame 數據集的聚類結果。DBSCAN 算法會將一些邊界點識別為噪聲點。FKNN-DPC 算法可以正確地找到密度峰值,但有兩個樣本被分配錯誤。WKMM-DPC、DPC、DPCSA 和FNDPC 算法均能準確找到密度峰值并正確分配剩余樣本。
圖7 顯示了6 種算法對Jain 數據集的聚類結果。Jain 數據集由兩個月牙形的類簇組成,且樣本密度分布不均勻。從圖7 可以看出,由于下面類簇樣本比較密集,DPC 和DPCSA 算法均在下面的類簇中找到兩個密度峰值,從而導致密集類簇中的部分樣本錯誤分配。DPSCAN、FKNN-DPC 和FNDPC 算法均不能對Jain 數據集進行準確聚類,WKMM-DPC 算法可以同時發現正確的密度峰值和完成聚類。
圖8 顯示了6 種算法對于Pathbased 數據集的聚類結果。Pathbased 數據集是一個復雜的流形數據集,由3 個類簇組成,其特別之處在于一個環型類簇包圍了其余兩個類簇,由于環型類簇之間聯系緊密,剩余的樣本分配很容易發生錯誤。DBSCAN 算法和FKNN-DPC 算法對Pathbased 數據集的聚類效果較好,剩余聚類算法對Pathbased 數據集的聚類效果均不太理想。
圖9 顯示了6 種算法對Spiral 數據集的聚類結果。Spiral 數據集是由3 個螺旋類簇組成的流形數據集。除了密度峰值的選取不同,所有的聚類算法都能正確地分配剩余的樣本。
6 種算法得到的R15 數據集的聚類結果如圖10所示。R15 數據集包含15 個類簇。最外層的7 個類簇距離較遠,所有的聚類算法都能正確聚類這7 個類簇,最里面的8 個類簇彼此相鄰且交叉纏繞,因此這8個類簇的樣本容易被錯誤分配。從圖10 可以看出,所有聚類算法都能較好地對R15 數據集進行聚類,只是最里面8 個類簇的個別樣本會產生分配錯誤。
圖11 顯示了6 種算法對D31 數據集的聚類結果。各算法對該數據集均能獲得較好的聚類效果,FKNN-DPC 算法的聚類效果最好,但是DBSCAN 算法卻將一些點標記為噪聲點,使得最終的聚類結果有所偏差。
圖12 顯示了6 種算法對S2 數據集的聚類結果。S2 數據集包含15 個類簇。其中,WKMM-DPC 算法的聚類效果最好,而DBSCAN 算法卻將右下角的三個簇合并成了一個簇,并且將許多的邊界點標記為噪聲點,其余的聚類算法均能達到較好的聚類效果。
Friedman 檢驗是一種顯著性差異檢驗方法,其秩均值體現了算法的綜合表現。為展現算法的綜合性能,采用Friedman 檢驗分別對AMI、ARI、FMI 評價指標進行了秩均值檢驗。實驗中,秩均值越大,對應算法綜合的性能越好。人工數據集中的三種聚類評價指標的Friedman 檢驗值如表4 所示。
由表4 可知,在3 種聚類評價指標上,WKMMDPC 算法的秩均值均排行第一,FKNN-DPC 排行第二。綜合分析可知,6 種比較的聚類算法中,WKMMDPC 算法的綜合性能最優。

表4 3 種評價指標在人工數據集上的Friedman 檢驗值Table 4 Friedman test value of 3 evaluation indices on synthetic datasets
為進一步驗證WKMM-DPC 算法的聚類性能。在8 個UCI數據集上將WKMM-DPC 算法與另外5 種聚類算法進行比較。6 種算法對UCI 數據集的聚類結果如表5 所示。實驗結果表明,處理Wine 數據集時,WKMM-DPC 算法的聚類效果低于FNDPC 和FKNN-DPC 算法。處理Seeds 數據集時,WKMMDPC 算法的聚類效果低于FKNN-DPC、FNDPC 和DPC 算法。處理Waveform 數據集時,WKMM-DPC算法的聚類效果略遜于FNDPC 算法,但好于其余算法。剩余的Ecoli、Libras、Dermatology 和Glass 數 據集,WKMM-DPC 算法的聚類效果都要優于與之比較的算法。

表5 6 種聚類算法在8 個UCI數據集上的聚類性能Table 5 Performance of 6 clustering algorithms on 8 UCI datasets
UCI 數據集上的三種聚類評價指標的Friedman檢驗值如表6 所示。由表6 可知,3 種聚類評價指標上,WKMM-DPC 算法的秩均值均排行第一,FKNNDPC 排行第二。綜合分析可知,在6 種比較的聚類算法中,WKMM-DPC 算法的綜合性能最優。

表6 3 種評價指標在UCI數據集上的Friedman 檢驗值Table 6 Friedman test value of 3 evaluation indices on UCI datasets
DPC 算法存在局部密度定義的度量準則不統一和分配策略易產生分配連帶錯誤的問題,針對這兩個問題,本文提出了一種加權K 近鄰和多簇合并的密度峰值聚類算法。WKMM-DPC 算法結合加權K近鄰的思想,重新定義了局部密度,增強了樣本與其個最近鄰樣本之間的聯系,解決了DPC 算法局部密度定義的度量準則不統一的問題。同時,WKMMDPC 算法采用了多簇合并策略,緩解了DPC 算法分配策略存在的分配連帶錯誤。在人工數據集及UCI數據集上的實驗結果表明,WKMM-DPC 算法能夠更加準確地找到數據集的密度峰值和處理各種形狀的數據集,且算法的聚類性能優異。隨著大數據時代的到來,數據正向海量數據、高維樣本方向發展,傳統基于樣本間的距離度量定義相似度的方式面臨算法時空復雜性高等弊端,因此,研究新的更高級度量樣本間相似性的方式將是今后的研究熱點和難點。