canopy算法流程_Canopy聚类算法(经典,看图就明白)
只有這個算法思想比較對,其他?的都沒有一開始的remove:?原網址:http://www.shahuwang.com/?p=1021
Canopy?Clustering?這個算法是2000年提出來的,此后與Hadoop配合,已經成為一個比較流行的算法了。確切的說,這個算法獲得的并不是最終結果,它是為其他算法服務的,比如k-means算法。它能有效地降低k-means算法中計算點之間距離的復雜度。Mahout中已經實現了這個算法,不知道其他的機器學習類庫和工具中,有多少是實現了這個算法的。感覺上這個算法要實現不難,難在和Hadoop如何結合上。Hadoop完全不懂,這里我就不說那么多了。
好書推薦
圖中有一個T1,一個T2,我們稱之為距離閥值,顯然T1>T2,這兩個值有什么用呢?我們先確定了一個中心,然后計算其他點到這個中心間的距離,當距離大于T1時,小于T1大于T2時,小于T2時,對這個點的處理都是不一樣的。http://micahlabrams.blogspot.com/2011/10/canopy-clustering.html?這篇文章提供了一個很好的偽代碼,我覺得看完之后,加上我稍加的解釋,就能明白canopy聚類的實現過程了:
while?D?is?not?empty
select?element?d?from?D?to?initialize?canopy?c
remove?d?from?D
Loop?through?remaining?elements?in?D
if?distance?between?d_i?and?c?
if?distance?between?d_i?and?c?
end
add?canopy?c?to?the?list?of?canopies?C
end
這里有幾點要說明的:D指代一組數據,d_i表示D中的各個數據。
是不是還不夠明白?下面用中文進行說明:
1:給我一組存放在數組里面的數據D
2:給我兩個距離閾值T1,T2,且T1>T2
3:隨機取D中的一個數據d作為中心,并將d從D中移除
4:計算D中所有點到d的距離distance
5:將所有distance
6:將所有distance
7:重復步驟4到6,直到D為空,形成多個canopy類
通過上面的描述,能理解T1和T2的作用了否?當與中心的距離大于T1時,這些點就不會被歸入到中心所在的這個canopy類中。然當距離小于T1大于T2時,這些點會被歸入到該中心所在的canopy中,但是它們并不會從D中被移除,也就是說,它們將會參與到下一輪的聚類過程中,成為新的canopy類的中心或者成員。亦即,兩個Canopy類中有些成員是重疊的。這是canopy比較關鍵和高明的地方了,當然內在的高明之處我也講不出來,水平不夠。而當距離小于T2的時候,這些點就會被歸入到該中心的canopy類中,而且會從D中被移除,也就是不會參加下一次的聚類過程了。
不知道現在能明白了否?
總結
以上是生活随笔為你收集整理的canopy算法流程_Canopy聚类算法(经典,看图就明白)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: matlab模拟简单孔径衍射图样,夫琅和
- 下一篇: [导入]WCF后传系列(6):消息如何传