機器學習-聚類-K-means算法

一、聚類

聚類分析是非監督學習的很重要的領域。所謂非監督學習,就是數據是沒有類別標記的,算法要從對原始數據的探索中提取出一定的規律。而聚類分析就是試圖將數據集中的樣本劃分為若干個不相交的子集,每個子集稱為一個“簇”。它的難點是不好調參和評估。下面是sklearn中對各種聚類算法的比較。

  

機器學習-聚類-K-means算法

二、K-Means算法

  KMeans算法在給定一個數k之後,能夠將數據集分成k個“簇”={C1,C2,⋯,Ck}C={C1,C2,⋯,Ck},不論這種分類是否合理,或者是否有意義。算法需要最小化平方誤差:

                  

機器學習-聚類-K-means算法

  其中μi是簇Ci的均值向量,或者說是質心。其中‖x−μi‖^2代表每個樣本點到均值點的距離(其實也是範數)。這裡就稍微提一下距離度量。

  所以要得到簇的個數,需要指定K值  質心:均值,即向量各維取平均即可  距離的度量:常用歐幾里得距離和餘弦相似度(先標準化)  優化目標:

      

機器學習-聚類-K-means算法

  工作流程:

  根據給定的K值,隨便取K個點作為K個簇的質心,比如K=2,然後計算各個點到兩個質心的距離,離哪個近則劃入那一邊,然後重新調整質心位置,再分簇,直至質心不再變動為止。

  

機器學習-聚類-K-means算法

  優勢:簡單,快速,適合常規數據集  劣勢:

  • K值難確定,根本不知道有幾個類
  • 初值設置對結果影響很大,所以要多次取初值。有時候設置初始點,並不能正確分類。
  • 複雜度與樣本呈線性關係,樣本越多計算越多
  • 很難發現任意形狀的簇,比如環狀的,單計算到質心距離很難分類。

        

機器學習-聚類-K-means算法


分享到:


相關文章: