k均值聚類是一種無監督的學習,它將相似的對象歸到同一個簇中,聚類方法幾乎可以應用於所有對象,簇內的對象越相似,聚類的效果越好,之所以稱之為K-均值是因為它可以發現k個不同的簇,並且每個簇的中心采用簇中所含的值的均值計算而成。其目的為在不知數據所屬類別及類別數量的前提下,依據數據自身所暗含的特點對數據進行聚類。對於聚類過程中類別數量k的選取,需要一定的先驗知識,也可根據“類內間距小,類間間距大”為目標進行實現。
優點:容易實現。
缺點:可能收斂到局部最小值,在大規模數據集上收斂較慢
適用數據類型:數據型數據
k-means算法以數據間的距離作為數據對象相似性度量的標准,因此選擇計算數據間距離的計算方式對最后的聚類效果有顯著的影響,常用計算距離的方式有:余弦距離、歐式距離、曼哈頓距離等。k-均值是發現給定數據集的k個簇的算法,簇個數是由用戶給定的,每一個簇通過質心,即簇中所有點的中心來描述。
k-均值算法的工作流程是這樣的,首先,隨機確定k個初始點作為質心。然后將數據集中的每個點分配到一個簇中,具體來說,為每個點找其最近的質心,並將其分配給質心所對應的簇,這一步完成后,每個簇的質心更新為該簇所有點的平均值。
第一步:選K個初始聚類中心,z1(1),z2(1),…,zK(1),其中括號內的序號為尋找聚類中心的迭代運算的次序號。聚類中心的向量值可任意設定,例如可選開始的K個模式樣本的向量值作為初始聚類中心。
第二步:逐個將需分類的模式樣本{x}按最小距離准則分配給K個聚類中心中的某一個zj(1)。
假設i=j時,其中k為迭代運算的次序號,第一次迭代k=1,Sj表示第j個聚類,其聚類中心為zj。
第三步:計算各個聚類中心的新的向量值,zj(k+1),j=1,2,…,K
求各聚類域中所包含樣本的均值向量:
其中Nj為第j個聚類域Sj中所包含的樣本個數。以均值向量作為新的聚類中心,可使如下聚類准則函數最小:
在這一步中要分別計算K個聚類中的樣本均值向量,所以稱之為K-均值算法。
第四步:若 ,j=1,2,…,K,則返回第二步,將模式樣本逐個重新分類,重復迭代運算;
若 ,j=1,2,…,K,則算法收斂,計算結束。
偽代碼為:
1 創建k個作為起始質心(通常是隨機選擇) 2 當任意一個點的簇分配結果發生改變時 3 對數據集中的每個數據點 4 對每個質心 5 計算質心與數據點之間的距離 6 將數據點分配到距離其最近的簇 7 對每一個簇,計算簇中所有點的均值並將均值作為質心
