【深度學習基礎-15】非監督學習-用K-mean演算法聚類如何使用及例項計算

learning_CV發表於2019-01-16

1 K-mean基本概念

聚類分析是以相似性為基礎,對資料集進行聚類劃分,屬於無監督學習(unsupervised learning)。

K-means演算法是一種簡單的迭代型聚類演算法,採用距離作為相似性指標,從而發現給定資料集中的K個類,且每個類的中心是根據類中所有值的均值得到,每個類用聚類中心來描述。對於給定的一個包含n個d維資料點的資料集X以及要分得的類別K,選取歐式距離作為相似度指標,聚類目標是使得各類的聚類平方和最小,即最小化:

                                                      

結合最小二乘法和拉格朗日原理,聚類中心為對應類別中各資料點的平均值,同時為了使得演算法收斂,在迭代過程中,應使最終的聚類中心儘可能的不變。

2 K-means是一個反覆迭代的過程,演算法分為四個步驟:

1) 選取資料空間中的K個物件作為初始中心,每個物件代表一個聚類中心;

2) 對於樣本中的資料物件,根據它們與這些聚類中心的歐氏距離,按距離最近的準則將它們分到距離它們最近的聚類中心(最相似)所對應的類;

3) 更新聚類中心:將每個類別中所有物件所對應的均值作為該類別的聚類中心,計算目標函式的值;

4) 判斷聚類中心和目標函式的值是否發生改變,若不變,則輸出結果,若改變,則返回2)。

用以下例子加以說明:

                         

             圖1             圖2

                        

              圖3             圖4

圖1:給定一個資料集;

圖2:根據K = 5初始化聚類中心,保證 聚類中心處於資料空間內;

圖3:根據計算類內物件和聚類中心之間的相似度指標,將資料進行劃分;

圖4:將類內之間資料的均值作為聚類中心,更新聚類中心。

 3 K-mean和KNN區別

       K-Means是無監督學習的聚類演算法,沒有樣本輸出;而KNN是監督學習的分類演算法,有對應的類別輸出。KNN基本不需要訓練,對測試集裡面的點,只需要找到在訓練集中最近的k個點,用這最近的k個點的類別來決定測試點的類別。而K-Means則有明顯的訓練過程,找到k個類別的最佳質心,從而決定樣本的簇類別。

    當然,兩者也有一些相似點,兩個演算法都包含一個過程,即找出和某一個點最近的點。兩者都利用了最近鄰(nearest neighbors)的思想。

4 K-mean優缺點

 K-Means的主要優點有:

    1)原理比較簡單,實現也是很容易,收斂速度快。

    2)聚類效果較優。

    3)演算法的可解釋度比較強。

    4)主要需要調參的引數僅僅是簇數k。

 K-Means的主要缺點有:

    1)K值的選取不好把握

    2)對於不是凸的資料集比較難收斂

    3)如果各隱含類別的資料不平衡,比如各隱含類別的資料量嚴重失衡,或者各隱含類別的方差不同,則聚類效果不佳。

    4) 採用迭代方法,得到的結果只是區域性最優。

    5) 對噪音和異常點比較的敏感。

5 計算例項

 

相關文章