本發(fā)明屬于聚類分析技術(shù)領(lǐng)域,涉及一種基于多點(diǎn)張力模型的快速聚類方法。
背景技術(shù):
聚類分析是一種重要的無(wú)監(jiān)督學(xué)習(xí)方法,在數(shù)據(jù)的內(nèi)在結(jié)構(gòu)識(shí)別方面起到了不可替代的作用。聚類是根據(jù)數(shù)據(jù)對(duì)象相似度,把未知分類的數(shù)據(jù)集分割成不同的類或簇,使同一簇內(nèi)的數(shù)據(jù)對(duì)象具有最大相似性,不同簇間的數(shù)據(jù)對(duì)象具有最小相似性。聚類分析在機(jī)器學(xué)習(xí)、模式識(shí)別、數(shù)據(jù)挖掘、圖像處理等領(lǐng)域已經(jīng)得到了廣泛研究和應(yīng)用。
k-means算法是最經(jīng)典的聚類算法之一,其簡(jiǎn)單、高效,具有良好的局部搜索能力,得到了廣泛應(yīng)用及研究。但存在過(guò)于依賴初始聚類中心、容易陷入局部最優(yōu)等缺陷。近年來(lái),群體智能算法以其良好的全局尋優(yōu)能力得到越來(lái)越多的關(guān)注,并成功運(yùn)用到聚類分析領(lǐng)域。許多學(xué)者針對(duì)初始聚類中心的選取進(jìn)行不同的改進(jìn),在一定程度上改善了聚類效果,提高了算法聚類結(jié)果的質(zhì)量,但仍可能陷入局部最優(yōu)。
技術(shù)實(shí)現(xiàn)要素:
有鑒于此,本發(fā)明的目的在于利用人工蜂群算法模型,提供一種基于多點(diǎn)張力模型的快速聚類方法,利用當(dāng)前全局最優(yōu)解和次優(yōu)解,并結(jié)合物理學(xué)的張力模型,使可能會(huì)陷入局部最優(yōu)的解移動(dòng)到更加合理的位置,避免算法陷入局部最優(yōu)。該聚類方法在全局搜索階段,引入丟棄算子使算法跳出局部最優(yōu)。在局部搜索階段,結(jié)合遺傳算法中的交叉算子和變異算子提高了算法收斂速度和解的多樣性。該聚類方法適用不同規(guī)模、多種類型的數(shù)據(jù)集,具有較強(qiáng)的伸縮性和健壯性。
為達(dá)到上述目的,本發(fā)明提供如下技術(shù)方案:
一種基于多點(diǎn)張力模型的快速聚類方法,包括以下步驟:
步驟一:初始階段,從uci數(shù)據(jù)集庫(kù)中選取某個(gè)數(shù)據(jù)集,設(shè)定控制參數(shù)的值后,選取一定數(shù)量的蜜源,一個(gè)蜜源代表一個(gè)解,蜜源的質(zhì)量代表解的適應(yīng)度;將蜜源隨機(jī)分布在空間中,蜜源的位置即為聚類中心位置;
步驟二:引領(lǐng)蜂先在蜜源鄰域搜索新的解,搜索方式按照公式vi=xi+ri(xi-xh)進(jìn)行,其中i,h∈{1,2,…,n},n表示初始解的數(shù)量,vi是新的蜜源,xi是舊蜜源,ri是[-1.1]內(nèi)的隨機(jī)數(shù);如果vi的適應(yīng)度比xi高,則替代xi,否則xi保持不變;
步驟三:當(dāng)所有引領(lǐng)蜂完成搜索行為后,評(píng)估所有解的適應(yīng)度,跟隨蜂按照概率值pi選擇新的蜜源,pi根據(jù)公式
步驟四:引入交叉算子
步驟五:若某個(gè)解xs經(jīng)過(guò)limit次迭代后沒(méi)有找到更合適的解來(lái)替代它,則該xs將被丟棄;重新評(píng)估所有解的適應(yīng)度;引入丟棄算子并結(jié)合物理學(xué)的張力模型使算法跳出局部最優(yōu),使陷入局部最優(yōu)的解xs移動(dòng)到更加合理的位置;選擇當(dāng)前最好的解xg和次好解xb,找到xg和xb的中間位置xc=(xg+xb)/2;對(duì)xc進(jìn)行反射拓展得到新的解xr的位置xr=xc+α2(xc-xs),其中α2是反射系數(shù),設(shè)α2為1;
步驟六:當(dāng)fxr>fxg,再次進(jìn)行拓展操作:xe=xc+γ(xr-xc),其中xe為拓展點(diǎn),γ是拓展系數(shù),設(shè)γ為2;如果fxe>fxg,則用xe替代xs,否則xr將替代xs;
當(dāng)fxr<fxs,將進(jìn)行壓縮操作:xt=xc+β2(xs-xc),其中xt為xs壓縮后的點(diǎn),β2為壓縮系數(shù),設(shè)β2為0.5,如果fxt>fxs,則用xt替代xs,否則xs保持不變;
當(dāng)fxs<fxr<fxg,將進(jìn)行收縮操作:xw=xc-β3(xs-xc),其中xw為收縮后的點(diǎn),β3為收縮系數(shù),設(shè)β3為0.5,如果fxw>fxs,則xw將替代xs,否則用xr替代xs;
步驟七:不斷進(jìn)行迭代,當(dāng)滿足終止條件,算法終止。
本發(fā)明的有益效果在于:本發(fā)明在全局搜索階段,引入丟棄算子使算法跳出局部最優(yōu)。在局部搜索階段,結(jié)合遺傳算法中的交叉算子和變異算子提高了算法收斂速度和解的多樣性。該聚類方法適用不同規(guī)模、多種類型的數(shù)據(jù)集,具有較強(qiáng)的伸縮性和健壯性。
附圖說(shuō)明
為了使本發(fā)明的目的、技術(shù)方案和有益效果更加清楚,本發(fā)明提供如下附圖進(jìn)行說(shuō)明:
圖1為全局搜索階段不同解的示意圖;
圖2為實(shí)施例程序流程圖;
圖3為實(shí)施例得到的最終聚類效果圖。
具體實(shí)施方式
下面將結(jié)合附圖,對(duì)本發(fā)明的優(yōu)選實(shí)施例進(jìn)行詳細(xì)的描述。
s1:選取uci中的iris數(shù)據(jù)集,設(shè)定初始蜜源數(shù)量n,引領(lǐng)蜂和跟隨蜂數(shù)量m,其他參數(shù)根據(jù)相應(yīng)范圍選取合適的值;
s2:引領(lǐng)蜂尋找蜜源(解)活動(dòng)結(jié)束后,跟隨蜂依據(jù)相關(guān)信息,再次尋找蜜源(解),因此首先判斷當(dāng)前蜜蜂是否是引領(lǐng)蜂,如果當(dāng)前蜜蜂為引領(lǐng)蜂:
進(jìn)一步:依據(jù)變異算子,找到新的解,判斷新解的適應(yīng)度是否大于舊的解;
進(jìn)一步:如果新解的適應(yīng)度大于舊解適應(yīng)度,則用新的解取代舊的解,否則舊解保持不變,此時(shí)記錄舊解沒(méi)有更新次數(shù)s=s+1;
進(jìn)一步:如果s大于閾值limit,即當(dāng)前解經(jīng)過(guò)limit次搜索均沒(méi)有找到更好的解,則放棄當(dāng)前解,該位置上的蜜蜂變?yōu)閭刹榉?,根?jù)丟棄算子,重新產(chǎn)生新的解;
s3:如果當(dāng)前蜜蜂為跟隨蜂:
進(jìn)一步:依據(jù)交叉算子,找到新的解,判斷新解的適應(yīng)度是否大于舊的解;
進(jìn)一步:如果新解的適應(yīng)度大于舊解適應(yīng)度,則用新的解取代舊的解,否則舊解保持不變,此時(shí)記錄舊解沒(méi)有更新次數(shù)s=s+1;
進(jìn)一步:如果s大于閾值limit,即當(dāng)前解經(jīng)過(guò)limit次搜索均沒(méi)有找到更好的解,則放棄當(dāng)前解,該位置上的蜜蜂變?yōu)閭刹榉?,根?jù)丟棄算子,重新產(chǎn)生新的解;
s4;判斷所有蜜源是否完成搜索和更新活動(dòng);
進(jìn)一步:如果不是所蜜源群完成搜索和更新活動(dòng)返回s2;
s5:當(dāng)所有蜜源完成搜索和更新活動(dòng)后,記錄當(dāng)前最好的解的適應(yīng)度值;
s6:判斷算法是否滿足終止條件;
進(jìn)一步:如果算法沒(méi)有滿足終止條件,則返回s2;否則算法終止。
如圖1所示,為全局搜索階段不同解的示意圖,結(jié)合上述過(guò)程,畫出本實(shí)施例的流程圖,如圖2所示,具體釋義如下:
步驟101:算法開始運(yùn)行;
步驟102:初始階段,從uci數(shù)據(jù)集庫(kù)中選取某個(gè)數(shù)據(jù)集,設(shè)置相應(yīng)參數(shù),選取初始種群數(shù)量n,引領(lǐng)蜂、跟隨蜂數(shù)量均為m;
步驟103:判斷當(dāng)前蜜蜂是否是引領(lǐng)蜂;
步驟104:如果當(dāng)前蜜蜂為跟隨蜂,跟隨蜂根據(jù)每個(gè)引領(lǐng)蜂產(chǎn)生解的適應(yīng)度的概率值,再結(jié)合交叉算子,產(chǎn)生新的解,如果新解的適應(yīng)度大于舊的解,則用新的解替換舊的解,否則保持不變,記錄s=s+1;
步驟105:判斷當(dāng)前解經(jīng)過(guò)limit次搜索是否均沒(méi)有找到更好的解,即s>limit;
步驟106:如果s>limit,放棄原始解,該位置上的蜜蜂變?yōu)閭刹榉?,根?jù)丟棄算子,重新產(chǎn)生新的解,使算法跳出局部最優(yōu),跳到步驟110;
步驟107:承接步驟103,如果當(dāng)前蜜蜂是引領(lǐng)蜂,則根據(jù)變異算子,產(chǎn)生新的解,如果新解的適應(yīng)度大于舊的解,則用新的解替換舊的解,否則保持不變,記錄s=s+1;
步驟108:判斷當(dāng)前解經(jīng)過(guò)limit次搜索是否均沒(méi)有找到更好的解,即s>limit;
步驟109:如果s>limit,放棄原始解,該位置上的蜜蜂變?yōu)閭刹榉洌鶕?jù)丟棄算子,重新產(chǎn)生新的解,使算法跳出局部最優(yōu),跳到步驟110;
步驟110:已經(jīng)完成搜索活動(dòng)的蜜蜂數(shù)量i=i+1;
步驟111:判斷是否所有蜜蜂均完成搜索活動(dòng),如果不是所有蜜蜂均完成搜索活動(dòng),返回步驟103;
步驟112:承接步驟111,所有蜜蜂均完成搜索活動(dòng)后,評(píng)估當(dāng)前所有蜜源(解)的適應(yīng)度,并記錄當(dāng)前最好的解;
步驟113:判斷算法是否滿足終止條件,當(dāng)算法不滿足終止條件時(shí),返回步驟113;
步驟114:承接步驟113,當(dāng)算法滿足終止條件時(shí),輸出最優(yōu)解,如圖3所示,算法終止。
最后說(shuō)明的是,以上優(yōu)選實(shí)施例僅用以說(shuō)明本發(fā)明的技術(shù)方案而非限制,盡管通過(guò)上述優(yōu)選實(shí)施例已經(jīng)對(duì)本發(fā)明進(jìn)行了詳細(xì)的描述,但本領(lǐng)域技術(shù)人員應(yīng)當(dāng)理解,可以在形式上和細(xì)節(jié)上對(duì)其作出各種各樣的改變,而不偏離本發(fā)明權(quán)利要求書所限定的范圍。