衣俊艷,杜小鵬
北京建筑大學 電氣與信息工程學院,北京100044
隨著信息技術的飛速發(fā)展,聚類分析已成為數(shù)據(jù)分析最重要的研究方向之一。聚類算法的思想是使劃分為不同類中的對象之間的相似性最小,而同一類中的對象之間的相似度最大[1]。相似度的計算方式有Jaccard相關系數(shù)、皮爾森相關系數(shù)、歐幾里得距離、余弦相似度等[2]。針對數(shù)據(jù)集的分布、形狀、數(shù)據(jù)量以及相似度計算方法等的不同,許多聚類算法已被學者提出。常用的聚類算法可以分為基于劃分的聚類、基于層次的聚類、基于密度的聚類、基于網(wǎng)格的聚類和基于模型的聚類等[3]。
這些算法仍存在缺點,如,k-means和medoids等基于劃分的聚類方法存在聚類結果不穩(wěn)定[4-6]。與其他聚類方法相比,基于密度的聚類方法可以在嘈雜的數(shù)據(jù)中找到各種形狀和大小的聚類。但是他們需要密度參數(shù)作為停止條件,計算量大,復雜度高。神經(jīng)網(wǎng)絡算法具有自學習能力和找到最佳解決方案的能力。但是,其找到復雜問題的最佳解決方案通常需要大量的計算。如Teuvo提出的自組織映射算法(SOM)[7],在模式識別、數(shù)據(jù)處理、數(shù)據(jù)挖掘等理論和應用領域中也做了很多貢獻。但是,其網(wǎng)絡初始狀態(tài)中權重和參數(shù)的選擇對網(wǎng)絡的收斂性影響很大。
Durbin-Willshaw[8]的彈性網(wǎng)絡算法(ENA),最初是一種啟發(fā)式方法,用于解決TSP(Traveling Salesman Problem)問題。與其他神經(jīng)網(wǎng)絡算法相同,它同樣具有無監(jiān)督學習,無需人工指導的優(yōu)點,但是其網(wǎng)絡結構簡單,計算復雜度較其他神經(jīng)網(wǎng)絡大大降低。后來,它被用于數(shù)據(jù)統(tǒng)計[9-10],模式研究[11-13]和圖像識別[14]中的各種問題。
由于ENA 算法最初是用于解決TSP 問題,其原網(wǎng)絡結構無法應用于聚類分析。本文依據(jù)聚類問題的目標調整并優(yōu)化了彈性網(wǎng)絡的能量函數(shù),僅考慮數(shù)據(jù)點對彈性節(jié)點即聚類中心的影響力。進而提出了基于中心移動的彈性網(wǎng)絡算法CMENA(Elastic Network Algorithm based on Center Movement for clustering),CMENA算法加強了數(shù)據(jù)點對聚類中心的影響力,可以使網(wǎng)絡中的彈性節(jié)點更快地聚集到最佳聚類中心附近。另外,由于網(wǎng)絡結構簡化,降低了參數(shù)選擇難度,減少了算法運行的時間。與k-means和k-medoids等使用隨機生成的初始聚類中心神經(jīng)元不同,由于該算法使用原始彈性網(wǎng)絡提出的方法生成初始聚類中心神經(jīng)元,該算法聚類結果唯一。
彈性網(wǎng)絡算法最初提出時是應用于求解TSP問題。其基本原理是根據(jù)城市點的坐標,計算出所有城市點的質心,再以質心為圓心,生成具有多個彈性節(jié)點(elastic points)的封閉小圓環(huán),該圓環(huán)稱為彈性帶(rubber band)。隨著彈性網(wǎng)絡能量函數(shù)的最小化,彈性節(jié)點不斷向城市點移動,直到所有的城市點被彈性節(jié)點覆蓋,網(wǎng)絡達到穩(wěn)定狀態(tài),獲得該TSP問題的近似解。假定彈性節(jié)點為Y(y1,y2,…,ym),其中m是彈性節(jié)點的數(shù)量。在算法迭代過程中,原彈性網(wǎng)絡通過兩種力來牽引彈性節(jié)點的移動:一種是與彈性節(jié)點yj相鄰的城市點對彈性節(jié)點yj的吸引力,使得彈性節(jié)點yj逐漸向城市點靠近;另一種是與彈性節(jié)點yj相鄰的彈性節(jié)點yj-1和yj+1對彈性節(jié)點yj的張力,迫使彈性節(jié)點之間的距離最短。本文依據(jù)聚類問題的目標調整并優(yōu)化了彈性網(wǎng)絡的能量函數(shù),提出了CMENA算法,并對算法的原理進行了推理驗證。
在聚類問題中,SED 值是常用的評價指標之一。SED值可用式(1)表示:
其中,nj是屬于第j類數(shù)據(jù)的個數(shù),k是聚類數(shù)。在此基礎上,面向聚類的目標,同一類中的對象之間的相似度最大,本文調整并優(yōu)化了彈性網(wǎng)絡的能量函數(shù)。本文提出的CMENA 算法是一種神經(jīng)網(wǎng)絡聚類算法。給定具有n個數(shù)據(jù)點的數(shù)據(jù)集,首先計算出所有數(shù)據(jù)點的重心,再以重心為圓心,在圓上均勻生成k個聚類中心神經(jīng)元,聚類中心神經(jīng)元的個數(shù)就是聚類的類數(shù)目。圓的半徑可由公式(2)確定:
其中,G是數(shù)據(jù)X的二維重心。在解決高維問題時,選取前兩維數(shù)據(jù)計算圓(即ENA 算法中的彈性帶)的半徑。重心由式(3)計算:
其中i=1,2。
對于給定的聚類中心Y(y1,y2,…,yk),對應的聚類結果為C(c1,c2,…,ck),xi(i=1,2,…,n) 屬于cj(j=1,2,…,k)這一事件的概率為ωij,聚類問題可描述為求解Y(y1,y2,…,yk)及ωij使得:
即聚類中心yj與數(shù)據(jù)點xi之間歐式距離的平方,對應于SED值的距離衡量標準。
對于ωij,由于沒有先驗知識,不能確定其具體形式,故用統(tǒng)計物理學的極大熵原理[9]來確定。對于固定的Y(y1,y2,…,yk),定義聚類的能量函數(shù)和熵函數(shù)分別為:
圖1 CMENA聚類過程
其中,T是常數(shù)參數(shù),T∝t,其中t是模擬退火算法中的溫度系數(shù)。
對于數(shù)據(jù)點xi的分布函數(shù)為:
進一步得到聚類問題對應物理系統(tǒng)自由能函數(shù)的一般形式[15-16]:
根據(jù)模擬退火算法理論,在退火過程中,系統(tǒng)在每一溫度下達到平衡態(tài)的過程都應遵循自由能減少定律,系統(tǒng)狀態(tài)的自發(fā)變化總是朝著自由能減少的方向進行,當自由能達到最小值時,系統(tǒng)達到平衡態(tài)。對應于原彈性網(wǎng)絡理論,該公式也可描述為所有數(shù)據(jù)點對每個聚類中心神經(jīng)元的牽引力之和,同樣當牽引力達到最小值時,系統(tǒng)達到平衡態(tài)時。為滿足實際計算要求,引入常數(shù)參數(shù)α。本文采用的自由能函數(shù)為:
其中,n是數(shù)據(jù)點的總個數(shù)。
根據(jù)彈性網(wǎng)絡算法理論,通過對自由能函數(shù)求導,可得到動量公式:
其中,ωij可由式(8)得到。Δyj是聚類中心神經(jīng)元yj需要移動的增量,α用來控制聚類中心神經(jīng)元yj移動幅度的范圍。聚類中心神經(jīng)元根據(jù)下式更新:
采用一個小聚類問題的實際聚類過程圖進一步說明CMENA的聚類過程。
如圖1 所示,當參數(shù)α和T設置合理,隨著彈性網(wǎng)絡的能量函數(shù)的最小化,彈性節(jié)點即聚類中心神經(jīng)元在每次迭代時不斷向最佳聚類中心C移動,直到能量函數(shù)最小化,Δyj接近于0,聚類中心神經(jīng)元不再移動,最終所得的聚類中心神經(jīng)元Yend將無限接近于最佳聚類中心C。最后根據(jù)Yend計算最終的ωij,將數(shù)據(jù)點xi分配給其所屬的ωij最大的聚類中心,得到聚類結果。
在原彈性網(wǎng)絡中考慮神經(jīng)元相互之間的作用力,其聚類中心根據(jù)公式(16)改變:
在圖2和圖3中對本文算法和上述彈性網(wǎng)絡結構(ENC)進行了對比,數(shù)據(jù)采用UCI學習庫中的wine數(shù)據(jù)集。
圖2 聚類中心的Δyj 第一維的變化
圖3 聚類中心的Δyj 第二維的變化
為驗證算法的有效性,對聚類過程中第一個聚類中心神經(jīng)元前兩維數(shù)據(jù)的Δyj變化軌跡進行了跟蹤。兩種算法設置同樣的參數(shù)T=2 和α=0.1,ENC 的β=0.001 時。對兩種算法采用同樣的停止標準,即對于任意yj的Δyj的絕對值均小于0.000 1 時,算法終止。從圖2 和圖3 可以看出,CMENA 算法優(yōu)先收斂。其中ENC 算法花費了318 次迭代,CMENA 算法僅僅花費了255次迭代。在每次迭代的花費上,由于本文算法網(wǎng)絡結構更加簡單,算法運行時間也少于ENC 算法。在聚類質量上,ENC算法聚類結果的SED值為24 856,CMENA聚類結果的SED為24 410,CMENA較ENC優(yōu)化了18%。因此CMENA 算法總的運行時間較ENC 算法有較大的減少,求解質量顯著提高。
對于初始聚類中心神經(jīng)元的生成方式,考慮三種方法:RAND 方式、ENC 方式和CMENA 方式。下面分別介紹三種不同的方法。RAND方式:在數(shù)據(jù)點中隨機選取k個數(shù)據(jù)點作為初始聚類中心神經(jīng)元,k為聚類簇數(shù);ENC方式:首先計算出所有數(shù)據(jù)點的重心,以0.1倍的區(qū)域半徑為半徑,在圓上均勻生成k個數(shù)據(jù)點作為初始聚類中心神經(jīng)元,區(qū)域半徑根據(jù)式(17)計算:
CMENA 方式:首先計算出所有數(shù)據(jù)點的重心,再以重心為圓心,以所有數(shù)據(jù)點到重心的距離之和的平均值為半徑,在圓上均勻生成k個聚類中心神經(jīng)元,聚類中心神經(jīng)元的個數(shù)就是聚類簇數(shù)。
為了驗證以上三種方法的有效性,針對同一個三簇共60 個數(shù)量的聚類問題,分別采用以上三種初始神經(jīng)元設置方法進行了求解,聚類結果對比圖如圖4 所示。從圖4可以看出,采用RAND方式的算法求解的SED值大于ENC 和CMENA 方式。采用ENC 算法和CMENA方式均能使算法收斂于更優(yōu)解。采用RAND、ENC 和CMENA 方式所得聚類結果的SED 值分別為92.91、25.44、25.35,相比于RAND 和ENC 方式,CMENA 分別優(yōu)化了72.7%、0.4%。另外,采用ENC 和CMENA 方式算法收斂速度較采用RAND方式更快。相比于ENC方式,CMENA方式能更快的收斂。
圖4 不同初始聚類中心的聚類結果
由此可見,RAND 方式隨機性大,無法保證初始聚類中心的分布狀態(tài),所得聚類結果不穩(wěn)定。ENC方式雖然能在數(shù)據(jù)的區(qū)域范圍能均勻的得到初始聚類中心神經(jīng)元,但沒有充分考慮數(shù)據(jù)的分布情況,容易受到孤立點的影響。CMENA方式以數(shù)據(jù)的重心作為圓心,充分考慮了數(shù)據(jù)的分布狀況,且其半徑的確定也考慮到每個數(shù)據(jù)點,使得CMENA 方式算法收斂最快,所得的聚類結果更好。因此本文中采用CMENA 方式作為初始聚類中心神經(jīng)元的生成方法。
經(jīng)過實驗發(fā)現(xiàn),本文算法中參數(shù)α的取值范圍為(0.1,1),參數(shù)T的取值與數(shù)據(jù)量有所關聯(lián),對于數(shù)據(jù)量為0~1 000的聚類問題,T=3;對于數(shù)據(jù)量為1 000~5 000的聚類問題,T=6;對于數(shù)據(jù)量為5 000~10 000的聚類問題,T=9;對于數(shù)據(jù)量為10 000 的聚類問題,T?。?0,100)的隨機整數(shù)。為了驗證參數(shù)選擇策略的有效性和算法運算的實時性,本文采用一系列隨機生成的二維數(shù)據(jù)集進行了驗證,將它們聚為三類,通過上述的參數(shù)選擇方法選擇了CMENA 的參數(shù),實驗結果如圖5 所示。從圖5中可知,算法所需迭代次數(shù)與數(shù)據(jù)量的大小無關,證明了上述參數(shù)選擇方案的正確性和有效性,以及算法運算的實時性,體現(xiàn)了CMENA算法在解決大數(shù)據(jù)量問題時的優(yōu)勢。
圖5 參數(shù)實時性分析
CMENA 算法主要有兩個參數(shù)T和α,在圖6 至圖9 使用分為三簇的二維隨機數(shù)據(jù)集對參數(shù)T和α在CMENA算法中的作用進行分析。其中“?”代表聚類成功,“×”代表聚類失敗。此處采用一個分為三簇,共60個數(shù)據(jù)點的數(shù)據(jù)集。在圖6 和圖7 中,分別將α設置為0.5、1、5,將T設置為1~10的整數(shù)。從圖6和圖7可知,在α相同時,T值越大,算法收斂性越差,容易導致聚類失敗,算法所需迭代次數(shù)越多;反之T值越小,越有利于算法快速收斂,算法運行時間越短。但根據(jù)原彈性網(wǎng)絡算法理論,如果在算法初始階段,T值過小,會導致算法的能量函數(shù)收斂于某一極小值,無法得到正確的聚類結果。因此本文在算法初始階段給參數(shù)T設置一個較大的初始值,在算法演進時T不斷衰減,直到T=0.01。以提高網(wǎng)絡在算法初始階段的活性,使得相似度大的數(shù)據(jù)點對同一聚類中心的牽引力顯著增強,后期通過減小參數(shù)T,使已經(jīng)在相似度較大的數(shù)據(jù)點附近聚類中心神經(jīng)元向更加接近最佳聚類中心的位置移動,最終實現(xiàn)聚類中心神經(jīng)元與最佳聚類中心盡可能地重合,得到好的聚類結果。
圖6 參數(shù)T 對聚類質量的影響
圖7 參數(shù)T 對運行速度的影響
圖8 參數(shù)α 對聚類質量的影響
圖9 參數(shù)α 對運行速度的影響
α是用來控制每次迭代彈性節(jié)點即聚類中心神經(jīng)元移動幅度的大小,在圖8和圖9中設置參數(shù)T為1、2、3,α設置為0.1~1。從圖8中可以得知,在合適范圍內的α對聚類的質量影響較小。從圖9中可以得知,在T相同的情況下α越大,算法運行所需迭代次數(shù)越少。
在圖10 中采用8 簇共160 個數(shù)據(jù)的聚類問題通過對CMENA、k-means、k-medoids 三種算法在聚類過程中SED值的變化分析發(fā)現(xiàn)。從圖10可以看出k-means,k-medoids 收斂速度極快,但CMENA 算法的聚類結果的SED優(yōu)于其他兩種算法,且CMENA算法聚類時SED值的變化過程也更加平滑。實際上k-means、k-medoids和CMENA分別用4、7、261次迭代。k-means、k-medoids和CMENA 算法的聚類結果的SED 分別為94.6、95.3、43.7,CMENA 算 法 較k-means 和k-medoids 優(yōu) 化 了53.8%、54.1%。另外SOM 的SED 值為45.5,CMENA 相比于SOM優(yōu)化了4.0%。
圖10 不同算法聚類過程中SED的變化
圖11 不同T 值下,自由能函數(shù)的變化
圖12 不同α 值下,自由能函數(shù)的變化
在圖11和圖12中采用一個分為3簇共60個數(shù)據(jù)的數(shù)據(jù)集,對采用不同參數(shù)時,CMENA 算法的能量函數(shù)的變化過程進行了分析。可以發(fā)現(xiàn),能量函數(shù)的總體趨勢為逐漸收斂于0。在T和α取值恰當時,CMENA 算法通常在能量函數(shù)接近0 時停止,進而得到聚類結果,網(wǎng)絡收斂。在圖11 中,α的取值為0.1,T的取值為2、4、6、8、10??梢钥闯觯琓越小,算法收斂速度越快,所需聚類時間越短。在圖12 中,T的取值為3,α的取值為0.2、0.4、0.6、0.8、1.0。實驗發(fā)現(xiàn)α越大,算法收斂速度越快,算法收斂值越偏離于極小值。
為了進一步驗證本文算法的有效性,采用一組具有8簇共160個數(shù)據(jù)的二維隨機數(shù)據(jù),對其分別用k-means、k-medoids、ENC、CMENA 算法進行了聚類。ENC 和CMENA 算法采用同樣的參數(shù)T=2 和α=0.1,ENC 的β=0.01。可以從圖13和圖14可以清晰地看出k-means、k-medoids在聚類時,出現(xiàn)將不同簇的數(shù)據(jù)聚為一類,相同簇數(shù)據(jù)聚成兩類的錯誤。而在圖15 和圖16 中ENC和CMENA 算法能準確地將8 簇數(shù)據(jù)聚為8 類。四種聚類算法的SED 值分別為96.83、90.05、46.39、43.77。CMENA 聚類結果的SED 值比k-means、k-medoids、ENC分別優(yōu)化了55%、46%、6%。
總之,與k-means 和k-medoids 算法相比,CMENA聚類質量顯著提高。相較于ENC算法,CMENA首先減少了參數(shù)的選擇難度,其次降低了算法運行花費的時間,在聚類質量上也有較大提高。
圖13 k-means聚類結果
圖14 k-medoids聚類結果
圖15 ENC聚類結果
圖16 CMENA聚類結果
本文在彈性網(wǎng)絡的基礎上,針對聚類問題的特點,依據(jù)聚類評價指標SED值,調整并優(yōu)化了彈性網(wǎng)絡算法的能量函數(shù),并對動量公式等進行了重新的推導。當CMENA算法的能量函數(shù)最小化,動量公式(14)所得任意yj的Δyj接近于0 時,算法收斂。CMENA 算法的具體步驟如下:
(1)給定一個數(shù)據(jù)集X(x1,x2,…,xn),為方便計算可以將數(shù)據(jù)統(tǒng)一轉化到(0,10)的區(qū)域內。給定聚類數(shù)k。根據(jù)數(shù)據(jù)維度高低和數(shù)據(jù)量大小設置CMENA算法的參數(shù)T和α。
(2)選擇數(shù)據(jù)的前兩維數(shù)據(jù),根據(jù)公式:
計算要生成聚類中心神經(jīng)元的圓(彈性帶)的半徑。根據(jù)彈性帶的半徑生成具有k個彈性節(jié)點即聚類中心神經(jīng)元的彈性帶,彈性節(jié)點均勻分布在彈性帶上,此時生成的彈性節(jié)點就是初始聚類中心神經(jīng)元Y0(y1,y2,…,yk)。
(3)根據(jù)CMENA算法的動量公式:
計算每個彈性節(jié)點需要移動的距離,根據(jù)公式:
更新聚類中心神經(jīng)元的坐標。
(4)計算由動量公式得到的Δyj的最大值,如果Δyj的最大值大于閾值(本文采用0.000 1)時,重復步驟(3),直到多次迭代Δyj的最大值均小于閾值,執(zhí)行下一步。
(5)根據(jù)Yend計算最終的ωij,將數(shù)據(jù)點xi分配給其所屬的ωij最大的聚類中心,得到聚類結果。
本文采用了大量的隨機數(shù)據(jù)集和真實數(shù)據(jù)集進行實驗仿真。由于隨機數(shù)據(jù)集無標準的聚類結果,隨機數(shù)據(jù)集的實驗結果通過聚類評價指標SED值來評估,真實數(shù)據(jù)集的實驗結果通過Accuracy 來評估。Accuracy 的計算方法如式(18)所示:
其中,ai為屬于第i類的數(shù)據(jù)點是被正確分類的數(shù)據(jù)點個數(shù),N為數(shù)據(jù)集中所有數(shù)據(jù)點的個數(shù)。
由于k-means、k-medoids 算法對初始聚類中心敏感,其聚類結果的SED 值取20 次聚類結果的平均值。對于在預定時間內無法得到聚類結果情況,使用N/A標記。在表1和表2中,列出了k-means、k-medoids和CMENA算法在100到900個數(shù)據(jù)時聚類結果的SED值。CMENA算法聚類結果的SED比k-means平均小18%,比k-medoids平均小20%。在表3 中,列出了k-means、k-medoids 和CMENA算法在1000~10 000個數(shù)據(jù)時聚類結果的SED值。CMENA 算法聚類結果的SED 值比k-means 平均小21%。除10 000 個數(shù)據(jù)點外,與k-medoids 相比,CMENA聚類結果的SED值平均優(yōu)化了18%。在表4中列出了k-means和CMENA算法在20 000~100 000個數(shù)據(jù)時聚類結果的SED 值。由于k-medoids 算法無法在預計時間內得到聚類結果,所以未曾列出。CMENA算法聚類結果的SED 值平均比k-means 小15%。從表3可以看出CMENA算法可以解決比k-medoids更大數(shù)量級的聚類問題。
表1 2維和3維的100~900個數(shù)據(jù)的聚類結果
表2 5維和10維的100~900個數(shù)據(jù)的聚類結果
選擇了UCI 機器學習庫中數(shù)據(jù)集進行真實數(shù)據(jù)聚類的準確率,包括Zoo、Iris、Wine、Handwritten Digits 和Skin 數(shù)據(jù)集。k-means 和k-medoids 對初始點的選擇敏感,故對數(shù)據(jù)量較小的三個數(shù)據(jù)集取20 次運行結果的平均值,對其余取10 次運行結果的平均值。由于k-medoids 聚類算法對“HandwrittenDigits”和“Skin”數(shù)據(jù)集的聚類未能在預期的時間內完成,因此未在表5中列出。從表5可以看出,CMENA算法準確率比k-means平均提高12%。對數(shù)據(jù)集Zoo、Iris 和Wine 的CMENA的聚類準確率比k-medoids 的平均高14%。與SOM 相比,SOM也不能在預期時間內解決Digits和Skin數(shù)據(jù)集的聚類問題,對于其他三個數(shù)據(jù)集的聚類中,CMENA在準確率上也平均有19%的優(yōu)化。原始的彈性網(wǎng)絡通常只能解決數(shù)百個數(shù)據(jù)的TSP 問題。而CMENA 算法所解決的Skin 數(shù)據(jù)集的聚類問題有24 萬個數(shù)據(jù)之多。在k-medoids 和SOM 聚類算法都無法解決的情況下,CMENA 算法卻能在短時間內解決并且得到的聚類結果的準確率比k-means高15%。
表3 2維和3維的1 000~10 000個數(shù)據(jù)的聚類結果
表4 2維和3維的20 000~100 000個數(shù)據(jù)的聚類結果
表5 真實數(shù)據(jù)集聚類結果
本文針對傳統(tǒng)聚類算法k-means和k-medoids對初始聚類中心的敏感,導致聚類結果不穩(wěn)定。雖然彈性網(wǎng)絡聚類算法ENC 穩(wěn)定,但需花費過多時間的。針對這些聚類算法的不足,面向聚類問題的特點,提出了具有中心移動特性的彈性網(wǎng)絡聚類算法。實驗證明CMENA具有以下優(yōu)勢:
(1)因為彈性網(wǎng)絡的彈性帶生成初始聚類中心神經(jīng)元,聚類結果穩(wěn)定。
(2)聚類過程中聚類中心神經(jīng)元的位置可跟蹤,實現(xiàn)聚類過程的實時觀測。
(3)運算速度較原彈性網(wǎng)絡結構明顯加快。
(4)聚類準確率較k-means,k-medoids 以及SOM等聚類算法均有顯著的提高。在聚類數(shù)目k較大時,CMENA仍能準確地根據(jù)聚類數(shù)k聚類。
(5)解決大數(shù)據(jù)量聚類問題的能力有了極大的提高,最大解決了24萬數(shù)據(jù)的聚類問題。
本文根據(jù)聚類的目標SED 值調整并優(yōu)化了彈性網(wǎng)絡算法的能量函數(shù),提出了面向聚類分析問題的CMENA算法,通過對大量隨機數(shù)據(jù)和真實數(shù)據(jù)的實驗,驗證了CMENA算法的有效性。相較于其他常用的聚類算法,CMENA 性能顯著提高,該算法具有更高的穩(wěn)定性,高效性,準確性。