艾力米努爾·庫爾班,謝娟英,姚若俠
陜西師范大學 計算機科學學院,西安710119
聚類(cluster)是數據挖掘進行數據分析時常用的方法之一,與對已知樣本屬性的數據構造劃分的監督學習(supervised learning)不同的是,聚類分析屬于無監督學習(unsupervised learning),即在數據數量、數據屬性和數據類別個數等信息未知的情況下進行自主學習,最后構造劃分的過程[1]。傳統Kmeans 算法[2]適用范圍較廣,在處理大數據時具有較高的相對伸縮性,其典型的特點是,當數據樣本集接近正態分布,且不同聚類的界限劃分較為明顯時,傳統K-means 聚類效果能夠達到最優,因此被廣泛地應用于各個領域中[3-5]。但是使用傳統K-means 聚類算法也會受到一定的限制。由于傳統K-means 算法隨機選取初始聚類中心點,易收斂于局部最優解,在聚類過程中也容易受到離群孤立點的影響,同時傳統K-means 算法需要預先人工輸入聚類數目K值,導致聚類效果不穩定且算法自適應能力較弱。近年來,大量學者主要從以下三方面針對傳統K-means 聚類算法的缺陷和不足提出了一系列改進:
其一,針對離群孤立點在一定程度上使聚類結果出現偏差的問題,文獻[6-7]將基于距離的離群點檢測(local outlier factor,LOF)引入傳統K-means 聚類算法,根據LOF 算法中計算異常因子的方法計算數據對象的局部異常程度。在此基礎上,文獻[8]通過計算數據對象的K 近鄰,預先對數據集構建平分樹,然后通過剪枝檢測數據集中的全局離群點。這雖然在一定程度上提高了聚類結果的準確性和時效性,但在聚類過程中仍然需要人工輸入聚類數目K值,對數據集分布的研究不夠深入和透徹時,聚類效果依舊不穩定。
其二,針對傳統K-means 算法對初始聚類中心敏感的缺點,文獻[9]用余弦相似度替換文本聚類的距離度量標準,文獻[10]選取數據樣本集中方差最小且處于不同區域的數據對象作為初始聚類中心,文獻[11]采用Pearson 相關系數統計數據對象間的相關性。雖然這幾種方法都提出選取初始聚類中心的有效方案,但是在聚類過程中不僅需要人工預先指定聚類中心數目K值,還需進行大量計算,增加了算法的時間開銷。
其三,針對傳統K-means 算法需要人工輸入聚類數目K值的問題,文獻[12]首次將密度峰值原則應用到聚類算法中,提出快速搜索密度峰值聚類算法。該聚類算法以數據樣本集中的密度峰值點作為初始聚類中心,從而確定聚類數目K值。盡管如此,密度峰值聚類算法還是需要人為主觀選擇參數。文獻[13]通過構造樣本距離相對于樣本密度的決策圖,自適應確定聚類個數K值。文獻[14]預先對數據集用密度權重Canopy 算法進行聚類,目的在于為傳統Kmeans 算法提供初始聚類中心和最優聚類數目K值,但Canopy 算法初始閾值人為指定的問題仍然存在。文獻[15]定義了數據對象K 近鄰內的局部密度,提出了模糊加權的K 近鄰密度峰值聚類算法(fuzzy weighted K-nearest neighbors density peak clustering,FKNNDPC),該算法先后使用兩種分配策略對聚類中心點、非中心點和離群點構造劃分。這些算法在聚類過程中有效避免了傳統K-means 算法易陷入局部最優解的問題,倘若在聚類過程中沒有把握好閾值,則會直接造成獲得的初始聚類中心點與實際中心發生較大偏差,極大程度降低聚類精確度。
這些改進K-means 的聚類算法在提高了傳統Kmeans 算法聚類效果的同時也優化了聚類算法的性能,但依然存在對噪聲數據敏感、需要主觀確定一些參數和閾值的不足。針對以上現有問題,通過分析最鄰近吸收原則與密度峰值原則的優缺點,改進算法采用最近鄰矩陣與局部密度優化的雙重策略,不需要人為干預與任何參數的選擇,進而實現初始聚類中心及聚類數目的動態確定。在聚類過程中,不僅考慮到離群孤立點對聚類效果的影響,同時也增強了聚類效果的穩定性與客觀性。
最鄰近吸收原則(nearest-neighbor absorbed first principle)[16]:在多維空間中,任意一點與它最鄰近的樣本點屬于同一類簇的可能性較大。在聚類算法中的典型應用為K 鄰近吸收原則與ε鄰近吸收原則。其中,K 鄰近吸收原則的基本原理是目標對象吸收與其屬性最相似或者距離最鄰近的K個鄰居,ε鄰近吸收原則的基本原理是目標對象吸收以自身為中心,在ε為半徑的領域內所包含的數據對象。當數據樣本集呈正態分布時,利用最鄰近吸收原則構造數據劃分的結果最為理想。
若將K 鄰近吸收原則直接應用到聚類算法,參數K和ε值的大小直接影響聚類類簇的數目,且該原則只會考慮到樣本之間的相對位置,而無法考慮到樣本集整體的分布情況,會導致聚類算法不具有較高的魯棒性。
無論是K 鄰近吸收原則還是ε鄰近吸收原則都具有以下缺點:
(1)需要根據經驗預先確定K值或ε值,參數的取值直接影響聚類結果的好壞。
(2)不能有效測量數據對象之間的相關性或差異性,無法識別流形數據集。
密度峰值原則(density peak principle)[12]:在多維空間中,聚類中心點的局部密度大于在其余數據樣本點的局部密度,且在聚類算法中兩個聚類中心點的相互距離相對較遠。此時,聚類中心點在數據樣本集中具有較優的分布性。密度峰值原則利用截斷距離dc計算當前數據樣本集的局部密度與數據對象之間相對距離,當數據樣本集密度分布較為平均時,聚類的效果最為理想。
與最鄰近吸收原則相反,密度峰值原則考慮的是全局分布特點,而忽略了數據對象局部領域內的分布情況。該原則能夠識別各種形狀的數據樣本集,但是針對密度變化較大或類簇間差異較大的數據集,往往會降低容錯性。若將密度峰值原則直接應用到聚類算法中會導致算法具有較差的計算精度。同時,密度峰值原則具有以下缺點:
(1)在實際聚類應用中離群點會直接導致數據樣本集的平均密度變大,從而影響聚類效果。
(2)過度依賴參數截斷距離dc的設置,參數的取值直接影響聚類結果的好壞,如果缺乏經驗,也會降低聚類效率。
針對上述最鄰近吸收原則以及密度峰值原則存在的明顯缺點,改進算法融合距離矩陣與局部密度的思想,動態確定聚類中心點數目以及位置,完成剩余數據對象的初分配。為了方便后續算法的說明與描述,給出以下定義。
對于給定的含有n個樣本的數據集Dn={X1,X2,…,Xn},其中樣本數據集Dn含有p個屬性{A1,A2,…,Ap},即n為數據樣本集所含樣本總數,p為樣本數據集Dn的維度。
對于數據集Dn中的任意兩個樣本Xi={Xi1,Xi2,…,Xip}和Xj={Xj1,Xj2,…,Xjp}(1≤i≤n,1≤j≤n,i≠j),其中Xir和Xjr(1≤r≤n)分別對應樣本Di和樣本Dj的第r個屬性的具體數值。記K個聚類中心分別為C={C1,C2,…,Ck}。
定義1(歐氏距離[14])任意兩個數據對象Xi和Xj之間的歐氏距離:

