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