1. 程式人生 > >資料探勘演算法之聚類分析(二)canopy演算法

資料探勘演算法之聚類分析(二)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中的資料太多,反之則過少

這樣的情況都會導致執行的結果不準確