定義2(平均距離[17])數據樣本集Dn的平均樣本距離:

定義3(距離差異)任意兩個數據對象Xi和Xj之間的距離差異值:

z(Xi,Xj)表示數據樣本集中第i個數據對象Xi與第j個數據對象Xj之間的距離差異值。z(Xi,Xj)的數值越小,則代表數據對象Xj成為初始聚類中心的可能性越大,該值的大小直接反映了第j個數據對象Xj是否適合作為第i個數據對象Xi的聚類中心。
定義4(近鄰矩陣)數據對象之間的兩兩距離差異值構成近鄰矩陣,它是如下形式的對稱矩陣:

輸入:目標數據集Dn。
輸出:二維數據集可視化動態聚類視圖。多維數據集K個聚類集以及相應的評價指標。
本章從數據預處理、局部密度峰點、數據對象分配策略以及聚類中心點的更新四方面對改進算法進行闡述。
3.1.1 數據歸一化處理
數據樣本集由多個維度或多個屬性構成,不同的屬性變量具有不同的表示單位和不同的密度分布,十分不利于數據解釋。數據歸一化不僅方便后續的數據處理,也能保證算法迭代時的收斂速度,在涉及到距離計算的聚類算法中有顯著效果。
改進算法采用Min-Max 標準化方法對多維數據進行歸一化處理,即將數據樣本集中屬性Ai的原始數值x通過Min-Max 標準化公式映射到區間[0,1]中的值x′,設minAi和maxAi分別為屬性Ai的最小值與最大值,則Min-Max 標準化公式為[17]:

