學習k-means++演算法前,需要先學習k-means演算法,可以參考這篇部落格看得懂的k-means
既然了解了k-means演算法,那麼我們來對比下k-means++有什麼變化。
首先k-means最大的問題就是對初始點選擇特別敏感,那麼我們就乙個乙個選,而不是k個一起選。
步驟與k-means類似:
從輸入的資料集中隨機選取乙個點作為第乙個中心點;
對每乙個點分別計算到已選取的中心點的距離;
按照輪盤法選擇乙個新的點作為新的中心點,選取的原則是:距離較大的點,有較大的概率被選取;
重複步驟2,3直到k個中心點被選出;
利用這k個中心點作為初始點執行k-means演算法。
注意:是較大概率,而不是就選最遠的點,為了避免雜訊
所以,這個點應該怎麼選呢?
迭代所有點,把所有點到該中心點的距離算出,記錄到距離陣列中(d1、d2…dn),分別代表第n個點到中心點的最短距離。(值得注意的是,這裡的最短距離是指該點離中心點這一陣列中所有中心點距離中的最短距離,也就是說,假設已經選出了兩個中心點,那麼迭代所有點的時候,就要把每個點分別與兩個中心點計算距離,然後選擇其中最短的距離作為該點的dn)
把所有的dn加起來sum(dn),隨機乙個不超過dn的數r,然後迭代所有dn,計算r-=dn,直至r<0,此時的點即為新的簇中心點。
迭代2、3步驟,直至選出所有中心點。
個人理解,該方法選取中心點的關鍵在於,計算出所有點到中心點的距離和,然後若dn越大,亦即該點距離中心點越遠,與我們隨機出來的r相減少後,r就越有可能小於0,也就越有可能被選做中心點。也就滿足我們選擇點離散這一條件。
學習筆記 K means演算法
在資料探勘中,k means演算法是一種cluster analysis的演算法,其主要是來計算資料聚集的演算法,主要通過不斷地取離種子點最近均值的演算法。問題k means演算法主要解決的問題如下圖所示。我們可以看到,在圖的左邊有一些點,我們用肉眼可以看出來有四個點群,但是我們怎麼通過電腦程式找出...
學習筆記 K means演算法
我們先來看一下乙個k means的聚類效果圖 隨機設定k個特徵空間內的點作為初始的聚類中心 對於其他每個點計算到k個中心的距離,未知的點選擇最近的乙個聚類中心點作為標記類別 接著對著標記的聚類中心之後,重新計算出每個聚類的新中心點 平均值 如果計算得出的新中心點與原中心點一樣,那麼結束,否則重新進行...
K means演算法的學習筆記
感謝吳教授的講述 今天在學習k means演算法 首先我們需要了解並且確定的是 在k means演算法中,隨著迭代次數的增多,損傷函式的值會不斷下降,而不會出現公升高的情況。也就是說,如果我們繪製出當前k means方法的損失函式的曲線,而發現出現在某次迭代時,出現損失函式值上公升的情況,那麼肯定是...