K-均值算法初步學習

定義
K-means Clustering Algorithm 中文名也許叫“K均值聚類算法”,是統計學和數據挖掘領域中常用的一種算法。k-means clustering is a method of cluster analysis which aims to partition n observations into k clusters in which each observation belongs to the cluster with the nearest mean[1]。
聚類
數據聚類 (英語 : Cluster analysis) 是對於靜態數據分析的一門技術,在許多領域受到廣泛應用,包括機器學習,數據挖掘,模式識別,圖像分析以及生物信息。聚類是把相似的對象通過靜態分類的方法分成不同的組別或者更多的子集(subset),這樣讓在同一個子集中的成員對象都有相似的一些屬性,常見的包括在坐標系中更加短的空間距離等。[2] 聚類的目標是找出樣本中的內在的群組關系。
K均值算法的主要思路(J. MacQueen, 1967)
l 選擇聚類的個數k.
l 任意產生k個聚類,然后確定聚類中心,或者直接生成k個中心。
l 對每個點確定其聚類中心點。
l 再計算其聚類新中心.
l 重復以上步驟直到滿足收斂要求。(通常就是確定的中心點不再改變).
K均值算法公式
特點
K-means 算法的特點——采用兩階段反復循環過程算法,結束的條件是不再有數據元素被重新分配 [3] 。
k-means 算法缺點[3]
① 在 K-means 算法中 K 是事先給定的,這個 K 值的選定是非常難以估計的。很多時候,事先並不知道給定的數據集應該分成多少個類別才最合適。這也是 K-means 算法的一個不足。有的算法是通過類的自動合並和分裂,得到較為合理的類型數目 K,例如 ISODATA 算法。關於 K-means 算法中聚類數目K 值的確定在文獻中,是根據方差分析理論,應用混合 F 統計量來確定最佳分類數,並應用了模糊划分熵來驗證最佳分類數的正確性。在文獻中,使用了一種結合全協方差矩陣的 RPCL 算法,並逐步刪除那些只包含少量訓練數據的類。而文獻中使用的是一種稱為次勝者受罰的競爭學習規則,來自動決定類的適當數目。它的思想是:對每個輸入而言,不僅競爭獲勝單元的權值被修正以適應輸入值,而且對次勝單元采用懲罰的方法使之遠離輸入值。
② 在 K-means 算法中,首先需要根據初始聚類中心來確定一個初始划分,然后對初始划分進行優化。這個初始聚類中心的選擇對聚類結果有較大的影響,一旦初始值選擇的不好,可能無法得到有效的聚類結果,這也成為 K-means算法的一個主要問題。對於該問題的解決,許多算法采用遺傳算法(GA),例如文獻 中采用遺傳算法(GA)進行初始化,以內部聚類准則作為評價指標。
③ 從 K-means 算法框架可以看出,該算法需要不斷地進行樣本分類調整,不斷地計算調整后的新的聚類中心,因此當數據量非常大時,算法的時間開銷是非常大的。所以需要對算法的時間復雜度進行分析、改進,提高算法應用范圍。在文獻中從該算法的時間復雜度進行分析考慮,通過一定的相似性准則來去掉聚類中心的侯選集。而在文獻中,使用的 K-means 算法是對樣本數據進行聚類,無論是初始點的選擇還是一次迭代完成時對數據的調整,都是建立在隨機選取的樣本數據的基礎之上,這樣可以提高算法的收斂速度。
K中心點算法[4]
為了減輕k均值算法對孤立點的敏感性,k中心點算法不采用簇中對象的平均值作為簇中心,而選用簇中離平均值最近的對象作為簇中心。
k中心算法的基本過程是:首先為每個簇隨意選擇一個代表對象,剩余的對象根據其與每個代表對象的距離分配給最近的代表對象所代表的簇;然后反復用非代表對象來代替代表對象,以優化聚類質量。聚類質量用一個代價函數來表示。當一個中心點被某個非中心點替代時,除了未被替換的中心點外,其余各點被重新分配。
K中心點算法思路:
(1) 隨機選擇k個代表對象作為初始的中心點
(2) 指派每個剩余對象給離它最近的中心點所代表的簇
(3) 隨機地選擇一個非中心點對象y
(4) 計算用y代替中心點x的總代價s
(5) 如果s為負,則用可用y代替x,形成新的中心點
(6) 重復(2)(3)(4)(5),直到k個中心點不再發生變化.
K中心點算法可以看做是K均值算法的一種改進。