K-Means算法与矩阵分解的等价

247 阅读2分钟

开启掘金成长之旅!这是我参与「掘金日新计划 · 2 月更文挑战」的第 33 天,点击查看活动详情


1. K-Means算法的基本原理

K-Means算法是较为经典的聚类算法,假设训练数据集XX为:{x1,x2,,xn}\left \{ \mathbf{x}_1,\mathbf{x}_2,\cdots , \mathbf{x}_n \right \},其中,每一个样本xj \mathbf{x}_jmm维的向量。此时的样本为一个m×nm\times n的矩阵:

Xm×n=(x1x2xn)=(x1,1x1,2x1,nx2,1x2,2x2,nxm,1xm,2xm,n)m×nX_{m\times n}=\begin{pmatrix} \mathbf{x}_{1} & \mathbf{x}_{2} & \cdots & \mathbf{x}_{n} \end{pmatrix}=\begin{pmatrix} x_{1,1} & x_{1,2} & \cdots & x_{1,n}\\ x_{2,1} & x_{2,2} & \cdots & x_{2,n}\\ \vdots & \vdots & &\vdots \\ x_{m,1} & x_{m,2} & \cdots & x_{m,n} \end{pmatrix}_{m\times n}

假设有kk个类,分别为:{C1,,Ck}\left \{ C_1,\cdots ,C_k \right \}。k-Means算法通过欧式距离的度量方法计算每一个样本xj\mathbf{x}_{j}到质心之间的距离,并将其划分到较近的质心所属的类别中并重新计算质心,重复以上的过程,直到质心不再改变为止,上述的过程可以总结为:

  • 初始化常数K,随机选取初始点为质心
  • 重复计算以下过程,直到质心不再改变
    • 计算样本与每个质心之间的相似度,将样本归类到最相似的类中
    • 重新计算质心
  • 输出最终的质心以及每个类

2. K-Means与矩阵分解的等价

2.1. K-Means的目标函数

K-Means的目标使得每一个样本xj\mathbf{x}_{j}被划分到离质心ui\mathbf{u}_i最近的类别中,而质心为:

ui=xjCixj#(xjCi)\mathbf{u}_i=\frac{\sum_{\mathbf{x}_j \in C_i}\mathbf{x}_j}{\# \left ( \mathbf{x}_j \in C_i \right )}

其中,xjCixj\sum_{\mathbf{x}_j \in C_i}\mathbf{x}_j表示的是所有CiC_i类中的所有的样本的和,#(xjCi)\# \left ( \mathbf{x}_j \in C_i \right )表示的是类别CiC_i中的样本的个数。

最终使得质心不再改变,这就意味着每一个样本被划分到了最近的质心所属的类别中,即:

min  i=1kj=1nzijxjui2min\; \sum_{i=1}^{k}\sum_{j=1}^{n}z_{ij}\left \| \mathbf{x}_j-\mathbf{u}_i \right \|^2

其中,样本xj\mathbf{x}_j是数据集Xm×nX_{m\times n}的第jj列。ui\mathbf{u}_i表示的是第ii个类别的聚类中心。假设Mm×kM_{m\times k}为聚类中心构成的矩阵。矩阵Zk×nZ_{k\times n}是由zijz_{ij}构成的0-1矩阵,zijz_{ij}为:

zij={1 if xiCi0 otherwise z_{ij}=\begin{cases} 1 & \text{ if } \mathbf{x}_i\in C_i \\ 0 & \text{ otherwise } \end{cases}

上述的优化目标可以表示成:(在下面会做证明)

min  XMZ2min\; \left \| X-MZ\right \|^2

2.2. 矩阵分解的等价

2.2.1. 优化目标一

对于上述的最小化问题:

min  i=1kj=1nzijxjui2min\; \sum_{i=1}^{k}\sum_{j=1}^{n}z_{ij}\left \| \mathbf{x}_j-\mathbf{u}_i \right \|^2

则有:

i,jzijxjui2=i,jzij(xjTxj2xjTui+uiTui)=i,jzijxjTxj2i,jzijxjTui+i,jzijuiTui\begin{matrix} \sum_{i,j}z_{ij}\left \| \mathbf{x}_j-\mathbf{u}_i \right \|^2\\ =\sum_{i,j}z_{ij}\left ( \mathbf{x}_j^T\mathbf{x}_j-2\mathbf{x}_j^T\mathbf{u}_i+\mathbf{u}_i^T\mathbf{u}_i \right )\\ =\sum_{i,j}z_{ij}\mathbf{x}_j^T\mathbf{x}_j-2\sum_{i,j}z_{ij}\mathbf{x}_j^T\mathbf{u}_i+\sum_{i,j}z_{ij}\mathbf{u}_i^T\mathbf{u}_i \end{matrix}

下面分别对上式中的三项进行计算:

  • 对于i,jzijxjTxj\sum_{i,j}z_{ij}\mathbf{x}_j^T\mathbf{x}_j
i,jzijxjTxj=i,jzijxj2=jxj2=tr[XTX]\begin{aligned} \sum_{i,j}z_{ij}\mathbf{x}_j^T\mathbf{x}_j &= \sum_{i,j}z_{ij}\left \| \mathbf{x}_j \right \|^2\\ &= \sum_{j}\left \| \mathbf{x}_j \right \|^2\\ &= tr\left [ X^TX \right ] \end{aligned}

已知:izij=1\sum_{i}z_{ij}=1

  • 对于i,jzijxjTui\sum_{i,j}z_{ij}\mathbf{x}_j^T\mathbf{u}_i
i,jzijxjTui=i,jzijlxljuli=j,lxljiulizij=j,lxlj(MZ)lj=jl(XT)jl(MZ)lj=j(XTMZ)jj=tr[XTMZ]\begin{aligned} \sum_{i,j}z_{ij}\mathbf{x}_j^T\mathbf{u}_i &= \sum_{i,j}z_{ij}\sum_{l}x_{lj}u_{li}\\ &= \sum_{j,l}x_{lj}\sum_{i}u_{li}z_{ij}\\ &= \sum_{j,l}x_{lj}\left ( MZ \right )_{lj}\\ &= \sum_{j}\sum_{l}\left ( X^T \right )_{jl}\left ( MZ \right )_{lj}\\ &= \sum_{j}\left ( X^TMZ \right )_{jj}\\ &= tr\left [ X^TMZ \right ] \end{aligned}
  • 对于i,juiTui\sum_{i,j}\mathbf{u}_i^T\mathbf{u}_i
i,jzijuiTui=i,jzijui2=iui2ni\begin{aligned} \sum_{i,j}z_{ij}\mathbf{u}_i^T\mathbf{u}_i &= \sum_{i,j}z_{ij}\left \| \mathbf{u}_i \right \|^2\\ &= \sum_{i} \left \| \mathbf{u}_i \right \|^2n_i \end{aligned}

最终:

i,jzijxjui2=tr[XTX]2tr[XTMZ]+iui2ni\sum_{i,j}z_{ij}\left \| \mathbf{x}_j-\mathbf{u}_i \right \|^2=tr\left [ X^TX \right ]-2tr\left [ X^TMZ \right ]+\sum_{i} \left \| \mathbf{u}_i \right \|^2n_i

2.2.2. 优化目标二

对于上述的优化目标的矩阵写法:

min  XMZ2min\; \left \| X-MZ\right \|^2

则有:

XMZ2=tr[(XMZ)T(XMZ)]=tr[XTX]2tr[XTMZ]+tr[ZTMTMZ]\begin{aligned} \left \| X-MZ\right \|^2 &= tr\left [ \left ( X-MZ \right )^T\left ( X-MZ \right ) \right ]\\ &= tr\left [ X^TX \right ]-2tr\left [ X^TMZ \right ]+tr\left [ Z^TM^TMZ \right ] \end{aligned}

对于tr[ZTMTMZ]tr\left [ Z^TM^TMZ \right ]

tr[ZTMTMZ]=tr[MTMZZT]=i(MTMZZT)ii=il(MTM)il(ZZT)li=i(MTM)ii(ZZT)ii=iui2ni\begin{aligned} tr\left [ Z^TM^TMZ \right ] &= tr\left [ M^TMZZ^T \right ]\\ &= \sum_{i}\left ( M^TMZZ^T \right )_{ii}\\ &= \sum_{i}\sum_{l}\left ( M^TM \right )_{il}\left ( ZZ^T \right )_{li}\\ &= \sum_{i}\left ( M^TM \right )_{ii}\left ( ZZ^T \right )_{ii}\\ &= \sum_{i}\left \| \mathbf{u}_i \right \|^2n_{i} \end{aligned}

因此得证,两种优化目标等价。

2.2.3. 求最优的矩阵MM

最终的目标是求得聚类中心,因此,对矩阵MM求偏导数:

MXMZ2=M[tr[XTX]2tr[XTMZ]+tr[ZTMTMZ]]=2(MZZTXZT)\begin{aligned} \frac{\partial }{\partial M}\left \| X-MZ\right \|^2 &= \frac{\partial }{\partial M}\left [ tr\left [ X^TX \right ]-2tr\left [ X^TMZ \right ]+tr\left [ Z^TM^TMZ \right ] \right ]\\ &=2\left ( MZZ^T-XZ^T \right ) \end{aligned}

令其为00

M=XZT(ZZT)1M=XZ^T\left ( ZZ^T \right )^{-1}

即可得:

ui=jzijxjjzij=1nixjCixj\mathbf{u}_i=\frac{\sum_{j}z_{ij}\mathbf{x}_j}{\sum_{j}z_{ij}}=\frac{1}{n_i}\sum_{\mathbf{x}_j\in C_i}\mathbf{x}_j

3. 结论

K-Means算法等价于求下述问题的最小值:

minZXXZT(ZZT)1Z2\underset{Z}{min}\left \| X-XZ^T\left ( ZZ^T \right )^{-1}Z \right \|^2
s.t.  zij{0,1},  jzij=1s.t.\; z_{ij}\in \left \{ 0,1 \right \},\; \sum_{j}z_{ij}=1

参考文献

[1] 《k-Means Clustering Is Matrix Factorization》


开启掘金成长之旅!这是我参与「掘金日新计划 · 2 月更文挑战」的第 33 天,点击查看活动详情