mahout之canopy演算法簡單理解

2022-05-06 05:27:08 字數 1111 閱讀 5270

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中的資料太多,反之則過少

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

canopy演算法流程 Canopy聚類演算法

一 概念 與傳統的聚類演算法 比如k means 不同,canopy聚類最大的特點是不需要事先指定k值 即clustering的個數 因此具有很大的實際應用價值。與其他聚類演算法相比,canopy聚類雖然精度較低,但其在速度上有很大優勢,因此可以使用canopy聚類先對資料進行 粗 聚類,得到k值後...

Canopy演算法實戰總結

通過canopy演算法實戰了解了mapreduce的coding套路,job input output format map reduce configuration等的設定,檔案序列化和反序列化sequencefile 理解文章要感謝mahout 原始碼解析之聚類 canopy演算法 下面大概說收...

機器學習 Canopy演算法

原理 先設定兩個先驗值r1,r2,我把他們理解為內圈外圈,大家可以跟我學。將所有樣本放入乙個列表,隨機選乙個樣本拿出來作為第乙個簇的簇中心點,然後從列表中剩下的所有樣本中隨機抽取乙個,計算其與簇中心點的距離。如果大於外圈r1,則不屬於此簇,而是拿出去單獨成為一簇,並作為簇中心點,從列表中刪除此樣本 ...