一、k-Means算法的基本原理
k-Means算法是较为经典的聚类算法,假设训练数据集 X 为: {x1,x2,⋯,xn} ,其中,每一个样本 xj 为 m 维的向量。此时的样本为一个 m×n 的矩阵:
Xm×n=(x1x2⋯xn)=⎛⎝⎜⎜⎜⎜⎜x1,1x2,1⋮xm,1x1,2x2,2⋮xm,2⋯⋯⋯x1,nx2,n⋮xm,n⎞⎠⎟⎟⎟⎟⎟m×n
假设有 k 个类,分别为: {C1,⋯,Ck} 。k-Means算法通过欧式距离的度量方法计算每一个样本 xj 到质心之间的距离,并将其划分到较近的质心所属的类别中并重新计算质心,重复以上的过程,直到质心不再改变为止,上述的过程可以总结为:
- 初始化常数k,随机选取初始点为质心
- 重复计算以下过程,直到质心不再改变
- 计算样本与每个质心之间的相似度,将样本归类到最相似的类中
- 重新计算质心
- 输出最终的质心以及每个类
二、k-Means与矩阵分解的等价
2.1、k-Means的目标函数
k-Means的目标使得每一个样本 xj 被划分到离质心 ui 最近的类别中,而质心为:
ui=∑xj∈Cixj#(xj∈Ci)
其中, ∑xj∈Cixj 表示的是所有 Ci 类中的所有的样本的和, #(xj∈Ci) 表示的是类别 Ci 中的样本的个数。
最终使得质心不再改变,这就意味着每一个样本被划分到了最近的质心所属的类别中,即:
min∑i=1k∑j=1nzij∥∥xj−ui∥∥2
其中,样本 xj 是数据集 Xm×n 的第 j 列。 ui 表示的是第 i 个类别的聚类中心。假设 Mm×k 为聚类中心构成的矩阵。矩阵 Zk×n 是由 zij 构成的0-1矩阵, zij 为:
zij={10 if xi∈Ci otherwise
上述的优化目标可以表示成:(在下面会做证明)
min∥X−MZ∥2
2.2、矩阵分解的等价
2.2.1、优化目标一
对于上述的最小化问题:
min∑i=1k∑j=1nzij∥∥xj−ui∥∥2
则有:
∑i,jzij∥∥xj−ui∥∥2=∑i,jzij(xTjxj−2xTjui+uTiui)=∑i,jzijxTjxj−2∑i,jzijxTjui+∑i,jzijuTiui
下面分别对上式中的三项进行计算:
∑i,jzijxTjxj=∑i,jzij∥∥xj∥∥2=∑j∥∥xj∥∥2=tr[XTX]
已知: ∑izij=1 。
∑i,jzijxTjui=∑i,jzij∑lxljuli=∑j,lxlj∑iulizij=∑j,lxlj(MZ)lj=∑j∑l(XT)jl(MZ)lj=∑j(XTMZ)jj=tr[XTMZ]
∑i,jzijuTiui=∑i,jzij∥ui∥2=∑i∥ui∥2ni
最终:
∑i,jzij∥∥xj−ui∥∥2=tr[XTX]−2tr[XTMZ]+∑i∥ui∥2ni
2.2.2、优化目标二
对于上述的优化目标的矩阵写法:
min∥X−MZ∥2
则有:
∥X−MZ∥2=tr[(X−MZ)T(X−MZ)]=tr[XTX]−2tr[XTMZ]+tr[ZTMTMZ]
对于 tr[ZTMTMZ] :
tr[ZTMTMZ]=tr[MTMZZT]=∑i(MTMZZT)ii=∑i∑l(MTM)il(ZZT)li=∑i(MTM)ii(ZZT)ii=∑i∥ui∥2ni
因此得证,两种优化目标等价。
2.2.3、求最优的矩阵 M
最终的目标是求得聚类中心,因此,对矩阵 M 求偏导数:
∂∂M∥X−MZ∥2=∂∂M[tr[XTX]−2tr[XTMZ]+tr[ZTMTMZ]]=2(MZZT−XZT)
令其为 0 :
M=XZT(ZZT)−1
即可得:
ui=∑jzijxj∑jzij=1ni∑xj∈Cixj
三、结论
k-Means算法等价于求下述问题的最小值:
minZ∥∥∥X−XZT(ZZT)−1Z∥∥∥2
s.t.zij∈{0,1},∑jzij=1
参考文献
- 《k-Means Clustering Is Matrix Factorization》