周文娟,趙禮峰
(南京郵電大學(xué) 理學(xué)院,江蘇 南京 210023)
在科技社會(huì)飛速發(fā)展的今天,人工智能應(yīng)用已經(jīng)遍及世界各處,受到了人們的重視。聚類(lèi)作為常用的無(wú)監(jiān)督學(xué)習(xí)方法,在識(shí)別數(shù)據(jù)對(duì)象的內(nèi)在關(guān)系方面,起到了極其重要的作用。K-Means算法作為一種基于劃分的經(jīng)典聚類(lèi)算法,根據(jù)差異度類(lèi)內(nèi)小類(lèi)間盡可能大的原則進(jìn)行聚類(lèi),基本思想通俗易懂,且聚類(lèi)效果明顯。但是該算法存在以下經(jīng)典兩大局限:(1)屬于無(wú)監(jiān)督的分類(lèi)方法,聚類(lèi)個(gè)數(shù)需要提前給出,不確定的K值對(duì)算法的性能影響很大;(2)易受初始聚類(lèi)中心的影響,即不同的初始聚類(lèi)中心聚類(lèi)結(jié)果不同,容易陷入局部最優(yōu)。學(xué)者們就以上問(wèn)題提出了很多改進(jìn)算法。
針對(duì)聚類(lèi)中的K值問(wèn)題,Pelleg等[1]在傳統(tǒng)K-Means算法的基礎(chǔ)上,對(duì)得到的K個(gè)聚類(lèi)中心,利用貝葉斯信息標(biāo)準(zhǔn)(BIC)重新聚類(lèi)以確定最佳K值;韓凌波[2]綜合了類(lèi)內(nèi)與類(lèi)間差異度,構(gòu)建距離評(píng)價(jià)函數(shù)作為最佳K值檢驗(yàn)函數(shù)。另外粒子群優(yōu)化算法[3]也是一種全局優(yōu)化算法,Merwe等[4]將PSO和K-Means進(jìn)行融合,得到一種新算法,該算法充分利用K-Means較強(qiáng)的局部搜索能力和PSO的全局搜索能力,使得聚類(lèi)結(jié)果更加精準(zhǔn);之后白樹(shù)仁等[5]以粒子群算法收斂條件為改進(jìn)的切入點(diǎn),探索在給定不同K值情況下適應(yīng)度函數(shù)的變化特征,提出能夠自動(dòng)調(diào)整K值的改進(jìn)算法。
針對(duì)K-Means聚類(lèi)的初始聚類(lèi)中心易陷入局部?jī)?yōu)化問(wèn)題,近年來(lái),基于元啟發(fā)式優(yōu)化的改進(jìn)算法得到廣泛關(guān)注。元啟發(fā)式算法的主要優(yōu)點(diǎn)具有易實(shí)現(xiàn)、理論簡(jiǎn)單、隨機(jī)搜索能力強(qiáng)等特點(diǎn),可以應(yīng)用于眾多類(lèi)別的組合優(yōu)化中[6]。
國(guó)內(nèi)外眾多學(xué)者將啟發(fā)式群優(yōu)化算法與聚類(lèi)分析結(jié)合應(yīng)用到相關(guān)不同的領(lǐng)域。潘曉英等[7]提出基于適應(yīng)步長(zhǎng)的螢火蟲(chóng)劃分聚類(lèi)算法,在給定聚類(lèi)數(shù)的情況下,該算法的隨機(jī)性和全局搜索能力協(xié)助找到初始聚類(lèi)中心;朱春等[8]在標(biāo)準(zhǔn)布谷鳥(niǎo)算法的基礎(chǔ)上將發(fā)現(xiàn)概率P由固定值轉(zhuǎn)變成隨迭代次數(shù)逐步減小的變量,這樣不僅可以提高搜索種群的質(zhì)量,而且保證了算法的收斂;梁冰等[9]利用人工蜂群算法架構(gòu)簡(jiǎn)單、全局收斂速度快的優(yōu)勢(shì),提出一種改進(jìn)的將人工蜂群算法與模糊聚類(lèi)算法相結(jié)合的聚類(lèi)算法,通過(guò)人工蜂群算法的啟發(fā)性得到最優(yōu)解,以此解決在模糊聚類(lèi)算法求解過(guò)程中確定初始聚類(lèi)中心的問(wèn)題。
1.1.1 基本原理
蟻群算法(ant colony optimization,ACO)的基本思想是螞蟻在覓食過(guò)程中會(huì)分泌一種特殊的物質(zhì)—信息素,而蟻群之間的交流正是通過(guò)該物質(zhì)進(jìn)行信息傳遞以及分工協(xié)作。在一定范圍內(nèi)能夠覺(jué)察到該信息素并指導(dǎo)它的行為,當(dāng)某些蟻群在一些路徑上留下足跡,也給其他螞蟻提供了選擇該路徑的信號(hào),使得螞蟻越來(lái)越多,于是越發(fā)增加了信息素強(qiáng)度,形成一套正反饋學(xué)習(xí)系統(tǒng)慢慢接近最優(yōu)路徑。
1.1.2 模 型
蟻群算法通常在組合優(yōu)化問(wèn)題中應(yīng)用廣泛。所謂組合優(yōu)化是某種離散對(duì)象按某個(gè)確定的約束條件進(jìn)行安排,當(dāng)已知合乎這種約束條件的特定安排存在時(shí),尋求這種特定安排在某個(gè)優(yōu)化準(zhǔn)則下的最大或最小的解問(wèn)題。
假如m只螞蟻有可供選擇的n個(gè)城市,每只螞蟻進(jìn)行每一步選擇都是建立在前面螞蟻選擇該路徑的基礎(chǔ)上,然后提供給下一個(gè)還沒(méi)有訪問(wèn)該路徑的螞蟻,t時(shí)刻位于城市i的螞蟻k選擇城市j為目標(biāo)的概率是:
(1)
信息素更新方程為:
(2)
說(shuō)明:
m—螞蟻個(gè)數(shù);
n—節(jié)點(diǎn)(頂點(diǎn))個(gè)數(shù);
ηij—邊弧(i,j)的能見(jiàn)度,或稱(chēng)局部啟發(fā)因子,一般取1/dij,dij表示路徑(i,j)之間的長(zhǎng)度;
(由城市i轉(zhuǎn)移到城市j的可見(jiàn)度亦稱(chēng)啟發(fā)信息)
τij(t)—邊弧(i,j)的信息素軌跡強(qiáng)度;
α—信息啟發(fā)式因子,代表軌跡的相對(duì)重要程度(α≥0);
β—期望啟發(fā)式因子,代表能見(jiàn)度的相對(duì)重要程度(β≥0);
ρ—信息素軌跡的持久性(0≤ρ≤1),1-ρ可理解為軌跡衰減度;
Q—體現(xiàn)螞蟻所留軌跡數(shù)量的一個(gè)常數(shù);
U—可行節(jié)點(diǎn)集合;
tabu(k)—一個(gè)列表,用于記錄第k只螞蟻到目前為止已經(jīng)訪問(wèn)的城市。
總體而言,三種模型各有所長(zhǎng),從局部考慮的是采用螞蟻密度模型和螞蟻數(shù)量模型,而全局考慮較好的一般利用螞蟻圈模型。
1.2.1 思想原理
粒子群算法(particle swarm optimization,PSO)利用群體間的信息共享和個(gè)體自身經(jīng)驗(yàn)的總結(jié)不斷修正個(gè)體的行為策略。在空間中,鳥(niǎo)被視作一個(gè)可以忽略大小的微粒,尋找最優(yōu)解的過(guò)程就相當(dāng)于鳥(niǎo)兒找到食物坐標(biāo)的過(guò)程。每只鳥(niǎo)會(huì)分享當(dāng)前時(shí)刻各自距離食物的最短路程,之后鳥(niǎo)群都會(huì)向著這個(gè)最短距離飛去,所以就會(huì)出現(xiàn)一聚一散,不斷地變換方向,使整個(gè)群空間通過(guò)不斷演化,從雜亂無(wú)章到一致協(xié)調(diào),從而獲得最優(yōu)解。
1.2.2 模 型
假設(shè)在D維空間中,有m個(gè)粒子,粒子i位置:Xi=(Xi1,Xi2,…,XiD),粒子i的飛行速度為:Vi=(Vi1,Vi2,…,ViD),i∈[1,m],d∈[1,D],粒子i經(jīng)歷過(guò)的歷史最好位置:Pi=(Pi1,Pi2,…,PiD),群體內(nèi)(或領(lǐng)域內(nèi))所有粒子經(jīng)歷過(guò)的最好位置:pg=(pg1,pg2,…,pgD)(以上變量均為實(shí)數(shù)空間取值)。
基本PSO公式:
(3)
其中,c1,c2為學(xué)習(xí)因子或加速系數(shù),一般為正常數(shù),通常取2;r1,r2的取值范圍是[0,1],是該區(qū)間內(nèi)均勻分布的偽隨機(jī)數(shù);Vmax為粒子速度能達(dá)到的最大值。
粒子i第d維的速度更新公式為:
(4)
粒子i第d維的位置更新公式為:
(5)
說(shuō)明:
c1,c2—學(xué)習(xí)因子,調(diào)節(jié)學(xué)習(xí)的最大步長(zhǎng);
r1,r2—兩個(gè)隨機(jī)函數(shù),取值范圍是[0,1],以增加搜索隨機(jī)性;
ω—慣性權(quán)重,調(diào)節(jié)對(duì)解空間的搜索能力。
輪廓系數(shù)是由Kaufman等提出的概念,其定義表達(dá)式如下:
(6)
不難看出,輪廓系數(shù)是所有個(gè)體輪廓系數(shù)的求和取平均,因此個(gè)體輪廓系數(shù)具體定義如下:
(7)
(8)
假設(shè)樣本i被聚到C類(lèi),a(i)表示樣本i和同屬于C類(lèi)的其他所有樣本之間的平均距離,b(i)表示樣本i和非C類(lèi)的各個(gè)類(lèi)中所有樣本的平均距離的最小值。si表示類(lèi)內(nèi)樣本與類(lèi)間樣本的差異性的最小值,從而體現(xiàn)樣本聚類(lèi)結(jié)果的優(yōu)越性,其取值范圍在[-1,1],取值越大,表示該樣本的類(lèi)內(nèi)平均距離遠(yuǎn)與類(lèi)間平均距離越明顯,則說(shuō)明對(duì)該樣本的聚類(lèi)達(dá)到了最優(yōu)效果。
適應(yīng)度函數(shù)是用來(lái)評(píng)價(jià)當(dāng)前步驟聚類(lèi)結(jié)果的好壞,針對(duì)個(gè)體輪廓系數(shù),知道隨著群集數(shù)量的增加,該值不斷減少,通過(guò)繪制結(jié)果曲線,則可能會(huì)發(fā)現(xiàn)在達(dá)到某個(gè)K值時(shí),平方距離的總和會(huì)突然下降很快,然后再慢慢減小。在這里,可以找到最佳聚類(lèi)數(shù)。因此文中定義一種新的適應(yīng)度函數(shù)—基于個(gè)體輪廓系數(shù)的變化率函數(shù)。
適應(yīng)度函數(shù)值的大小表示聚類(lèi)效果的好壞,越大越好,用式9表示算法的適應(yīng)度。顯然,不同的K值得到的適應(yīng)度值不同,而在數(shù)據(jù)集合適的K值之前或之后,適應(yīng)度值的大小有著明顯的差異,一般是之前的幅度非常大,之后增大的程度很微小。因此,需要一個(gè)能反應(yīng)單次變化程度在總變化過(guò)程中最突出的變量,從而引入變化率概念,表達(dá)式定義如下:
(9)
其中,用pk表示K時(shí)的變化率,ε表示一個(gè)很小的數(shù)。根據(jù)K值的特點(diǎn)可知,隨著其值不斷增加,pk逐漸減小,最后無(wú)限接近零,可以根據(jù)pk的變化來(lái)知道哪一步迭代為最佳迭代過(guò)程。
根據(jù)個(gè)體輪廓系數(shù)設(shè)計(jì)了K值優(yōu)化算法,即在傳統(tǒng)K-Means算法的基礎(chǔ)上,通過(guò)個(gè)體輪廓系數(shù)優(yōu)化K值,運(yùn)算過(guò)程描述如下:
Input:n個(gè)數(shù)據(jù)對(duì)象的數(shù)據(jù)集;
Output:個(gè)體輪廓系數(shù)最小時(shí)的K值。
(2)利用K-Means算法計(jì)算出不同聚類(lèi)數(shù)K下的聚類(lèi)結(jié)果,在每個(gè)K值上重復(fù)運(yùn)行數(shù)次K-Means(避免局部最優(yōu)解);
(3)根據(jù)個(gè)體輪廓系數(shù)分別計(jì)算不同聚類(lèi)數(shù)K下的S,計(jì)算當(dāng)前K的平均輪廓系數(shù);
(4)利用變化率函數(shù)搜索在變化率最大值下的相應(yīng)K值;
(5)輸出最佳聚類(lèi)數(shù)K。
蟻群算法和粒子群算法作為人工智能領(lǐng)域的兩大主要算法,兩種算法的有效融合已經(jīng)廣泛應(yīng)用于許多領(lǐng)域,如離散優(yōu)化問(wèn)題、旅行商問(wèn)題、最大流最短回路問(wèn)題等。粒子群算法也是起源于對(duì)簡(jiǎn)單社會(huì)的模擬,最初是模擬鳥(niǎo)群覓食的過(guò)程,但后來(lái)發(fā)現(xiàn)其是一種很好的優(yōu)化工具。二者的優(yōu)缺點(diǎn)對(duì)比如表1所示。
表1 算法對(duì)比
通過(guò)對(duì)比可以看出,蟻群算法多應(yīng)用于離散變量問(wèn)題處理,但是搜索時(shí)間很長(zhǎng),很容易陷入局部最優(yōu)解,粒子群算法更加擅長(zhǎng)解決連續(xù)問(wèn)題,并且它具有收斂速度快、算法簡(jiǎn)單等優(yōu)點(diǎn)。因此,針對(duì)優(yōu)化初始聚類(lèi)中心點(diǎn),文中試圖通過(guò)融合兩大算法各自優(yōu)勢(shì),找到一種更加科學(xué)合理的改進(jìn)策略,并且融合兩大算法策略已經(jīng)被充分肯定。
如陳睿等[10]針對(duì)雙邊匹配問(wèn)題,以求得利益最大化以及同時(shí)滿足多方需求為主要目標(biāo),提出一種改進(jìn)的粒子群蟻群優(yōu)化算法。柴大寶等[11]考慮到蟻群算法的控制參數(shù)往往需要經(jīng)驗(yàn)來(lái)取得,提出將粒子群算法應(yīng)用于蟻群算法中,從而解決著名的旅行商問(wèn)題。且融合算法驗(yàn)證得到新算法對(duì)于參數(shù)的調(diào)整工程量大大降低,避免了許多盲目查詢的實(shí)驗(yàn)。潘鴻雁[12]將蟻群算法和粒子群算法融合到Ad Hoc網(wǎng)絡(luò)組傳播路由的研究中,用以解決單一算法存在的局限性,主要策略是用蟻群算法發(fā)現(xiàn)大量的路徑并選出較優(yōu)備選路徑集后,通過(guò)粒子群算法的全局搜索能力[13]進(jìn)一步搜索,然后依據(jù)其約束條件和調(diào)整算子交叉進(jìn)行及時(shí)調(diào)整,解決算法在求解QoS組播路由問(wèn)題中的最優(yōu)路徑。
(1)PSO擁有粒子本身位置和速度參考信息,但是在進(jìn)行精確求解過(guò)程中搜索能力差,不能充分利用反饋信息。將ACO引入到PSO系統(tǒng)的每次迭代過(guò)程中,以ACO每一代形成的解作為PSO的初始種群,然后經(jīng)過(guò)PSO的多次迭代,通過(guò)其正反饋性進(jìn)行不斷調(diào)整,從而找到更好的解,提高求解速率,得到快速收斂。
(2)ACO是某種啟發(fā)式算法和正反饋機(jī)制有機(jī)結(jié)合的產(chǎn)物,這種結(jié)合容易出現(xiàn)早熟現(xiàn)象,加上求解速度慢以及初始信息匱乏等缺點(diǎn),將PSO引入到ACO中,使得螞群算法具有粒子群算法獨(dú)特的優(yōu)勢(shì),從而可以根據(jù)全局和局部最優(yōu)解及時(shí)進(jìn)行有效調(diào)整。
Input:n個(gè)數(shù)據(jù)對(duì)象的數(shù)據(jù)集D={X1,X2,…,Xn},聚類(lèi)數(shù)目K,粒子群體大小N,初始化種群P(0);
Output:最優(yōu)初始聚類(lèi)中心。
(1)在給定聚類(lèi)數(shù)下,隨機(jī)選定初始聚類(lèi)中心。首先按照K-Means算法隨機(jī)或者人為給定初始聚類(lèi)結(jié)果,然后通過(guò)計(jì)算粒子適應(yīng)度值進(jìn)行不斷調(diào)整并給定粒子的速度。重復(fù)操作反復(fù)進(jìn)行N次,共生成N個(gè)初始粒子群。
(2)對(duì)于粒子每一維適應(yīng)度值,將其與它所經(jīng)歷的最好位置pid的適應(yīng)值進(jìn)行比較,如果更好,按照式4和式5更新pid,反之則進(jìn)行下一步。
(3)對(duì)每個(gè)粒子適應(yīng)度值,將其和群體所經(jīng)歷的最好位置pgd的適應(yīng)值進(jìn)行比較,如果更好,按照式3更新pgd,反之則進(jìn)行下一步。
(4)對(duì)于新一代粒子,按照以下的蟻群算法優(yōu)化,得到新個(gè)體的K-Means優(yōu)化。
(a)對(duì)粒子的聚類(lèi)中心編碼,此步中信息素即為上述適應(yīng)度值,按照式1和式2進(jìn)行更新,以確定對(duì)所有粒子的聚類(lèi)劃分;
(b)按照聚類(lèi)劃分,計(jì)算新的聚類(lèi)中心,更新粒子的適應(yīng)度值,取代原來(lái)的編碼值。
(5)如果滿足結(jié)束條件(給定閾值或最大迭代次數(shù)),則結(jié)束,否則轉(zhuǎn)步驟2。
該實(shí)驗(yàn)是基于MATLAB平臺(tái)驗(yàn)證文中算法在處理大規(guī)模數(shù)據(jù)時(shí)的穩(wěn)定性和魯棒性,驗(yàn)證數(shù)據(jù)集來(lái)源于UCI機(jī)器學(xué)習(xí)網(wǎng)站,分別為Iris、Wine、Yeast三個(gè)分類(lèi)數(shù)據(jù)集。各個(gè)數(shù)據(jù)集的屬性特征如表2所示。
表2 數(shù)據(jù)集的屬性特征
為了驗(yàn)證改進(jìn)算法的穩(wěn)定性和魯棒性,從以下兩部分進(jìn)行討論求解。
根據(jù)文中提出的聚類(lèi)數(shù)K確定算法,求出三種數(shù)據(jù)集的個(gè)體輪廓系數(shù)圖,通過(guò)畫(huà)出其個(gè)體輪廓系數(shù)圖得到合理可視化的聚類(lèi)數(shù)目,如圖1所示。
圖1 三個(gè)數(shù)據(jù)集關(guān)于K值的輪廓系數(shù)
由圖1可知:
(1)針對(duì)數(shù)據(jù)集Iris,當(dāng)K值等于2時(shí),具有最大輪廓系數(shù),而數(shù)據(jù)集實(shí)際分為了三個(gè)類(lèi),而K值取4之后,輪廓系數(shù)的變化趨勢(shì)就不是特別明顯。
(2)針對(duì)數(shù)據(jù)集Wine,K值等于3時(shí),具有最大輪廓系數(shù),而數(shù)據(jù)集實(shí)際也是三類(lèi),當(dāng)K值取6之后,輪廓系數(shù)的變化趨勢(shì)就不是特別明顯。
(3)針對(duì)數(shù)據(jù)集Yeast,當(dāng)K值等于3時(shí),具有最大輪廓系數(shù),實(shí)際也是十類(lèi),而K值取4之后,輪廓系數(shù)的變化趨勢(shì)就不是特別明顯。
綜上,隨著K值的不斷增大,個(gè)體輪廓系數(shù)逐漸減小,并不能作為適應(yīng)度函數(shù)的評(píng)價(jià)標(biāo)準(zhǔn),所以需要選擇一個(gè)合適的適應(yīng)度函數(shù)—變化率函數(shù)。各數(shù)據(jù)集的個(gè)體輪廓系數(shù)變化率趨勢(shì)圖如圖2所示。
利用變化率函數(shù)來(lái)判斷最佳的聚類(lèi)個(gè)數(shù)K,通過(guò)計(jì)算得出數(shù)據(jù)集Iris,Wine,Yeast的最佳聚類(lèi)數(shù)為3,4,4。
圖2 三個(gè)數(shù)據(jù)集的相鄰輪廓系數(shù)間的變化率
由上一步可知,三個(gè)數(shù)據(jù)集的最佳聚類(lèi)數(shù)均已確定,那么接下來(lái)分別針對(duì)這三個(gè)數(shù)據(jù)集進(jìn)行初始聚類(lèi)中心的優(yōu)化。
確定選取粒子群大小均為N=30,當(dāng)三個(gè)數(shù)據(jù)集Iris,Wine,Yeast的最佳聚類(lèi)數(shù)分別為K=3,4,4,依次采用傳統(tǒng)K-Means算法,基于個(gè)體輪廓系數(shù)自適應(yīng)地選取優(yōu)秀樣本來(lái)確定初始聚類(lèi)中心的改進(jìn)算法(OICCABICC)以及文中算法(PSO-ACO),基于MATLAB對(duì)所提算法的有效性進(jìn)行驗(yàn)證。
首先,通過(guò)粒子群算法選取的30個(gè)粒子種群進(jìn)行加權(quán)求平均,得到問(wèn)題的次優(yōu)解,然后利用次優(yōu)解的類(lèi)內(nèi)路徑長(zhǎng)度,類(lèi)間形成的路徑長(zhǎng)度,作為蟻群算法信息素更新公式中的初始信息素,在蟻群算法中,螞蟻的個(gè)數(shù)等于粒子個(gè)數(shù),遍歷城市個(gè)數(shù)等于聚類(lèi)個(gè)數(shù)K,然后利用信息素更新公式得到最優(yōu)解。新算法避免了優(yōu)化過(guò)程中的搜索盲目性,并且加入了精確求解思想,從而顯示新算法在求解能力和時(shí)間效率上的對(duì)比,如表3和表4所示。
表3 新算法在求解能力上的優(yōu)勢(shì)比較
表4 新算法在求解效率上的優(yōu)勢(shì)比較
從以上結(jié)果可以看出,新算法較其他兩種算法在求解效率和優(yōu)化能力上有明顯的優(yōu)勢(shì)。首先經(jīng)過(guò)粒子群算法的優(yōu)化,初始聚類(lèi)中心得到了改善,不再是隨機(jī)或者人為給定,避免了傳統(tǒng)算法由于初期信息素缺乏而造成的盲目性,也有利于蟻群算法更精確的求解。
仿真實(shí)驗(yàn)表明,通過(guò)設(shè)定粒子群和以個(gè)體輪廓系數(shù)作為適應(yīng)度函數(shù)評(píng)價(jià)準(zhǔn)則,使得K-Means聚類(lèi)的最佳聚類(lèi)數(shù)目得以確定,個(gè)體輪廓系數(shù)結(jié)合粒子類(lèi)內(nèi)距離與類(lèi)間距離,判斷某個(gè)粒子被聚到某一類(lèi)的合理性,數(shù)值越大,表明某粒子的類(lèi)內(nèi)平均距離與類(lèi)間平均距離的差異性越大,即越合理;另外,通過(guò)設(shè)定粒子群,避免個(gè)體輪廓系數(shù)值陷入局部最優(yōu),文中將粒子群個(gè)數(shù)取30,30個(gè)粒子群的平均個(gè)體輪廓的系數(shù)值作為最終值。
初始聚類(lèi)中心優(yōu)化的好壞程度,主要體現(xiàn)在最終聚類(lèi)的時(shí)間性能和優(yōu)化性能上,文中算法的優(yōu)勢(shì)較其他算法均有體現(xiàn),具有可行性。并且該算法能夠應(yīng)用于所有類(lèi)型的數(shù)據(jù)集。此次實(shí)驗(yàn)數(shù)據(jù)是建立在小型數(shù)據(jù)平臺(tái)實(shí)現(xiàn)的,對(duì)于大數(shù)據(jù)平臺(tái)Hadoop應(yīng)用是下一步研究的重點(diǎn)。