K-MEANS算法的工作原理及流程(zhuan)

 

K-MEANS算法:

輸入:聚類個數k,以及包含 n個數據對象的數據庫。

輸出:滿足方差最小標準的k個聚類。

處理流程:       

(1) 從 n個數據對象任意選擇 k 個對象作爲初始聚類中心;

(2) 根據每個聚類對象的均值(中心對象),計算每個對象與這些中心對象的距離;並根據最小距離重新對相應對象進行劃分;

(3) 重新計算每個(有變化)聚類的均值(中心對象)

(4) 循環(2)到(3)直到每個聚類不再發生變化爲止

k-means 算法接受輸入量 k ;然後將n個數據對象劃分爲 k個聚類以便使得所獲得的聚類滿足:同一聚類中的對象相似度較高;而不同聚類中的對象相似度較小。聚類相似度是利用各聚類中對象的均值所獲得一個“中心對象”(引力中心)來進行計算的。

k-means 算法的工作過程說明如下:首先從n個數據對象任意選擇 k 個對象作爲初始聚類中心;而對於所剩下其它對象,則根據它們與這些聚類中心的相似度(距離),分別將它們分配給與其最相似的(聚類中心所代表的)聚類;然 後再計算每個所獲新聚類的聚類中心(該聚類中所有對象的均值);不斷重複這一過程直到標準測度函數開始收斂爲止。一般都採用均方差作爲標準測度函數. k個聚類具有以下特點:各聚類本身儘可能的緊湊,而各聚類之間儘可能的分開。

K均值聚類存在的問題

K-means 算法的特點——採用兩階段反覆循環過程算法,結束的條件是不再有數據元素被重新分配:

① 指定聚類,即指定數據 到某一個聚類,使得它與這個聚類中心的距離比它到其它聚類中心的距離要近。

② 修改聚類中心。

優點:本算法確定的K 個劃分到達平方誤差最小。當聚類是密集的,且類與類之間區別明顯時,效果較好。對於處理大數據集,這個算法是相對可伸縮和高效的,計算的複雜度爲O(NKt),其中N是數據對象的數目,t是迭代的次數。一般來說,K<<N,t<<N 。

缺點主要有三個:

① 在 K-means 算法中 K 是事先給定的,這個 K 值的選定是非常難以估計的。很多時候,事先並不知道給定的數據集應該分成多少個類別才最合適。這也是 K-means 算法的一個不足。有的算法是通過類的自動合併和分裂,得到較爲合理的類型數目 K,例如 ISODATA 算法。關於 K-means 算法中聚類數目K 值的確定在文獻[23]中,是根據方差分析理論,應用混合 F 統計量來確定最佳分類數,並應用了模糊劃分熵來驗證最佳分類數的正確性。在文獻[24]中,使用了一種結合全協方差矩陣的 RPCL 算法,並逐步刪除那些只包含少量訓練數據的類。而文獻[25]中使用的是一種稱爲次勝者受罰的競爭學習規則,來自動決定類的適當數目。它的思想是:對每個輸入而言,不僅競爭獲勝單元的權值被修正以適應輸入值,而且對次勝單元採用懲罰的方法使之遠離輸入值。

② 在 K-means 算法中,首先需要根據初始聚類中心來確定一個初始劃分,然後對初始劃分進行優化。這個初始聚類中心的選擇對聚類結果有較大的影響[26-29],一旦初始值選擇的不好,可能無法得到有效的聚類結果,這也成爲 K-means算法的一個主要問題。對於該問題的解決,許多算法採用遺傳算法(GA),例如文獻 中採用遺傳算法(GA)進行初始化,以內部聚類準則作爲評價[30]指標。

③ 從 K-means 算法框架可以看出,該算法需要不斷地進行樣本分類調整,不斷地計算調整後的新的聚類中心,因此當數據量非常大時,算法的時間開銷是非常大的。所以需要對算法的時間複雜度進行分析、改進,提高算法應用範圍。在文獻[31,32]中從該算法的時間複雜度進行分析考慮,通過一定的相似性準則來去掉聚類中心的侯選集。而在文獻[33]中,使用的 K-means 算法是對樣本數據進行聚類,無論是初始點的選擇還是一次迭代完成時對數據的調整,都是建立在隨機選取的樣本數據的基礎之上,這樣可以提高算法的收斂速度。

本文來自CSDN博客,轉載請標明出處:http://blog.csdn.net/zgl_dm/archive/2007/11/19/1893007.aspx

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