K-means算法

K-means算法

Lloyd k-means Algorithm

样本矩阵: X = [ x 1 , x 2 , . . . , x n ] ∈ R d × n X=[x_1,x_2,...,x_n] ∈R^{d×n} X=[x1,x2,...,xn]Rd×n,有n个 x i x_i xi每个 x i x_i xi是d维

簇集合: C = [ C 1 , C 2 , . . . , C c ] C=[C_1,C_2,...,C_c] C=[C1,C2,...,Cc],有c个簇集合

SSE:误差平方和,sum of the squared errors,要计算每个样本点和相应簇均值的误差平方和,即:

m i n M S S E = m i n C ∑ j = 1 c ∑ x i ∈ C j ∣ ∣ x i − m j ∣ ∣ 2 2               ( 1 ) C j 是 C 的第 j 个集合 ; m j 是矩阵 M ∈ R d × c 的第 j 列 , 表示第 c 个集合的均值 ; min_MSSE=min_C\sum_{j=1}^c\sum_{x_i∈C_j}||x_i-m_j||_2^2\ \ \ \ \ \ \ \ \ \ \ \ \ (1)\\ \\ C_j是C的第j个集合;\\ \\m_j是矩阵M∈R^{d×c}的第j列,表示第c个集合的均值;\\ minMSSE=minCj=1cxiCj∣∣ximj22             (1)CjC的第j个集合;mj是矩阵MRd×c的第j,表示第c个集合的均值;

将问题(1)重写:

m i n F ∈ I n d , M ∑ j = 1 c ∑ i = 1 n f i j ∣ ∣ x i − m j ∣ ∣ 2 2               ( 2 ) F ∈ R n × c 是指示矩阵, f i j ∈ { 0 , 1 } 是 F 的第 i 行 j 列的元素。 { f i j = 0 , 表示第 i 个样本不属于第 j 个簇 f i j = 1 , 表示第 i 个样本属于第 j 个簇 M 是簇中心矩阵 min_{F∈Ind,M}\sum_{j=1}^c\sum_{i=1}^n f_{ij}||x_i-m_j||_2^2\ \ \ \ \ \ \ \ \ \ \ \ \ (2)\\ \\ F∈R^{n×c}是指示矩阵,f_{ij}∈\{0,1\}是F的第i行j列的元素。\\ \\ \begin{cases} f_{ij}=0,表示第i个样本不属于第j个簇\\ f_{ij}=1,表示第i个样本属于第j个簇 \end{cases}\\ \\ M是簇中心矩阵 minFInd,Mj=1ci=1nfij∣∣ximj22             (2)FRn×c是指示矩阵,fij{0,1}F的第ij列的元素。{fij=0,表示第i个样本不属于第j个簇fij=1,表示第i个样本属于第j个簇M是簇中心矩阵

将问题(2)写成矩阵形式:
m i n F ∈ I n d , M ∣ ∣ X − M F ⊤ ∣ ∣ F 2               ( 3 ) 这里 : ∣ ∣ A ∣ ∣ F = ∑ i = 1 d ∑ j = 1 n a i j 2 = T r ( A ⊤ A ) min_{F∈Ind,M}||X-MF^\top||_F^2\ \ \ \ \ \ \ \ \ \ \ \ \ (3)\\ \\ 这里:\\ \\ ||A||_F=\sqrt{\sum_{i=1}^d \sum_{j=1}^n a_{ij}^2}=\sqrt{Tr(A^\top A)} minFInd,M∣∣XMFF2             (3)这里:∣∣AF=i=1dj=1naij2 =Tr(AA)
迭代更新M和F:

  • 当M固定,F的解为:

    • f i j = { 1    j = a r g   m i n l ∣ ∣ x i − m l ∣ ∣ 2 2 ; 0    o t h e r w i s e f_{ij}=\begin{cases} 1\ \ j=arg\ min_l||x_i-m_l||_2^2;\\ \\ 0\ \ otherwise \end{cases} fij= 1  j=arg minl∣∣ximl22;0  otherwise
  • 当F固定,求解M可将问题(3)重写:

    • m i n F ∈ I n d , M = T r ( ( X − M F ⊤ ) ( X − M F ⊤ ) ⊤ )               ( 4 ) 对 M 求导 : d [ T r ( ( ( X − M F ⊤ ) ( X − M F ⊤ ) ⊤ ) ) ] = T r ( d [ ( X − M F ⊤ ) ( X − M F ⊤ ) ⊤ ] ) = T r ( d [ ( X − M F ⊤ ) ( X ⊤ − F M ⊤ ) ] ) = T r ( d ( X X ⊤ − X F M ⊤ − M F ⊤ X ⊤ + M F ⊤ F M ⊤ ) ) = T r ( − X F d M ⊤ − d M F ⊤ X ⊤ + d M F ⊤ F M ⊤ + M F ⊤ F d M ⊤ ) = T r ( − 2 F ⊤ X ⊤ d M ) + T r ( 2 F ⊤ F M ⊤ d M ) = T r ( ( 2 F ⊤ F M ⊤ − 2 F ⊤ X ⊤ ) d M ) = T r ( ( 2 M F ⊤ F − 2 X F ) ⊤ d M ) 故 ∂ T r ( ( X − M F ⊤ ) ( X − M F ⊤ ) ⊤ ) ∂ M = 2 M F ⊤ F − 2 X F 令 2 M F ⊤ F − 2 X F = 0 得 : M = X F ( F ⊤ F ) − 1 min_{F∈Ind,M}=Tr((X-MF^\top)(X-MF^\top)^\top)\ \ \ \ \ \ \ \ \ \ \ \ \ (4)\\ \\ 对M求导:\\ \\ d[Tr(((X-MF^\top)(X-MF^\top)^\top))]=Tr(d[(X-MF^\top)(X-MF^\top)^\top])\\ =Tr(d[(X-MF^\top)(X^\top -FM^\top)])\\ =Tr(d(XX^\top -XFM^\top - MF^\top X^\top +MF^\top FM^\top))\\ =Tr(-XFdM^\top -dMF^\top X^\top+dMF^\top FM^\top +MF^\top FdM^\top)\\ =Tr(-2F^\top X^\top dM)+Tr(2F^\top FM^\top dM)\\ =Tr((2F^\top FM^\top-2F^\top X^\top)dM)=Tr((2MF^\top F-2XF)^\top dM)\\ 故\frac{\partial Tr((X-MF^\top)(X-MF^\top)^\top)}{\partial M}=2MF^\top F-2XF\\ 令2MF^\top F-2XF=0得:\\ M=XF(F^\top F)^{-1} minFInd,M=Tr((XMF)(XMF))             (4)M求导:d[Tr(((XMF)(XMF)))]=Tr(d[(XMF)(XMF)])=Tr(d[(XMF)(XFM)])=Tr(d(XXXFMMFX+MFFM))=Tr(XFdMdMFX+dMFFM+MFFdM)=Tr(2FXdM)+Tr(2FFMdM)=Tr((2FFM2FX)dM)=Tr((2MFF2XF)dM)MTr((XMF)(XMF))=2MFF2XF2MFF2XF=0:M=XF(FF)1
 Lloyd k-means algorithm, the standard algorithm for minimizing problem (1) 

1: Input data matrix X, cluster number c. 

2: Initialize cluster centers mj(j = 1, 2, · · · , c) randomly. 

3: repeat 

4: Calculate indicator matrix F by Eq. (3); 

5: Calculate center matrix M by Eq. (5). 

6: until convergence 

7: Output updated label matrix F.

你可能感兴趣的:(算法,kmeans,机器学习)