1. 程式人生 > >聚類分析--k均值聚類

聚類分析--k均值聚類

無監督聚類

模型表示

給定樣本集 D = { x 1 , . .

. , x m } D=\{x_1,...,x_m\} ,針對聚類所得簇劃分 C
= { C 1 , . . . , C
k
} C=\{C_1,...,C_k\}
,最小化平方誤差SSE:
m i n E = i = 1 k x C i x μ i 2 min \quad E=\sum_{i=1}^k\sum_{x\in C_i}||x-\mu_i||^2 其中, μ i = 1 C i x C i x \mu_i=\frac{1}{|C_i|}\sum_{x\in C_i}x 是簇 C i C_i 的均值向量。

演算法描述

重複進行直到收斂{

   1.將每個樣本向量按照歐式距離歸入最近的類;
   2.重新調整每個聚類中心

}

k的確定

  • 手肘法
    SSE和k的關係圖是一個手肘的形狀,而這個肘部對應的k值就是資料的真實聚類數。
    在這裡插入圖片描述
    圖片像一隻手肘,肘處的K即為最佳K值:K=2。

  • 輪廓係數法
    求出所有樣本的輪廓係數後再求平均值就得到了平均輪廓係數。平均輪廓係數的取值範圍為[-1,1],且簇內樣本的距離越近,簇間樣本距離越遠,平均輪廓係數越大,聚類效果越好。
    某個樣本點 X i X_i 的輪廓係數定義如下:
    S = b a m a x ( a , b ) S=\frac{b-a}{max(a,b)} 其中,a是 X i X_i 與同簇的其他樣本的平均距離,稱為凝聚度,b是 X i X_i 與最近簇中所有樣本的平均距離,稱為分離度。

初始點選擇方法

選用層次聚類演算法進行初始聚類,然後從k個類別中分別隨機選取k個點,來作為kmeans的初始聚類中心點。

層次聚類演算法

先將n個樣本各自看成一類,計算樣本之間和類與類之間的相似度,選擇最大相似度的兩類合併為一個新類, 重複這一過程,直至所有的樣本都歸為一類為止.