本發明屬于聚類算法領域,具體涉及一種基于粗糙集和粒子群算法的改進模糊c-均值聚類算法。
背景技術:
聚類是將一個同類對象組群劃分為子集的過程,每個子集稱為一個簇,同一個簇中的對象之間具有較高的相似度,不同簇中的對象差別較大。聚類技術已被廣泛應用于數據挖掘,模式識別和機器學習。為處理這些隨機分布的數據集,將軟計算中引入了聚類,它利用不精確性和不確定性實現算法的可追蹤性和魯棒性,相應的模糊集和粗糙集也被引入到c均值體系中并衍生出模糊c均值(fcm)和粗糙c均值(rcm)算法。
模糊算法可以將數據對象分配到多個聚類并處理重疊聚類。模糊聚類中隸屬度取決于數據對象對聚類中心的貼近度。最流行的模糊聚類算法是由bezdek提出的fcm,現仍廣泛使用。fcm是一種有效的算法,但其中心點的隨機選擇使迭代過程容易陷入鞍點或者局部最優解。此外,如果數據集包含嚴重的噪聲點,或如果數據集是高維的,交替優化往往無法找到全局最優解。在這種情況下,通過采用隨機的方法就可以提高找到全局最優的概率。為了克服fcm的缺點,粗糙集的概念被引入算法,通過消除對聚類結構帶來負面影響的壞點來提高新原型的迭代效率,與fcm相比,粗糙c均值算法處理類簇邊緣數據的能力有所提高;而為了解決fcm早熟的問題,粒子群算法(pso)也被引入,利用其全局搜索能力尋找更為合適的聚類中心。
此外,雖然已有較多基于fcm、pso或粗糙集的聚類算法,但是這些算法大多需要輸入預估聚類的數目c。在一個給定的數據集合中為獲得理想的聚類結果,通常需要手動設置c的值,但這是一個非常主觀和隨意的過程。因此,我們希望找到在給定聚類數量范圍內c的最佳取值,通過考慮簇內緊湊性、簇間分散性以及降低對初始值的敏感程度,以便獲得合理的聚類分割。本發明提出了一種改進的算法rp-fcm,它集成了pso算法的優點,迭代時運用了粗糙集的特性,并可以快速地自動估計最佳聚類數目。
技術實現要素:
本發明的目的在于提供一種基于粗糙集和粒子群算法的改進模糊c-均值聚類算法,本發明利用粒子群優化算法的全局搜索能力來克服傳統模糊聚類的過早收斂問題,利用粗糙集模糊平衡屬性來處理類簇間的重疊以及類簇邊界的模型不確定性,利用db指數評價聚類的有效性,在給定的類簇數量范圍內自動尋找最優聚類數目,以提供緊湊且良好分隔的類簇。
本發明提出的一種基于粗糙集和粒子群算法的改進模糊c-均值聚類算法,具體步驟如下:
(1)初始化設定參數:給定聚類數量范圍[cmin,cmax],令初始聚類數量c=cmax,選取兩個計數器,第一計數器的疊代次數k,第二計數器的疊代次數t,pso的最大迭代次數t;
(2)初始化設定參數:根據pso,給定粒子數量l,粒子最初速度v,粒子最初位置p,第一計數器的加速系數c1,第二計數器的加速系數c2,慣性常數w,聚類基數閾值ε和損耗率ρ;
(3)初始化設定參數:設定模糊集上近似的權重ωup,下近似的權重ωlow,且ωup+ωlow=1,模糊隸屬度的加權指數m,閾值σ;
(4)根據步驟(1)-步驟(3)設定的參數,選取第二計數器,通過計算劃分矩陣、聚類中心、適應度值、個體極值、全局極值,以及更新每個粒子的速度和位置,重復步驟(4.1)-(4.7)看其是否達到pso算法的終止條件;
(4.1)計算所有待分類粒子的劃分矩陣u(k);
u=[uij]n×c為隸屬度矩陣,
其中:uij∈[0,1]表示數據對象xi關于聚類βj的隸屬程度,xi,βj∈rv,v是數據的維數,1≤i≤n和1≤j≤c,dij=d(xi,βj)是數據向量xi到聚類中心βj的歐氏距離即dij=||xi-βj||;
(4.2)計算所有待分類粒子的聚類中心:
其中:ukj表示粒子xk關于聚類βj的隸屬程度,cj表示類cj的下近似集合。
(4.3)計算每個粒子的適應度值f;
其中:uij∈[0,1]表示數據對象xi關于聚類βj的隸屬程度;
(4.4)計算每個粒子的個體極值pbest;
(4.5)計算群的全局極值gbest;
(4.6)根據pso算法中每個粒子的個體極值,群的全局極值,并更新每個粒子的速度和位置v(t+1)=wv(t)+c1r1(pbest(t)-p(t))+c2r2(gbest(t)-p(t))和p(t+1)=p(t)+v(t+1);
其中:粒子t時刻的速度v(t),位置p(t),第一加速器加速系數c1,第二加速器加速系數c2,慣性常數w;r1,r2是[0,1]之間的常數;
(4.7)令t=t+1;
(5)根據步驟(4)會出現達到pso算法的終止條件和未達到pso算法的終止條件兩種情況;
(5.1)當t≥t(達到最大迭代次數)或者經過多次迭代后更新速度接近于0,則符合達到pso算法的終止條件,則進入步驟(5.1.1)-(5.1.8);
(5.1.1)重新計算每個粒子的聚類中心βj;
(5.1.2)重置第j個聚類的uij(1≤i≤n);
(5.1.3)令ujk表示對象xk到所有類的最大隸屬度,ubk表示對象xk到所有類的次大隸屬度,如果ubk-ujk≤σ,那么
(5.1.4)根據mj=card{uij|uik-ujk>σ},計算每個聚類的基數mj(1≤j≤c);
(5.1.5)刪除所有mj<ε且mj≤最低基數
(5.1.6)更新聚類數量c;
(5.1.7)計算聚類有效性指數
(5.1.8)更新計數器k=k+1;
(5.1.8)當算法運行終止后,選擇對應最佳聚類數量c、有效性指數sdb、矩陣b和u作為最終的聚類原型劃分結果;
(5.2)對于未達到pso算法的終止條件,則重復步驟(4),直至在一定閾值δ內向量b中的原型參數趨于穩定;或聚類數量達到最低cmin,則結束。
本發明中,如果
本發明的優點在于能夠可以自動尋找最優聚類數目,自動地組織各種數據集并獲取準確的分類。
附圖說明
圖1為本發明流程圖;
圖2為實施例1的gds2712酵母基因表達數據集聚類數目c和db有效性指標間的關系。
具體實施方式
實施例1:以酵母基因表達數據集gds2712為例,其簇和樣本數量分別為15和9275。算法如下:
1)初始化:cmin=10,cmax=96,令c=cmax,計數器k=0,t=0,pso的最大迭代次數t=80,并采用規則c≤n1/2。
2)初始化:粒子數量l=20,令參數c1=1.49,c2=1.49,w=0.72,集群基數閾值ε=20,損耗率ρ=0.08。
3)初始化:ωup=0.9,ωlow=0.1,模糊因子m=2,閾值σ=0.28;
4)在未達到終止條件之前重復以下操作:
a.計算所有粒子的劃分矩陣u(k);
b.計算每個粒子的聚類中心βj;
c.計算每個粒子的適應度值f;
d.計算每個粒子的個體極值pbest;
e.計算群的全局極值gbest;
f.更新每個粒子的速度和位置;
g.令t=t+1;
5)接下來有如下兩種情況
情況一:達到pso算法的終止條件(*)
1.重新計算每個粒子的聚類中心βj;
2.重置第j個聚類的uij(1≤i≤n);
3.令ujk表示對象xk到所有類的最大隸屬度,ubk表示對象xk到所有類的次大隸屬度,如果ubk-ujk≤σ,那么
4.計算每個聚類的基數mj(1≤j≤c);
5.刪除所有mj<ε且mj≤最低基數
6.更新聚類數量c;
7.計算聚類有效性指數sdb(c);
8.更新計數器k=k+1;
情況二:沒有達到終止條件(**)
(*)在該方法中pso的終止條件是t≥t(達到最大迭代次數)或者經過多次迭代后速度更新接近于0;
(**)在以下任意情況下算法可以停止:
1.在一定閾值δ內向量b中原型參數趨于穩定;
2.聚類數量達到最低cmin。
這里需要注意的是,如果
通過以上步驟的計算,在每一個周期,我們得到每個集群分布,根據它們的基數去除一部分聚類,計算db指標并聚類數c從cmax變化到cmin。在結束循環后,選擇db最低值的劃分作為最終結果。如附圖1所示,對于gds2712,從c=96降低到c=20需要24次迭代,從c=20降低到c=15需要6次迭代,當聚類數c<15時db指標開始上升。
在設定數據集gds2712的最佳聚類數c之后,表1列出了不同算法的有效性指數。從表格中可以發現rp-fcm和srcm取得較為一致的效果,且優于其他聚類算法。其原因為pso的全局搜索能力有利于找到更合適的聚類中心,而且避免了算法過早收斂于局部最優值。
表1針對酵母基因表達數據集算法fcm,rcm,scm,srcm和rp-fcm的性能對比