1. 程式人生 > >劃分方法聚類(三) Canopy+K-MEANS 演算法解析

劃分方法聚類(三) 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按照一定的規則進行排序(這個規則是任意的,但是一旦確定就不再更改),初始距離閾值為T1T2,且T1 T2T1T2的設定可以根據使用者的需要,或者使用交叉驗證獲得)。

  2)在List中隨機挑選一個數據向量A,使用一個粗糙距離計算方式計算AList中其他樣本資料向量之間的距離d

  3)根據第2步中的距離d,把d小於T1的樣本資料向量劃到一個canopy中,同時把d小於T2的樣本資料向量從候選中心向量名單(這裡可以理解為就是List)中移除。

  4)重複第23步,直到候選中心向量名單為空,即

List為空,演算法結束。

  演算法原理比較簡單,就是對資料進行不斷遍歷,T2<dis<T1的可以作為中心名單,dis<T2的認為與canopy太近了,以後不會作為中心點,從list中刪除,這樣的話一個點可能屬於多個canopy。

       canopy效果圖如下:


        

  Canopy演算法優勢:

  1、Kmeans對噪聲抗干擾較弱,通過Canopy對比較小的NumPoint的Cluster直接去掉 有利於抗干擾。   2、Canopy選擇出來的每個Canopy的centerPoint作為Kmeans比較科學。 3、只是針對每個Canopy的內容做Kmeans聚類,減少相似計算的數量。
  總結起來就是四個關鍵詞:噪聲點,K值,K中心點,計算開銷。(儘管這個演算法準確性不是很理想,但是還是有用武之地的)    綜合Canopy演算法與K-MEANS演算法,於是有了Canopy+K-MEANS的混合演算法。   Canopy+K-MEANS演算法思路如下:

  Stage1、聚類最耗費計算的地方是計算物件相似性的時候,Canopy Method在第一階段選擇簡單、計算代價較低的方法計算物件相似性,將相似的物件放在一個子集中,這個子集被叫做Canopy,通過一系列計算得到若干CanopyCanopy之間可以是重疊的,但不會存在某個物件不屬於任何Canopy的情況,可以把這一階段看做資料預處理;

   Stage2在各個Canopy內使用傳統的聚類方法(K-means),不屬於同一Canopy的物件之間不進行相似性計算。從這個方法起碼可以看出兩點好處:首先,Canopy不要太大且Canopy之間重疊的不要太多的話會大大減少後續需要計算相似性的物件的個數;其次,類似於K-means這樣的聚類方法是需要人為指出K的值的,通過Stage1得到的Canopy個數完全可以作為這個K值,一定程度上減少了選擇K的盲目性。