PCA、LDA、Kmeans、SVD/EVD、谱聚类之间的关系

PCA、LDA、Kmeans、SVD/EVD、谱聚类之间的关系

 最近在研究谱聚类时,迁移到主成分分析(PCA),发现两者有着惊人的相似之处,同时还牵扯到Kmeans、SVD,甚至LDA也有相通的地方(虽然LDA是有监督学习),因此在这里写一篇总结,描述一下以上各个模型之间的共通性,有助于加深对这一类无监督学习算法的理解。


PCA与SVD/EVD的关系

  首先,从SVD入手:

X(d×N)=UΣVTXXT=UΛUT

UTXXTU=Λ

  然后,这是PCA的目标:

minWWTXXTWs.t.WTW=I

  因此PCA的实现,既可以对协方差矩阵XX(d×d)T做特征值分解,也可以直接对X做奇异值分解。


Kmeans与SVD/EVD的关系

  首先从SVD出发:

X(d×N)=UΣVTXTX=VΛVT

VTXTXV=Λ

  然后看Kmeans。Kmeans对误差的分布有要求,即要求误差服从标准正态分布,因此,Kmeans在处理非标准正态分布的数据集时,聚类效果会比较差。Kmeans聚类的每一次迭代,是根据现有的k个类中心,样本根据自身与中心的距离判断类归属,然后计算出每一个类的中心进入下一次迭代。由于Kmeans的核心是基于样本与类中心的欧式距离,伊霓裳可以将Kmeans聚类的目标理解为:划分K个类C=C1,C2,,CK,使得各类样本到各自类中心的欧式距离之和最小。

minCkiCk||xiμk||22=minCkiCk(xiTxi2xiTμk+μkTμk)=minC(ixiTxik1nki,jCkxiTxj)=minC(Tr(XTX)Tr(HXTXH))

maxHTr(HTXTXH)s.t.HTH=IK×K

  这里需要引入指示矩阵HN×K,它是正交矩阵:

Hij={1NkxiCj0xiCj

  我们先把服从上面这个定义的指示矩阵称为“正经的”指示矩阵,因为接下来会有松弛化的。
  那么Kmeans在做的其实就是遍历所有划分,但这是一个NP hard问题,所以它选择从一个出发点(初始值)按照一种规则(要求每个样本被归到距离最近的一类中)迭代分割方案,构造出不同的H,直到收敛。
  虽然Kmeans在这里推导出来的目标形式上和上面的SVD推出的表达式是一样的,但Kmeans实际上并没有做SVD。可以理解为Kmeans的解H是离散且正交的。
  另一方面,我们还可以将XTX看做线性内积核函数计算的相似度矩阵,即将Kmeans的目标函数推广为minTr(HTSH),这里S=XTX。而Kernel-Kmeans不使用欧式距离作为相似性测度,而是使用核函数计算相似度,即S=ϕ(x)Tϕ(x),例如高斯RBF K(xi,xj)=exp((xixj)2/2σ2)


PCA与Kmeans的关系

  如上所述,Kmeans是一个有贼心没贼胆的怂货,因为限定了H的形式,所以它只能是离散取值的,于是Kmeans只能乖乖地在各种正经的指示矩阵之间跳转,直到找到最佳方案。如果再进一步,无视H的离散性,而是直接去对相似度矩阵XTX做特征值分解,根据瑞利熵的性质,取若干最大特征值对应的特征向量拼起来就是H了,只是现在算出来的H不再像“正经”定义的那样,它可能统一行里有多个取值,甚至可能取负数,但是它就是满足Kmeans最优化目标的条件。
  现在看看PCA,Kmeans和PCA有什么联系呢?PCA做了Kmeans不敢做的事情,特征值分解。根据上面的分析,当Kmeans的相似性度量取欧式距离时,对数据进行奇异值分解后的左右矩阵就有了特殊的意义:U=WV=H

X=UΣVT=WΣHTH=XTWΣ

  我们来看一下PCA计算的松弛化指示矩阵H有什么意义。首先,XTW可以看做是将X进行一次正交变换,它将数据从原始空间变换到一个新的空间,数据在这里的投影方差最大化了。接着,XTWΣ可以看做是对变换后的数据各维度分别进行缩放,这个可以忽略不计。因此,Kmeans的簇的指示矩阵H(松弛化)实际上就是PCA投影之后的数据,可以说PCA实际上是在进行一种松弛化的Kmeans聚类。虽然PCA是在找正交变换,Kmeans是在划分簇类,但它们在做的几乎是同一件事情。


Kmeans与谱聚类的关系

  谱聚类中RatioCut是对拉普拉斯矩阵L进行特征值分解(目标为minHHTLH),NCult则是对标准化过的拉普拉斯矩阵D1/2LD1/2做特征值分解(目标为minHHTD1/2LD1/2H),但两个矩阵都可以看做是一种相似性矩阵。与Kmeans类似,谱聚类里的H也是指示矩阵,但与Kmeans不同,谱聚类选择无视H的离散约束,对相似度矩阵(拉普拉斯矩阵)进行特征值分解,得到松弛化的H。由上面的分析可知,H是原始数据X映射到新空间后的结果,虽然它是松弛化的指示变量,但并不能直接用来指示聚类结果。最后还需要用H作为数据继续Kmeans聚类,得到最终结果。
  我认为谱聚类相当于Kernel Kmeans+松弛化指示矩阵,因为谱聚类的相似度矩阵使用拉普拉斯矩阵(我认为这里相似度矩阵、邻接矩阵、拉普拉斯矩阵是等价的),所以是核化的。
  谱聚类的突破有两点,首先没有限制相似性度量用欧氏距离,而是用拉普拉斯矩阵将相似度扩展为任意函数。其次,它将原问题(NP难)松弛化,用特征值分解的方式获得样本在新空间中的表达。


谱聚类与PCA的关系

  谱聚类的流程有点像:首先将原始数据映射到一个新的空间,然后做Kmeans。我认为谱聚类的前半部分相当于Kernel PCA。Kernel PCA对核函数映射过的相似度矩阵(原本是协方差)进行特征值分解,而谱聚类对拉普拉斯矩阵(也是相似度)进行特征值分解。如果说普通PCA是将原始数据进行正交变换映射到新的空间,那么谱聚类和Kernel PCA就是对原始数据进行某种非线性变换映射到新的空间。
  很多时候对数据进行线性变换仍然无法获得良好的可分性,但引入非线性性则可能做得到,这也是核方法存在的意义,从这个角度上看谱聚类,它就是核化的PCA+Kmeans聚类。


PCA与LDA的关系

  LDA(线性判别分析)是带label的,它是有监督学习,要求投影后同一类别的投影点尽可能接近,不同各类别的类中心之间既可能远。对于普通的二类LDA,假设有两类,类均值(中心)μj,类协方差Covj

μj=1NjxCjx

Covj=xCj(xμj)(xμj)T

于是定义定义类内散度和类间散度:

Sw=Cov1+Cov2|Sb=(μ1μ2)(μ1μ2)T

投影后类中心间距:

||wTμ1wTμ2||2=wT(μ1μ2)(μ1μ2)Tw=wTSbw

投影后类内方差:

wTCov1w+wTCov2w=wTSww

因此目标是:

argmaxwJ(w)=wTSbwwTSww

  PCA的目标是一个瑞利熵,LDA的目标则是一个广义瑞利熵,他们的求解是类似的,都是对某个矩阵进行特征值分解,从而得到变换基。从原理上,PCA仅在最大化类间距离,但PCA中的“类”,是指每一个特征维度。


参考资料

PCA,Kmeans,NMF和谱聚类之间的联系
聚类–谱聚类
降维–主成分分析(PCA)
线性判别分析LDA原理总结

阅读更多
换一批

没有更多推荐了,返回首页