3.1.2 離群孤立點檢測
對于離群孤立點的判定,改進算法考慮全局離群孤立點,是因為如果僅僅考慮基于密度的局部離群點檢測,時間復雜度高且不適用于大規模數據集和高位數據集。在樣本空間中,全局離群孤立點相比其他數據對象,具有不同的行為或不一致的特征,即它們是數據集中不與其他數據對象強相關的對象。離群點檢測在動態算法中的應用為:在數據歸一化之后,若數據對象鄰域內的局部密度值小于樣本數據集的平均密度值,則標識該數據樣本點為數據樣本集的離群孤立點。
在數據預處理中對離群孤立點進行篩選的必要性在于,避免離群孤立點對聚類中心點和聚類結果的負面影響,從而提高聚類算法效率。
文獻[18]定理1 已證實,基于密度峰值原則的聚類算法所得到的聚類中心,其局部密度往往大于其鄰居的局部密度。在排除離群孤立點之后,稀疏區域的低密度數據對象成為初始聚類中心的可能性較小。因此,聚類中心往往出現在密度較大的區域。
定義5(局部密度)數據對象Xj的局部密度:

其中,num是在考察目標點最近鄰的近鄰的過程中,滿足近鄰條件的樣本點數量,即目標點最近鄰的最近鄰也是目標點的近鄰,C(j)是對于目標點Xj滿足近鄰條件的集合。數據對象的局部密度不僅直接反映了目標點近鄰的數量,也反映了目標點近鄰的分布情況。
定義6(平均密度)數據樣本集Dn的整體密度均值:

分析式(7)可知,數據樣本集Dn的整體密度均值與數據的分布密不可分,體現了數據樣本集Dn在空間中的緊密程度。
從直觀上解釋,為了確保初始聚類中心具有良好的連通性,改進算法利用目標點的近鄰數目計算數據對象的局部密度,對數據對象采取距離差異值和局部密度相結合的方式選取初始聚類中心,根據式(6)標記局部密度峰點作為一個初始聚類中心,從而有效解決了密度峰值聚類算法在計算數據對象密度時,對截斷距離等參數敏感的問題。
3.3.1 左、右最近鄰
定義7(左、右最近鄰)對于任意一個數據對象Xj,在滿足與其距離小于平均樣本距離的限制條件下,數據對象表示與其最鄰近的右近鄰,數據對象表示與其最鄰近的左近鄰:

