聚類算法(二)--Kmeans++、elkan K-Means、Mini Batch K-Means、Sequential Leader Clustering


上文原始Kmeans提到,由於Kmeans使用啟發式迭代,所以當初始點不當時,導致得不到全局最優。

Kmeans++

這個算法思想也很簡單,與原始Kmeans唯一不同的是選擇初始點的方式。

如圖

 

假設,我們的樣本如上圖分布,准備選擇3個初始點,即k=3。

第一,我隨機選擇了1作為初始點,求所有樣本點與已選擇的聚類中心中最近聚類中心的距離(現在只有點1),求出其他所有點與點1的距離D(xi),選擇最大的。

第二,我們現在選到了點9作為初始點(與1距離最遠),然后所有樣本點與已選擇的聚類中心中最近聚類中心的距離,對於點2,3,4,5,6應求到1的距離,7,8求到9的距離,取最大的D(x),

應該是點1到點4最大,那么點4倍被選為初始點。

那么一共選出了點1,9,4作為初始點。

 可以重復一、二步驟,選出多個初始點。

 

elkan K-Means

Kmeans一文我們知道,一次質心的更新需要將所有樣本點到質心的距離都算一次,比較耗時

elkan K-Means的思想是

針對一個樣本點,兩個質心,如果提前知道質心之間的距離D(a1,a2),那么

當2D(x,a1)≤D(a1,a2), 必有D(x,a1)≤D(x,a2),不必計算D(x,a2)

這一條不太明白,原理是三角形任意一邊大於等於其他兩邊之差,怎么簡化計算,不得而知

 

大樣本Mini Batch K-Means

思想更簡單,對大樣本進行無放回隨機抽樣,抽取多次保證准確性。 

 

Sequential Leader Clustering

這種方法不用預先設定K值,不需要迭代,只需將數據過一遍。需要設定一個閾值T。

用下圖說明該思想

第一,任意一個數據點(假如是點1)作為質心,依次算出其他2-9到質心1的距離d,若d<T(閾值),認為這兩個點屬於一個簇

第二,若某樣本點與現有質心的距離大於閾值T,則將這個點作為另一個質心。

重復上述兩步

缺點:閾值的設定沒有依據。

 

 

 

參考https://www.cnblogs.com/pinard/p/6164214.html

https://www.bilibili.com/video/av23933161/?p=30


免責聲明!

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



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