k-means算法詳解
- 主要內容
- k-means算法簡介
- k-means算法詳解
- k-means算法優缺點分析
- k-means算法改進算法k-means++
1、k-means算法簡介
k-means算法是一種聚類算法,所謂聚類,即根據相似性原則,將具有較高相似度的數據對象劃分至同一類簇,將具有較高相異度的數據對象劃分至不同類簇。聚類與分類最大的區別在於,聚類過程爲無監督過程,即待處理數據對象沒有任何先驗知識,而分類過程爲有監督過程,即存在有先驗知識的訓練數據集。
k-means算法中的k代表類簇個數,means代表類簇內數據對象的均值(這種均值是一種對類簇中心的描述),因此,k-means算法又稱爲k-均值算法。k-means算法是一種基於劃分的聚類算法,以距離作爲數據對象間相似性度量的標準,即數據對象間的距離越小,則它們的相似性越高,則它們越有可能在同一個類簇。數據對象間距離的計算有很多種,k-means算法通常採用歐氏距離來計算數據對象間的距離。
2、k-means算法詳解
k-means算法以距離作爲數據對象間相似性度量的標準,通常採用歐氏距離來計算數據對象間的距離。下面給出歐式距離的計算公式:
k-means算法聚類過程中,每次迭代,對應的類簇中心需要重新計算(更新):對應類簇中所有數據對象的均值,即爲更新後該類簇的類簇中心。定義第 個類簇的類簇中心爲 ,則類簇中心更新方式如下:
k-means算法需要不斷地迭代來重新劃分類簇,並更新類簇中心,那麼迭代終止的條件是什麼呢?一般情況,有兩種方法來終止迭代:一種方法是設定迭代次數 ,當到達第 次迭代,則終止迭代,此時所得類簇即爲最終聚類結果;另一種方法是採用誤差平方和準則函數,函數模型如下:
k-means算法思想可描述爲:首先初始化 個類簇中心;然後計算各個數據對象到聚類中心的距離,把數據對象劃分至距離其最近的聚類中心所在類簇中;接着根據所得類簇,更新類簇中心;然後繼續計算各個數據對象到聚類中心的距離,把數據對象劃分至距離其最近的聚類中心所在類簇中;接着根據所得類簇,繼續更新類簇中心;……一直迭代,直到達到最大迭代次數 ,或者兩次迭代 的差值小於某一閾值時,迭代終止,得到最終聚類結果。算法詳細流程描述如下:
k-means算法聚類過程示意圖,如下:
3、k-means算法優缺點分析
- 優點:
算法簡單易實現;
- 缺點:
需要用戶事先指定類簇個數 ;
聚類結果對初始類簇中心的選取較爲敏感;
容易陷入局部最優;
只能發現球型類簇;
4、k-means算法改進方法
初始類簇中心的選取,可以通過k-means++算法進行改進。