數據對象的最近鄰個數包含以下三種情況:
(1)若考察的數據對象既有左最近鄰,也有右最近鄰,則該數據對象最近鄰個數為2。
(2)若考察的數據對象只有左最近鄰或者只有右最近鄰,則該數據對象最近鄰個數為1。
(3)若考察的數據對象既沒有左最近鄰,也沒有右最近鄰,則該數據對象最近鄰個數為0。
數據對象與其最鄰近歸屬為同一類簇的可能性最大,在聚類過程中,若一個數據對象含有兩個最近鄰或只含有其中一個最近鄰,可以繼續考察其最近鄰的近鄰情況,直到數據對象無近鄰或數據對象的近鄰全部被標記。
3.3.2 最鄰近矩陣與局部密度結合的雙重策略
基于密度峰值原則的聚類算法在得到的聚類中心后,直接依據最短歐幾里德距離原則進行數據分配,而改進算法引入最鄰近矩陣與局部密度結合的雙重策略對剩余數據對象進行類簇分配,具體步驟如下。
步驟1根據式(1)~(3)和式(6),計算數據樣本集所有數據對象的局部密度,標記局部密度峰點作為第一個初始聚類中心。
步驟2根據式(3)和式(8),選擇與局部密度峰點距離小于平均樣本距離的數據對象,確定局部密度峰點左、右最近鄰。若局部密度峰點包含左、右最近鄰或者其一,轉步驟3。若局部密度峰點不含有左、右最近鄰,轉步驟5。
步驟3根據式(4),參考n個數據對象之間的最近鄰矩陣Z,分別掃描左、右最近鄰所在的行,再根據式(5),確定左、右最近鄰的近鄰。
步驟4考察左右最近鄰的近鄰與密度峰值的距離是否小于平均樣本距離,若滿足條件,將左右最近鄰的近鄰劃分到局部密度峰點的近鄰集合中,轉步驟3 繼續考察其最近鄰的近鄰情況,若不滿足轉下一步。
步驟5將該聚類中心與其近鄰從數據集中刪除,更新數據集。
步驟6檢查數據集是否為空,若數據集不為空,繼續標記局部密度峰點的數據對象將其作為下一個初始聚類中心,繼而轉步驟2 并重復上述過程;若數據集為空,代表經過步驟1 到步驟4 已經確定密度峰值點的所有近鄰,完成所有數據對象之間的歸屬關系劃分并確定K個聚類中心。
圖1(a)是關于原始數據的散點圖,圖1(b)是對含有19 個樣本的數據集基于雙重策略構造數據劃分后的表現。其中,數據樣本集中數據對象1 至數據對象9 所在的空間分布密度較大,數據對象10 至數據對象19 所在的空間分布密度較小,適合考驗基于不同種度量的聚類結果。
考慮圖1 數據對象9 和數據對象16 的位置,如果僅僅考慮全局分布特點,這兩個數據對象周圍的密度遠遠小于其余數據對象的密度,可能在劃分過程被單獨劃分為一類;如果僅僅考慮局部分布特點,數據對象16 與數據對象13 的距離較近,數據對象9 與數據對象8 的距離較近,在劃分過程中若誤將其歸為一類,會導致簇間差異性增大,聚類結果不理想。然而,在綜合考慮距離差異值和局部密度的情況下,數據對象16 會對局部密度峰點即數據對象10 影響較大,而數據對象9 對局部密度峰點即數據對象1 影響較小,如圖1(b)所示。

圖1 基于雙重策略構造數據劃分Fig.1 Partition of data under double strategies
構造最優劃分即通過動態迭代確定最優初始聚類中心,直到聚類中心的位置不再變化,這也標志著改進算法對于這組數據樣本點具有收斂性。
定義8(距離均值[14])數據對象Xi到數據樣本集中所有樣本點之間的距離均值:

定義9(誤差平方和[7])數據樣本集Dn聚類誤差平方和:

其中,數據對象Xl是屬于類簇Ci的樣本,SSE表示該數據樣本點Xl到聚類中心點Ci的距離平方和。SSE值越小說明聚類效果越優。
改進算法更新初始聚類中心的具體步驟如下:
步驟1根據式(9),分別計算每一個類簇中所有數據樣本集的距離均值,并將其更新為該類簇的新聚類中心。
步驟2根據式(10),重新計算當前聚類類簇的誤差平方和SSE′,若SSE′=SSE,表明聚類中心的位置趨于穩定,聚類過程到此結束。否則,令SSE=SSE′,轉向步驟1。
自適應聚類算法流程圖見圖2。

圖2 自適應聚類算法流程圖Fig.2 Flow chart of adaptive clustering algorithm
為了更加準確地測試自適應聚類算法聚類效果的穩定性和有效性,分別在UCI機器學習數據庫常用的六個數據集以及人工模擬數據集中進行測試,并把改進算法(表示為算法4)與基于距離的傳統Kmeans 算法(表示為算法1)[2]、基于離群點改進的Kmeans 算法(表示為算法2)[6]、基于密度改進的DCCK-means算法(表示為算法3)[19]進行比較。
所有算法的實驗環境為:硬件環境為Intel?CoreTMi5-6600CPU,3.30 GHz,8 GB RAM;軟件環境為Windows 10 64 位,MATLAB R2016b。
4.1.1 實驗數據
為了更直觀地展示改進的動態K-means 算法與其余三種算法的聚類效果,將聚類結果進行可視化處理。本次實驗隨機生成4 個數值型樣本集,它們分布在二維空間中,每個數據樣本值都含有兩個數據屬性,經過歸一化處理后的數據樣本集特性如表1所示。

