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

2021-10-13 05:48:40 字數 1343 閱讀 6804

一、概念

與傳統的聚類演算法(比如k-means)不同,canopy聚類最大的特點是不需要事先指定k值(即clustering的個數),因此具有很大的實際應用價值。與其他聚類演算法相比,canopy聚類雖然精度較低,但其在速度上有很大優勢,因此可以使用canopy聚類先對資料進行「粗」聚類,得到k值後再使用k-means進行進一步「細」聚類。這種canopy+k-means的混合聚類方式分為以下兩步:

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

step2、在各個canopy內使用傳統的聚類方法(如k-means),不屬於同一canopy 的物件之間不進行相似性計算。

從這個方法起碼可以看出兩點好處:首先,canopy 不要太大且canopy 之間重疊的不要太多的話會大大減少後續需要計算相似性的物件的個數;其次,類似於k-means這樣的聚類方法是需要人為指出k的值的,通過stage1得到的canopy 個數完全可以作為這個k值,一定程度上減少了選擇k的盲目性。

二、聚類精度

對傳統聚類來說,例如k-means、expectation-maximization、greedy agglomerative clustering,某個物件與cluster的相似性是該點到cluster中心的距離,那麼聚類精度能夠被很好保證的條件是:

對於每個cluster都存在乙個canopy,它包含所有屬於這個cluster的元素。

如果這種相似性的度量為當前點與某個cluster中離的最近的點的距離,那麼聚類精度能夠被很好保證的條件是:

對於每個cluster都存在若干個canopy,這些canopy之間由cluster中的元素連線(重疊的部分包含cluster中的元素)。

資料集的canopy劃分完成後,類似於下圖:

三、canopy演算法流程

(1)、將資料集向量化得到乙個list後放入記憶體,選擇兩個距離閾值:t1和t2,其中t1 > t2,對應上圖,實線圈為t1,虛線圈為t2,t1和t2的值可以用交叉校驗來確定;

(2)、從list中任取一點p,用低計算成本方法快速計算點p與所有canopy之間的距離(如果當前不存在canopy,則把點p作為乙個canopy),如果點p與某個canopy距離在t1以內,則將點p加入到這個canopy;

(3)、如果點p曾經與某個canopy的距離在t2以內,則需要把點p從list中刪除,這一步是認為點p此時與這個canopy已經夠近了,因此它不可以再做其它canopy的中心了;

(4)、重複步驟2、3,直到list為空結束。

Canopy演算法實戰總結

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

機器學習 Canopy演算法

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

Canopy聚類演算法分析

canopy聚類演算法是可以並行執行的演算法,資料並行意味著可以多執行緒進行,加快聚類速度,開源ml庫mahout 使用。一 概念 與傳統的聚類演算法 比如 k means 不同,canopy 聚類最大的特點是不需要事先指定 k 值 即 clustering 的個數 因此具有很大的實際應用價值。與其...