1. 程式人生 > >劃分方法聚類(二)K-MEANS演算法的改進

劃分方法聚類(二)K-MEANS演算法的改進

   本文將主要針對K-MEANS演算法主要缺點的改進進行講述。

(1)離群點,噪聲點的改進:針對離群點、噪聲點,通過離群點檢測演算法,去掉離群點與噪聲點。資料探勘方面,經常需要在做特徵工程和模型訓練之前對資料進行清洗,剔除無效資料和異常資料。異常檢測也是資料探勘的一個方向,用於反作弊、偽基站、金融詐騙等領域。常用的離群點檢測演算法有:

  A:基於統計的離群點檢測:設定資料的分佈模型,不和諧檢驗,發現離群點。前提條件:資料必須要十分充分。

  B: 區域性離群點:一個物件相對於它的區域性鄰域,特別是關於區域性密度,它是遠離的。

區域性離群因子檢測方法LOF。該演算法會給資料集中的每個點計算一個離群因子LOF,通過判斷LOF是否接近於1來判定是否是離群因子。若LOF遠大於1,則認為是離群因子,接近於1,則是正常點。

 LOF演算法原理:

                (1)  計算每個物件與其他物件的歐氏距離

               (2)  對歐氏距離進行排序,計算第K距離以及第K鄰域

               (3)  計算每個物件的可達密度。

               (4)  計算每個物件的區域性離群點因子

               (5)對每個點的區域性離群點因子進行排序,輸出。

    LOF演算法這裡簡單闡述一下,有興趣的同學可以自行百度一下具體演算法細節。

(2)K值選擇的改進:  

        這方面的改進比較多,這裡主要列舉一下幾種。

         A: 對於K值的選擇,目前主要的方法是採用不同的K值進行聚類,然後根據評判函式,然後選擇最佳的K值。這樣做付出的時間較多,而且也不能保證結果的全域性最優性。

        B:K值的自適應優化演算法。主要思想就是選取適當的K值,在每一次迭代完之後(不是執行完整個聚類程式,而是迭代一次),進行K值的縮減,通過評價指標評價K值變化前後的評價值變化,以此來指導K值的變化。

  C:對資料集首先執行canopy演算法,可以達到一個K值,以及大致的K個初始化聚類中心。這個演算法後續再講。

(3)初始聚類中心的選擇

 A:對於初始聚類中心,選擇距離儘可能遠的K個點。先隨機選擇一個點作為第一個初始類簇中心點,然後選擇距離該點最遠的那個點作為第二個初始類簇中心點,然後再選擇距離前兩個點的最近距離最大的點作為第三個初始類簇的中心點,以此類推,直至選出K個初始類簇中心點。

B:選用層次聚類(Agnes等)或者Canopy演算法進行初始聚類,然後利用這些類簇的中心點作為KMeans演算法初始類簇中心點。

(4只能發現球狀簇的改進:因為K-MEANS使用距離作為樣本間的相似性的度量,所以只能發現球狀簇。K-均值演算法對於各類樣本的邊界是線性不可分以及類分佈為非高斯分佈以及類分佈為非球形時,聚類效果較差。參照支援向量機SVM的核函式,將樣本對映到另一個高維特徵空間,原先的線性不可分可以變為線性可分或者近似線性可分,然後再進行聚類,即K。

(5)標稱屬性。K-眾數演算法。

(6區域性收斂性。第一種方法就是改變初始簇中心,多次除錯。第二種方法就是二分K-均值聚類演算法。

二分K-均值聚類演算法:

(1) 將所有點看成一個簇

(2) 當簇數目小於K

對於每一個簇

計算總誤差

在給定的簇上進行2-均值聚類

計算將該簇一分為二的總誤差

選擇使得誤差最小的那個簇進行劃分操作。

其他劃分方法聚類演算法

      (1) K-眾數聚類演算法(K-modes):當屬性為標稱屬性時,均值可能沒有定義,因此引入了K-Modes演算法。用簇眾數代替簇均值來聚類標稱資料。採用相異性度量來處理標稱物件(K-均值是數值屬性之間的距離),採用基於頻率的方法來更新簇的眾數。(標稱屬性問題)

       (2)K-原型方法(K-prototype):將K-均值與K-眾數演算法結合起來,分別應用於數值屬性與標稱屬性。(K-MEANS+K-MODES

(3)K-中心點聚類演算法:K-均值演算法對離群點敏感,因為離群點遠離大多數資料,因此分配到一個簇時,嚴重扭曲簇的均值。因此K-中心點進行質心選擇時,不再依靠中心點的選擇,而是考慮用一個非代表物件替換代表物件,看是否能夠提高聚類質量。嘗試所有的替換,直到結果聚類的質量不可能被任何替換提高。這就是K-中心點一種流行的實現演算法-PAM。質量用物件與其代表物件的平均相異度來衡量。當存在噪聲與異常點時,K-中心點魯棒性更好。因為中心點不容易受到異常點的影響。K-中心點每次迭代的複雜度為O(K(n-k)),當n和k都很大時,計算開銷相當大。遠高於K-均值。因此K-中心點演算法適合在小型資料集上執行。

 (4)CLARA(Clustering LARgeApplication,大型應用聚類),基於抽樣的方法,不考慮整個資料集,而是使用資料集的一個隨機樣本,然後使用PAM方法計算最佳中心點。CLARA由多個隨機樣本建立聚類。在一個隨機樣本上計算中心點的複雜度為O(ks^2+k(n-k))。CLARA依賴於樣本的大小。PAM是在給定的資料集上選取K個最佳中心點,而CLARA目的是在整個資料集上選取K個最佳中心點,如果最佳的抽樣中心點遠離最佳的K箇中心點,那麼CLARA不能發現好的聚類。

     (5) CLARANS(Clustering large Application basedupon RANdomized Search,基於隨機搜尋的聚類大型應用):在資料集中隨機選取K個物件作為當前中心點,隨機選擇一個當前中心點x和一個不是當前中心點的y進行替換,看看是否能夠改善絕對誤差。CLARANS進行這樣的隨機搜尋L次。L步之後的中心點的集合被看做一個區域性最優解。重複上述過程M次,返回最佳區域性最優解作為最終的結果。

 以上幾種演算法基本都是針對K-MEANS演算法的不足的來改進出來的形式。