聚類算法是機器學習中的一大重要算法,也是我們掌握機器學習的必須算法,下面對聚類算法中的K-means算法做一個簡單的描述:
一、概述
K-means算法屬于聚類算法中的直接聚類算法。給定一個對象(或記錄)的集合,將這些對象劃分為多個組或者“聚簇”,從而使同組內(nèi)的對象間比較相似而不同組對象間差異比較大;換言之,聚類算法就是將相似的對象放到同一個聚簇中,而將不相似的對象放到不同的聚簇中。由于在聚類過程中不使用到類別標簽,所以相似性的概念要基于對象的屬性進行定義。應(yīng)用不同則相似性規(guī)則和聚類算法一般不太一樣,所以,不同的聚類算法適應(yīng)于不同的業(yè)務(wù)場景,因此,“最優(yōu)”的聚類算法實際上依賴于具體的應(yīng)用。
k-means算法是一種簡單的迭代型聚類算法,將一個給定的數(shù)據(jù)集分為用戶指定的k的聚簇。實現(xiàn)和運行該算法都比較簡單,而且運行速度比較快,同時易于修改,所以在實際應(yīng)用中使用場景比較多,可以說該算法是數(shù)據(jù)挖掘領(lǐng)域發(fā)展史中最為重要的算法之一。
二、算法描述
k-means算法的輸入對象是d維向量空間的一些點。因此,該算法是對一個d維向量的點集D={xi|i=1,....,N}進行聚類,其中xi表示第i個對象(數(shù)據(jù)點), k-means算法會將集合D劃分為k個聚簇。也就是說k-means算法會將集合D中的每一個點xi都歸于k個聚簇中的一個,所以可以定義一個長度為N的聚簇成員向量m,其分量mi就是xi的聚簇標識。
k值是k-means算法的一個關(guān)鍵輸入。但是如何選擇k值對于理解k-means算法的運行原理沒有任何關(guān)系。k值的選擇的典型方法一般是根據(jù)某些先驗