機器學習 k-means算法

1.原理

        k-means是一種無監督的基於距離的聚類算法。在無監督的算法中,訓練集的標籤信息是不知道的,任務是通過對訓練樣本的學習來揭示數據的內在性質和規律。聚類是將訓練集中的樣本劃分爲若干個不想交的子集,每一個子集稱爲一個簇,這些簇都是不知道標籤信息的數據樣本,每一個樣本都包含着一個n維的特徵向量x=(x_{1},x_{2},...,x_{n})
         k-means聚類算法是將n個樣本的數據集x劃分爲k個簇,\mu _{i}表示第i個簇的中心,k-means算法的目標就是,選擇k箇中心,使得類裏面各個樣本點到其中心的距離平方和最小。聚類完成後,通常計算最小化內類分散度來評價聚類效果,這個值在一定程度上刻畫了簇內樣本的緊密程度,值越小表示簇內樣本相似度越高。
         最小化類內分散度公式:E=\sum_{i=1}^{k}\sum_{x\epsilon c_{i}}||x-\mu _{i}||_{2}^{2}
         其中,k表示有k個類簇,c_{i}表示第i個簇,x表示c_{i}這個簇內的一個樣本,\mu _{i}表示第i個簇的中心。
         k-means聚類算法是使用最廣泛的算法之一,但是它也有一些缺點,比如選擇不同的初始聚類中心,最終聚類的結果可能不一樣,並且k-means算法容易受到異常點的影響,因爲它更新中心點的時候用的均值。

2.算法思路

(1)從輸入的樣本中隨機選擇一個樣本作爲第一個聚類中心(初始的聚類中心之間的相互距離應該儘可能大)
(2)計算每一個樣本到各個中心點的距離,選擇距離最小的中心點,把該樣本歸到該類別。
(3)當所有樣本都劃歸完了後,計算每一個簇的新中心點,也就是每個簇的均值,然後更新中心點。
(4)重複(2)(3)步,直到聚類中心不再變化位置。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章