K中心點算法(K-medoids)
前面介紹了k-means算法,並列舉了該算法的缺點。而K中心點算法(K-medoids)正好能解決k-means算法中的 “噪聲”敏感這個問題。
如何解決的呢?
首先,我們得介紹下k-means算法爲什麼會對“噪聲”敏感。還記得K-means尋找質點的過程嗎?對某類簇中所有的樣本點維度求平均值,即獲得該類簇質點的維度。當聚類的樣本點中有“噪聲”(離羣點)時,在計算類簇質點的過程中會受到噪聲異常維度的干擾,造成所得質點和實際質點位置偏差過大,從而使類簇發生“畸變”。
Eg: 類簇C1中已經包含點A(1,1)、B(2,2)、 C(1,2)、 D(2,1), 假設N(100,100)爲異常點,當它納入類簇C1時,計算質點Centroid((1+2+1+2+100)/5,(1+2+2+1+100)/5)=centroid(21,21),此時可能造成了類簇C1質點的偏移,在下一輪迭代重新劃分樣本點的時候,將大量不屬於類簇C1的樣本點納入,因此得到不準確的聚類結果。
爲了解決該問題,K中心點算法(K-medoids)提出了新的質點選取方式,而不是簡單像k-means算法採用均值計算法。在K中心點算法中,每次迭代後的質點都是從聚類的樣本點中選取,而選取的標準就是當該樣本點成爲新的質點後能提高類簇的聚類質量,使得類簇更緊湊。該算法使用絕對誤差標準來定義一個類簇的緊湊程度。
如果某樣本點成爲質點後,絕對誤差能小於原質點所造成的絕對誤差,那麼K中心點算法認爲該樣本點是可以取代原質點的,在一次迭代重計算類簇質點的時候,我們選擇絕對誤差最小的那個樣本點成爲新的質點。
Eg:樣本點A –>E1=10
樣本點B –>E2=11
樣本點C –>E3=12
原質點O–>E4=13,那我們選舉A作爲類簇的新質點。
與K-means算法一樣,K-medoids也是採用歐幾里得距離來衡量某個樣本點到底是屬於哪個類簇。終止條件是,當所有的類簇的質點都不在發生變化時,即認爲聚類結束。