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=1∑cxi∈Cj∑∣∣xi−mj∣∣22 (1)Cj是C的第j个集合;mj是矩阵M∈Rd×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是簇中心矩阵 minF∈Ind,Mj=1∑ci=1∑nfij∣∣xi−mj∣∣22 (2)F∈Rn×c是指示矩阵,fij∈{0,1}是F的第i行j列的元素。{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)} minF∈Ind,M∣∣X−MF⊤∣∣F2 (3)这里:∣∣A∣∣F=i=1∑dj=1∑naij2=Tr(A⊤A)
迭代更新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∣∣xi−ml∣∣22;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} minF∈Ind,M=Tr((X−MF⊤)(X−MF⊤)⊤) (4)对M求导:d[Tr(((X−MF⊤)(X−MF⊤)⊤))]=Tr(d[(X−MF⊤)(X−MF⊤)⊤])=Tr(d[(X−MF⊤)(X⊤−FM⊤)])=Tr(d(XX⊤−XFM⊤−MF⊤X⊤+MF⊤FM⊤))=Tr(−XFdM⊤−dMF⊤X⊤+dMF⊤FM⊤+MF⊤FdM⊤)=Tr(−2F⊤X⊤dM)+Tr(2F⊤FM⊤dM)=Tr((2F⊤FM⊤−2F⊤X⊤)dM)=Tr((2MF⊤F−2XF)⊤dM)故∂M∂Tr((X−MF⊤)(X−MF⊤)⊤)=2MF⊤F−2XF令2MF⊤F−2XF=0得:M=XF(F⊤F)−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.