表1 人工模擬數據集特性Table 1 Features of artificial dataset
表1 中,數據集Dataset 1 由2 個團狀類簇和1 個流形類簇構成,數據集Dataset 2 由5 個橢圓狀的類簇構成,數據集Dataset 3 由15 個團狀類簇構成,數據集Dataset 4 由7 個相互連接且形狀各異的團簇構成,這4 個數據集都含有約5%的離群孤立點,經過歸一化處理后的數據樣本分布情況如圖3 所示,利用不同的顏色表示已知條件下的不同類簇。

圖3 人工數據集分布情況Fig.3 Distribution of artificial datasets
4.1.2 實驗參數
對于傳統K-means 聚類算法,初始聚類中心的選取具有一定的隨機性,這導致準確率與迭代次數的不穩定。因此,對算法1 與算法2 分別運行50 次,取實驗結果的平均值進行對比。對于算法3 要設置密度半徑與領域最小個數。對于數據集Dataset 1 密度半徑設置為0.14,領域最小個數設置為10;對于數據集Dataset 2 密度半徑設置為0.2,領域最小個數設置為20;對于數據集Dataset 3 密度半徑設置為0.045,領域最小個數設置為17;對于數據集Dataset 4 密度半徑設置為0.017,領域最小個數設置為10。改進的自適應聚類算法無需輸入任何參數且聚類結果穩定,因此統計一次實驗結果即可。
4.1.3 實驗結果及分析
圖4 至圖7 分別對應算法1 至算法4 在人工數據集上得到的聚類結果。需要說明的是,算法4 得到的聚類結果可以以動態形式展示初始聚類中心的確定、數據樣本集的劃分、數據的迭代次數以及最終的聚類結果。

圖4 4 種算法在人工數據集Data1 的聚類效果Fig.4 Clustering results of 4 algorithms on artificial Data1

圖5 4 種算法在人工數據集Data2 的聚類效果Fig.5 Clustering results of 4 algorithms on artificial Data2

圖6 4 種算法在人工數據集Data3 的聚類效果Fig.6 Clustering results of 4 algorithms on artificial Data3

圖7 4 種算法在人工數據集Data4 的聚類效果Fig.7 Clustering results of 4 algorithms on artificial Data4
實驗表明,算法1 在數據集Dataset 2 和Dataset 3的聚類效果最優,在數據集Dataset 1 和Dataset 4 的聚類效果不太理想,原因是算法1 通過隨機選取確定初始聚類中心,離群孤立點對聚類結果的干擾較大,明顯降低了聚類結果的準確性,對于分布不均勻的數據集Dataset 1 和Dataset 4 的影響尤其明顯。
算法2 對數據集Dataset 3 上的聚類效果最優,在數據集Dataset 4 上的聚類效果最不理想。相比算法3 與算法4,算法2 還是存在隨機確定初始聚類中心、人工輸入聚類數目的弊端,導致聚類準確率無法得到保障。
算法3 和算法4 整體聚類效果明顯優于算法1 和算法2。算法3 在數據集Dataset 2 和Dataset 3 的聚類效果最優,由于數據集Dataset 1 和Dataset 4 分布不均勻且簇類間距離相差較遠,導致算法3 不能在聚類過程中有效識別相互連接的團簇,誤把部分相鄰的兩個類簇歸為同一類。此外,在聚類過程中算法3 過度依賴于參數的取值,參數一旦設置過大或過小,都會直接影響聚類質量。
從數據集Dataset 2 和Dataset 3 的聚類結果可以看出,由于算法4 充分考慮了距離和密度兩個度量因素,聚類效果明顯優于單一考慮距離的算法1。從數據集Dataset 1 和Dataset 4 的聚類結果可以看出,算法4 相較于算法3 來說,更適用于處理密度分布不均勻的數據,且不需要依賴參數的取值。
4.2.1 實驗數據
相較于人工數據集,UCI 數據集[20]屬性較多、維數較高且分布不均,聚類難度更高。選擇UCI數據集進行測試的優點在于,對于它們的實際劃分是已知的,聚類算法的性能可以依據聚類算法得到聚類結果,與已知的真實劃分進行比較,進而進行評估。實驗所用UCI數據集如表2 所示。

