簡單比較k-means和k-medoids


簡單對比一下這兩者的區別。兩者的主要區別主要在質心的選擇中,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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM