开启掘金成长之旅!这是我参与「掘金日新计划 · 2 月更文挑战」的第 33 天,点击查看活动详情
1. 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,随机选取初始点为质心
- 重复计算以下过程,直到质心不再改变
- 计算样本与每个质心之间的相似度,将样本归类到最相似的类中
- 重新计算质心
- 输出最终的质心以及每个类
2. K-Means与矩阵分解的等价
2.1. K-Means的目标函数
K-Means的目标使得每一个样本xj被划分到离质心ui最近的类别中,而质心为:
ui=#(xj∈Ci)∑xj∈Cixj
其中,∑xj∈Cixj表示的是所有Ci类中的所有的样本的和,#(xj∈Ci)表示的是类别Ci中的样本的个数。
最终使得质心不再改变,这就意味着每一个样本被划分到了最近的质心所属的类别中,即:
mini=1∑kj=1∑nzij∥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. 优化目标一
对于上述的最小化问题:
mini=1∑kj=1∑nzij∥xj−ui∥2
则有:
∑i,jzij∥xj−ui∥2=∑i,jzij(xjTxj−2xjTui+uiTui)=∑i,jzijxjTxj−2∑i,jzijxjTui+∑i,jzijuiTui
下面分别对上式中的三项进行计算:
- 对于∑i,jzijxjTxj:
i,j∑zijxjTxj=i,j∑zij∥xj∥2=j∑∥xj∥2=tr[XTX]
已知:∑izij=1。
- 对于∑i,jzijxjTui:
i,j∑zijxjTui=i,j∑zijl∑xljuli=j,l∑xlji∑ulizij=j,l∑xlj(MZ)lj=j∑l∑(XT)jl(MZ)lj=j∑(XTMZ)jj=tr[XTMZ]
- 对于∑i,juiTui:
i,j∑zijuiTui=i,j∑zij∥ui∥2=i∑∥ui∥2ni
最终:
i,j∑zij∥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=∑jzij∑jzijxj=ni1xj∈Ci∑xj
3. 结论
K-Means算法等价于求下述问题的最小值:
Zmin∥∥X−XZT(ZZT)−1Z∥∥2
s.t.zij∈{0,1},j∑zij=1
参考文献
[1] 《k-Means Clustering Is Matrix Factorization》
开启掘金成长之旅!这是我参与「掘金日新计划 · 2 月更文挑战」的第 33 天,点击查看活动详情