資料探勘演算法之聚類分析(二)canopy演算法
canopy是聚類演算法的一種實現
它是一種快速,簡單,但是不太準確的聚類演算法
canopy通過兩個人為確定的閾值t1,t2來對資料進行計算,可以達到將一堆混亂的資料分類成有一定規則的n個數據堆
由於canopy演算法本身的目的只是將混亂的資料劃分成大概的幾個類別,所以它是不太準確的
但是通過canopy計算出來的n個類別可以用在kmeans演算法中的k值的確定(因為人為無法準確的確定k值到底要多少才合適,而有kmeans演算法本身隨機產生的話結果可能不是很精確。有關kmeans演算法的解釋請看點選開啟連結)
canopy演算法流程如下:
(1)確定兩個閾值t1,t2(確保t1一定大於t2)
(2)從資料集合中隨機選出一個數據,計算這個資料到canopy的距離(如果當前沒有canopy,則該點直接作為canopy)
(3)如果這個距離小於t1,則給這個資料標上弱標記,將t1加入這個canopy中(同時這個資料可以作為新的canopy來計算其他資料到這個點的距離)
(4)如果這個距離小於t2,則給這個資料標上強標記,並將其中資料集合中刪除,此時認為這個資料點距離該canopy已經足夠近了,不可能在形成新的canopy
(5)重複2-4的過程,直至資料集合中沒有資料
這裡的canopy指的是作為要劃分資料的中心點,以這個canopy為中心,t2為半徑,形成一個小圓。t1為半徑,形成一個大圓。在小圓範圍內的資料點被認為一定屬於這個canopy,不能作為一個新的canopy來劃分資料,而小圓範圍外,大圓範圍內的資料則又可以作為新的canopy來劃分資料
劃分完之後的資料類似下圖
虛線的圈是t2,實線的圈是t1
可以看到canopy演算法將可以將一堆雜亂的資料大致的劃分為幾塊
所以canopy演算法一般會和kmeans演算法配合使用來到達使用者的目的
在使用canopy演算法時,閾值t1,t2的確定是十分重要的
t1的值過大,會導致更多的資料會被重複迭代,形成過多的canopy;值過小則導致相反的效果
t2的值過大,會導致一個canopy中的資料太多,反之則過少
這樣的情況都會導致執行的結果不準確