簡單對比一下這兩者的區別。兩者的主要區別主要在質心的選擇中,k-means是樣本點均值,k-medoids則是從樣本點中選取。
首先給出兩者的算法實現步驟:
K-means
1、隨機選取K個質心的值
2、計算各個點到質心的距離
3、將點的類划分為離他最近的質心,形成K個cluster
4、根據分類好的cluster,在每個cluster內重新計算質心(平均每個點的值)
5、重復迭代2-4步直到滿足迭代次數或誤差小於指定的值
K-medoids
1、隨機選取K個質心的值 (質心必須是某些樣本點的值,而不是任意值)
2、計算各個點到質心的距離
3、將點的類划分為離他最近的質心,形成K個cluster
4、根據分類好的cluster,在每個cluster內重新計算質心:
4.1 計算cluster內所有樣本點到其中一個樣本點的曼哈頓距離和(絕對誤差)
4.2 選出使cluster絕對誤差最小的樣本點作為質心
5、重復迭代2-4步直到滿足迭代次數或誤差小於指定的值
以上就可以看出兩者之間的區別:
k-means的質心是各個樣本點的平均,可能是樣本點中不存在的點。k-medoids的質心一定是某個樣本點的值。
這個不同使他們具有不同的優缺點。
1、k-medoids的運行速度較慢,計算質心的步驟時間復雜度是O(n^2),因為他必須計算任意兩點之間的距離。而k-means只需平均即可。
2、k-medoids對噪聲魯棒性比較好。例:當一個cluster樣本點只有少數幾個,如(1,1)(1,2)(2,1)(100,100)。其中(100,100)是噪聲。如果按照k-means質心大致會處在(1,1)(100,100)中間,這顯然不是我們想要的。這時k-medoids就可以避免這種情況,他會在(1,1)(1,2)(2,1)(100,100)中選出一個樣本點使cluster的絕對誤差最小,計算可知一定會在前三個點中選取。
以上。雖然k-medoids也有優點,但是他只能對小樣本起作用,樣本一大,他的速度就太慢了,而且當樣本多的時候,少數幾個噪音對k-means的質心影響也沒有想象中的那么重,所以k-means的應用明顯比k-medoids多的多。
————————————————
版權聲明:本文為CSDN博主「databatman」的原創文章,遵循CC 4.0 BY-SA版權協議,轉載請附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/databatman/article/details/50445561