劃分方法聚類(三) Canopy+K-MEANS 演算法解析
前面的博文已經系統的講述了K-MEANS演算法以及由K-MEANS演算法改進而來的一系列演算法。在這裡我們將Canopy與K-MEANS聯絡起來。
首先講一下前面提到的Canopy演算法。
Canopy演算法
與傳統的聚類演算法(比如K-means)不同,Canopy聚類最大的特點是不需要事先指定k值(即clustering的個數),因此具有很大的實際應用價值。與其他聚類演算法相比,Canopy聚類雖然精度較低,但其在速度上有很大優勢,因此可以使用Canopy聚類先對資料進行“粗”聚類,得到k值,以及大致的K歌中心點,再使用K-means進行進一步“細”聚類。所以Canopy+K-means
Canopy演算法解析:
1)原始資料集合List按照一定的規則進行排序(這個規則是任意的,但是一旦確定就不再更改),初始距離閾值為T1、T2,且T1> T2(T1、T2的設定可以根據使用者的需要,或者使用交叉驗證獲得)。
2)在List中隨機挑選一個數據向量A,使用一個粗糙距離計算方式計算A與List中其他樣本資料向量之間的距離d。
3)根據第2步中的距離d,把d小於T1的樣本資料向量劃到一個canopy中,同時把d小於T2的樣本資料向量從候選中心向量名單(這裡可以理解為就是List)中移除。
4)重複第2、3步,直到候選中心向量名單為空,即
演算法原理比較簡單,就是對資料進行不斷遍歷,T2<dis<T1的可以作為中心名單,dis<T2的認為與canopy太近了,以後不會作為中心點,從list中刪除,這樣的話一個點可能屬於多個canopy。
canopy效果圖如下:
Canopy演算法優勢:
1、Kmeans對噪聲抗干擾較弱,通過Canopy對比較小的NumPoint的Cluster直接去掉 有利於抗干擾。 2、Canopy選擇出來的每個Canopy的centerPoint作為Kmeans比較科學。 3、只是針對每個Canopy的內容做Kmeans聚類,減少相似計算的數量。Stage1、聚類最耗費計算的地方是計算物件相似性的時候,Canopy Method在第一階段選擇簡單、計算代價較低的方法計算物件相似性,將相似的物件放在一個子集中,這個子集被叫做Canopy,通過一系列計算得到若干Canopy,Canopy之間可以是重疊的,但不會存在某個物件不屬於任何Canopy的情況,可以把這一階段看做資料預處理;
Stage2、在各個Canopy內使用傳統的聚類方法(如K-means),不屬於同一Canopy的物件之間不進行相似性計算。從這個方法起碼可以看出兩點好處:首先,Canopy不要太大且Canopy之間重疊的不要太多的話會大大減少後續需要計算相似性的物件的個數;其次,類似於K-means這樣的聚類方法是需要人為指出K的值的,通過Stage1得到的Canopy個數完全可以作為這個K值,一定程度上減少了選擇K的盲目性。