k均值聚類(k-means clustering)


k均值聚類(k-means clustering)算法思想起源於1957年Hugo Steinhaus[1],1967年由J.MacQueen在[2]第一次使用的,標准算法是由Stuart Lloyd在1957年第一次實現的,並在1982年發布[3]。簡單講,k-means clustering是一個根據數據的特征將數據分類為k組的算法。k是一個正整數。分組是根據原始數據與聚類中心(cluster centroid)的距離的平方最小來分配到對應的組中。

例子:假設我們有4個對象作為訓練集,每個對象都有兩個屬性見下。可根據x,y坐標將數據表示 在二維坐標系中。

object

Atrribute 1 (x):

weight index

Attribute 2 (Y):

pH

Medicine A 1 1
Medicine B 2 1
Medicine C 4 3
Medicine D 5 4

表一 原始數據

並且我們知道這些對象可依屬性被分為兩組(cluster 1和cluster 2)。問題在於如何確定哪些葯屬於cluster 1,哪些葯屬於cluster 2。

k-means clustering實現步驟很簡單。剛開始我們需要為各個聚類中心設置初始位置。我們可以從原始數據中隨機取出幾個對象作為聚類中心。然后k means算法執行以下三步直至收斂(即每個對象所屬的組都不改變)。

1.確定中心的坐標

2.確定每個對象與每個中心的位置

3.根據與中心位置的距離,每個對象選擇距離最近的中心歸為此組。

                    圖1 k means流程圖

對於表1中的數據,我們可以得到坐標系中的四個點。

 

1.初始化中心值:我們假設medicine A和medicine B作為聚類中心的初值。用c1和c2表示中心的坐標,c1=(1,1),c2=(2,1)。

2對象-中心距離:利用歐式距離(d = sqrt((x1-x2)^2+(y1-y2)^2))計算每個對象到每個中心的距離。第0次迭代的距離矩陣為

其中行表示聚類中心,列表示對象。

D距離矩陣中第一行表示每一個對象與第一個聚類中心的距離,第二行表示每一個對象與第二個聚類中心的距離

3.對象聚類:根據每個對象與聚類的距離的最小值將對象分為兩組。因此,medicine A屬於第一組,其余的對象屬於第二組。

4.迭代-1,確定中心:從3中我們得到了每組的成員,我們現在根據第組成員利用平均值計算新的聚類中心。c1=(1,1),c2=((2+4+5)/3,(1+3+4)/3)=(11/3,8/3)。此時各數據坐標位置如下。

5.迭代-1,對象-中心距離:此步計算所有對象與新的中心之間的距離。同第2步一樣,迭代-1中的距離矩陣如下所示。

6.迭代-1,對象聚類:同第3步一樣,將每一對象根據最小距離分組。此時得到的組距離如下所示。

7.迭代-2,確定中心:如第4步,得到c1=(3/2,1),c2=(9/2,7/2)

8.迭代-2,對象中心距離:如第2步。得距離矩陣如下。

9.迭代-2,對象聚類:得組矩陣如下。

此時,我們發現第一次迭代和第二迭代所得的分組情況是一樣的,即收斂,k means算法結束。得到如下所示的分組結果。

點擊見英文原文

[1]Steinhaus, H., "Sur la division des corps matériels en parties" (in French).Bull. Acad. Polon. Sci. 4 (12): 801–804. MR0090073. Zbl 0079.16403,1957.

[2]MCQUEEN, J.,  "Some methods for classification and analysis of multivariate observations." In Proceedings of the Fifth Berkeley Symposium on Mathematical Statistics and Probability, 281-297,1967.

[3]Lloyd, S. P.,  "Least square quantization in PCM, " Bell Telephone Laboratories Paper, 1957, Published in journal much later: Lloyd., S. P. (1982). 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM