1 描述
k-means聚類算法是基於距離的聚類算法,該算法採用距離大小作爲相似性的評價指行標,即認爲兩個數據點的距離越近,其相似性就越大。該算法認爲簇是由距離靠近的數據點組成的,因此把得到的緊湊且獨立的簇作爲最終目標。
2 算法核心思想
k-means聚類算法是一種迭代求解的聚類分析算法,其步驟是隨機選取k個數據點作爲初始聚類中心,然後計算其他每個數據點與各個初始聚類中心的距離,把每個數據點分配給距離它最近的初始聚類中心。
3 算法實現步驟
- 首先確定一個k值,即希望將數據集合聚類爲k類;
- 從數據集合中隨機選擇k個數據點作爲初始聚類中心;
- 從數據集合中的每一個點,計算其與每一個初始聚類中心的距離(如歐氏距離),離哪個初始聚類中心近,就劃分到哪個初始聚類中心所屬的簇;
- 把所有數據歸好簇之後,一共有k個簇,然後重新計算每個簇的中心;
- 如果新計算出來的中心和原來的中心之間的距離小於某一個設置的閾值(表示重新計算的質心的位置變化不大,趨於穩定,或者說收斂),我們可以認爲聚類已經達到了期望的結果,算法終止。
(1)圖(a)表達了初始的數據集合,假設k=2,此時還沒有分類,全都是一種顏色;
(2)圖(b)中,我們隨機選擇了兩個初始聚類中心,即圖中的紅色質心和藍色質心;
(3)分別計算數據集合中所有數據點到初始聚類中心的距離,並標記每個數據點的類別爲和該樣本距離最小的聚類中心的類別,(4)經過計算數據點和紅色質心和藍色質心的距離,我們得到了所有數據點的第一輪迭代後的類別,如圖(c)所示;
(5)此時我們對當前標記爲紅色和藍色的點分別求其新的質心,如圖(d)所示,新的紅色質心和藍色質心的位置已經發生了變動;
(6)圖(e)和圖(f)重複了我們在圖(c)和圖(d)的過程,即將所有點的類別標記爲距離最近的質心的類別並求新的質心;
最終計算得到的兩個類別如圖(f)
4. k-means術語
簇:所有數據點的集合,簇中的對象是相似的;
質心:簇中所有點的中心(計算所有點的中心而來)
5. k-means優缺點
優點:
(1)原理比較簡單,實現也比較容易,收斂速度快;
(2)當每個簇是密集的,而簇與簇之間區別明顯時,它的效果較好;
(3)需要調節的參數少,主要需要調節的參數僅僅是簇k;
缺點:
(1)k值需要預先給定,很多情況下k值估計是非常困難的;
(2)k-measn算法對初始選取的質心點是敏感的,不同的隨機種子店得到的聚類結果完全不同,對結果影響很大;
(3)對噪聲和異常點比較敏感,用來檢測異常值。
參考:
https://juejin.im/post/5ed9f6e95188254340630ca6