一、算法簡介
聚是一個將數據集中在某些方面相似的數據成員進行分類組織的過程,聚類就是一種發現這種內在結構的技術,聚類技術經常被稱爲無監督學習。
k均值聚類是最著名的劃分聚類算法,由於簡潔和效率使得他成爲所有聚類算法中最廣泛使用的。
二、算法描述
-
簡介
隨機選取K個對象作爲初始的聚類中心,然後計算每個對象與各個種子聚類中心之間的距離,把每個對象分配給距離它最近的聚類中心。聚類中心以及分配給它們的對象就代表一個聚類。
每分配一個樣本,聚類的聚類中心會根據聚類中現有的對象被重新計算。這個過程將不斷重複直到滿足某個終止條件。
終止條件可以是沒有(或最小數目)對象被重新分配給不同的聚類,沒有(或最小數目)聚類中心再發生變化,誤差平方和局部最小。
-
算法步驟
算法輸入:數據集 N,聚類數 K
算法輸出:聚類代表集合 C
算法流程:
step 1 :從整個數據集 N 中,隨機選取 K 個樣本對象作爲初始簇中心;
step 2 :計算每個樣本對象到各個簇中心的距離;
step 3 :找到每個樣本對象到簇中心的最短距離,並把每個樣本對象分配給距離最近的簇中心;
step 4 :計算同一簇中對象的均值,更新簇中心;
step 5 :重複step 2 ~ step 4 ,直到簇中心不再發生改變; -
二分k-means 算法
二分k-means 算法是k-means 算法的改進算法。該算法是將所有的點作爲一個簇,然後將該簇一分爲二,之後選擇其中的一個簇繼續劃分,對選定的簇進行多次二分試驗。選擇哪一個簇進行劃分取決於對其劃分是否可以最大程度的降低誤差平方和。使用k-means 算法將可分裂的簇分爲兩簇。重複上述基於誤差平方和的劃分過程,直到滿足迭代關係。
該算法能夠克服k-means收斂於局部最小的缺點
三、小結
- k-means 算法是一種廣泛應用的經典聚類算法,計算速度快,資源消耗少
- 當簇與簇的區別明顯時效果較好
- 初始聚類中心選擇的隨機性決定了算法的有效性和聚類的精度
- k-means 算法會陷於局部最優,爲了達到更好的效果可以使用二分k-means 算法