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中心點演算法中,每次迭代後的質點都是從聚類的樣本點中選取,而選取的標準就是當該樣本點成為新的質點後能提高類簇的聚類質量,使得類簇更緊湊。該演算法使用絕對誤差標準來定義乙個類簇的緊湊程度。
(p是空間中的樣本點,oj是類簇cj的質點)
如果某樣本點成為質點後,絕對誤差能小於原質點所造成的絕對誤差,那麼
k中心點演算法認為該樣本點是可以取代原質點的,在一次迭代重計算類簇質點的時候,我們選擇絕對誤差最小的那個樣本點成為新的質點。
eg:樣本點
a –>e1=10
樣本點b –>e2=11
樣本點c –>e3=12
原質點o–>e4=13
,那我們選舉
a作為類簇的新質點。
與k-means
演算法一樣,
k-medoids
也是採用歐幾里得距離來衡量某個樣本點到底是屬於哪個類簇。終止條件是,當所有的類簇的質點都不在發生變化時,即認為聚類結束。
該演算法除了改善
k-means
的「雜訊」敏感以後,其他缺點和
k-means
一致,並且由於採用新的質點計算規則,也使得演算法的時間複雜度上公升:o(
k(n-k)2
)
聚類分析 k中心點演算法
思想 k means是每次選簇的均值作為新的中心,迭代直到簇中物件分布不再變化。其缺點是對於離群點是敏感的,因為乙個具有很大極端值的物件會扭曲資料分布。那麼我們可以考慮新的簇中心不選擇均值而是選擇簇內的某個物件,只要使總的代價降低就可以。pam partitioning around medoid,...
KMeans演算法的K值以及初始類簇中心點的選取
kmeans演算法是最常用的聚類演算法,主要思想是 在給定k值和k個初始類簇中心點的情況下,把每個點 亦即資料記錄 分到離其最近的類簇中心點所代表的類簇中,所有點分配完畢之後,根據乙個類簇內的所有點重新計算該類簇的中心點 取平均值 然後再迭代的進行分配點和更新類簇中心點的步驟,直至類簇中心點的變化很...
放假第7天 K means 演算法 隨機中心點
學而思,每日寫 時間過得好快啊!import numpy as np def loaddataset filename 我這裡先想一下 open fr.readlines datamat fr open filename for line in fr.readlines curline line.s...