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

一、k-Means算法的基本原理

k-Means算法是较为经典的聚类算法,假设训练数据集 X 为: {x1,x2,,xn} ,其中,每一个样本 xj m 维的向量。此时的样本为一个 m×n 的矩阵:

Xm×n=(x1x2xn)=x1,1x2,1xm,1x1,2x2,2xm,2x1,nx2,nxm,nm×n

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

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

二、k-Means与矩阵分解的等价

2.1、k-Means的目标函数

k-Means的目标使得每一个样本 xj 被划分到离质心 ui 最近的类别中,而质心为:

ui=xjCixj#(xjCi)

其中, xjCixj 表示的是所有 Ci 类中的所有的样本的和, #(xjCi) 表示的是类别 Ci 中的样本的个数。

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

mini=1kj=1nzijxjui2

其中,样本 xj 是数据集 Xm×n 的第 j 列。 ui 表示的是第 i 个类别的聚类中心。假设 Mm×k 为聚类中心构成的矩阵。矩阵 Zk×n 是由 zij 构成的0-1矩阵, zij 为:

zij={10 if xiCi otherwise 

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

minXMZ2

2.2、矩阵分解的等价

2.2.1、优化目标一

对于上述的最小化问题:

mini=1kj=1nzijxjui2

则有:

i,jzijxjui2=i,jzij(xTjxj2xTjui+uTiui)=i,jzijxTjxj2i,jzijxTjui+i,jzijuTiui

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

  • 对于 i,jzijxTjxj

i,jzijxTjxj=i,jzijxj2=jxj2=tr[XTX]

已知: izij=1

  • 对于 i,jzijxTjui

i,jzijxTjui=i,jzijlxljuli=j,lxljiulizij=j,lxlj(MZ)lj=jl(XT)jl(MZ)lj=j(XTMZ)jj=tr[XTMZ]

  • 对于 i,juTiui

i,jzijuTiui=i,jzijui2=iui2ni

最终:

i,jzijxjui2=tr[XTX]2tr[XTMZ]+iui2ni

2.2.2、优化目标二

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

minXMZ2

则有:

XMZ2=tr[(XMZ)T(XMZ)]=tr[XTX]2tr[XTMZ]+tr[ZTMTMZ]

对于 tr[ZTMTMZ]

tr[ZTMTMZ]=tr[MTMZZT]=i(MTMZZT)ii=il(MTM)il(ZZT)li=i(MTM)ii(ZZT)ii=iui2ni

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

2.2.3、求最优的矩阵 M

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

MXMZ2=M[tr[XTX]2tr[XTMZ]+tr[ZTMTMZ]]=2(MZZTXZT)

令其为 0

M=XZT(ZZT)1

即可得:

ui=jzijxjjzij=1nixjCixj

三、结论

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

minZXXZT(ZZT)1Z2

s.t.zij{0,1},jzij=1

参考文献

  • 《k-Means Clustering Is Matrix Factorization》

你可能感兴趣的:(k-means,矩阵分解)