機器學習--k-means聚類原理


 “物以類聚,人以群分”, 所謂聚類就是將相似的元素分到一"類"(有時也被稱為"簇"或"集合"), 簇內元素相似程度高, 簇間元素相似程度低. 常用的聚類方法有划分聚類, 層次聚類, 密度聚類, 網格聚類, 模型聚類等. 我們這里重點介紹划分聚類.

1. 划分聚類

划分聚類, 就是給定一個樣本量為N的數據集, 將其划分為K個簇(K<N), 每一個簇中至少包含一個樣本點.

大部分的划分方法是基於距離的, 即簇內距離最小化, 簇間距離最大化. 常用的距離計算方法有: 曼哈頓距離和歐幾里得距離. 坐標點(x1, y1)到坐標點(x2, y2)的曼哈頓距離和歐幾里得距離分別表示為:

為了達到全局最優解, 傳統的划分法可能需要窮舉所有可能的划分點, 這計算量是相當大的. 而在實際應用中, 通常會通過計算到均值或中心點的距離進行划分來逼近局部最優, 把計算到均值和到中心點距離的算法分別稱為K-MEANS算法和K-MEDOIDS算法, 在這里只介紹K-MEANS算法.

2. K-MEANS算法

K-MEANS算法有時也叫快速聚類算法, 其大致流程為:

第一步: 隨機選取K個點, 作為初始的K個聚類中心, 有時也叫質心.

第二步: 計算每個樣本點到K個聚類中心的距離, 並將其分給距離最短的簇, 如果k個簇中均至少有一個樣本點, 那么我們就說將所有樣本點分成了K個簇.

第三步: 計算K個簇中所有樣本點的均值, 將這K個均值作為K個新的聚類中心.

第四步: 重復第二步和第三步, 直到聚類中心不再改變時停止算法, 輸出聚類結果.

顯然, 初始聚類中心的選擇對迭代時間和聚類結果產生的影響較大, 選不好的話很有可能嚴重偏離最優聚類. 在實際應用中, 通常選取多個不同的K值以及初始聚類中心, 選取其中表現最好的作為最終的初始聚類中心. 怎么算表現最好呢? 能滿足業務需求的, 且簇內距離最小的.

簇內距離可以簇內離差平方和表示: 

其中, K表示K個簇, nj表示第j個簇中的樣本個數, xi表示樣本, uj表示第j個簇的質心, K-means算法中質心可以表示為:

3. 優缺點及注意事項

優點:

1. 原理簡單, 計算速度快

2. 聚類效果較理想.

缺點:

1. K值以及初始質心對結果影響較大, 且不好把握.

2. 在大數據集上收斂較慢.

3. 由於目標函數(簇內離差平方和最小)是非凸函數, 因此通過迭代只能保證局部最優.

4. 對於離群點較敏感, 這是由於其是基於均值計算的, 而均值易受離群點的影響.

5. 由於其是基於距離進行計算的, 因此通常只能發現"類圓形"的聚類.

注意事項:

1. 由於其是基於距離進行計算的, 因此通常需要對連續型數據進行標准化處理來縮小數據間的差異.(對於離散型, 則需要進行one-hot編碼)

2. 如果采用歐幾里得距離進行計算的話, 單位的平方和的平方根是沒有意義的, 因此通常需要進行無量綱化處理


免責聲明!

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



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