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

来源:互联网 发布:连接linux服务器工具 编辑:程序博客网 时间:2024/06/06 00:38

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

K-Means算法是较为经典的聚类算法,假设训练数据集X为:{x1,x2,,xn},其中,每一个样本xjm维的向量。此时的样本为一个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》
0 0
原创粉丝点击