表2 UCI數據集特性Table 2 Features of UCI dataset
4.2.2 聚類性能評價指標
算法聚類效果的評價,除采用常用的聚類準確率作為評價方法之外,選定蘭德指數(Rand index)[21]、杰爾德系數(Jaccard coefficient)[22]和調整蘭德參數(adjusted Rand index)[23]作為本次實驗的評價指標進行比較分析,這三個評價聚類性能的指標是在已知數據樣本集正確標簽的條件下,對聚類算法得到的劃分結果進行評價的有效標準。

由定義可知,蘭德指數代表聚類算法得到的聚類劃分結果與原始數據集已知的分布之間的匹配度,杰爾德系數代表聚類算法劃分的樣本對在已知的分布內依然是同一類簇的比率,這三個指標值的范圍都在[-1,1]。
4.2.3 實驗結果及分析
圖8 是將UCI 數據集的已知分類結果(對應數據集左邊的柱狀圖)與改進的自適應聚類算法的聚類結果(對應數據集右邊的柱狀圖)進行直觀比較。對同一數據集的一條柱狀圖進行縱向觀察,可以反映數據對象與類簇之間的所屬關系。對同一數據集的兩條柱狀圖進行橫向比較,如果數據對象在兩條柱狀圖對應的顏色不同,則代表該數據對象通過聚類算法得到的結果與已知的分類結果不同,若數據對象在兩條柱狀圖對應的顏色相同,則代表聚類正確。

圖8 UCI數據集聚類正確率比較Fig.8 Comparison of clustering accuracy of UCI dataset
實驗表明,改進算法的聚類效果在Iris、Wine、Ecoli、WBC 數據集上表現較佳,而在Glass、WDBC 數據集上的表現一般。原因在于數據集Glass、WDBC的樣本個數、屬性數目和類別數目明顯高于其他數據集,且這兩個數據集不同類簇之間的樣本差異較小。
需要說明的是,表3 括號內的波動值反映的是算法1 與算法2 平均準確率的區間。表3 關于不同算法的聚類準確率表明,算法1 和算法2 聚類結果的波動較大,而算法3 與改進的動態算法結果穩定,且改進的動態算法相較于其余三種算法在四個UCI 數據集上的準確率最高,其中高出算法1 的平均準確率約20.87 個百分點,高出算法2 的平均準確率約17.66 個百分點。

表3 4 種聚類算法準確率比較Table 3 Accuracy comparison of 4 clustering algorithms
由圖9 四種算法關于蘭德指數、杰爾德系數以及調整蘭德參數的比較顯示,算法1 與算法2 的聚類指標值相近,算法3 和算法4 的聚類指標值相近,原因在于算法1 與算法2 僅考慮了距離因素,而算法3 與改進算法都融合了密度因素,且算法4 的蘭德指數明顯高于剩余三種算法。

圖9 UCI數據集聚類評價指標比較Fig.9 Comparison of UCI dataset clustering evaluation indicators
通過選取含有離群孤立點且分布復雜的二維數據進行動態聚類,在多個維數互異且分布不均的UCI數據集上與基于距離的傳統K-means 聚類算法、基于離群點檢測改進的K-means 聚類算法以及基于密度的改進的K-means 聚類算法進行對比實驗的結果表明:融合最近鄰矩陣與局部密度優化的自適應Kmeans 聚類算法,采取最鄰近矩陣與局部密度結合的雙重策略,自適應確定初始聚類中心的數目及位置的同時,也能對所有的數據對象標記所屬類簇,完成數據的初分配。自適應K-means 聚類算法不僅可以考慮全局分布特點,也不會忽略數據對象局部領域內的分布情況。
改進的自適應聚類算法在交替迭代的過程中不僅不需要人工設置聚類數目K值以及其他參數,而且在處理密度分布不均勻數據集時準確率有顯著提升。如何簡化算法運算以此來高效地處理多維數據將是后續研究的重點工作。