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 X ( d × N ) = U Σ V T → X X T = U Λ U T

UTXXTU=Λ U T X X T U = Λ

  然后,这是PCA的目标:

minWs.t.WTXXTWWTW=I min W W T X X T W s . t . W T W = I

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


Kmeans与SVD/EVD的关系

  首先从SVD出发:

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

VTXTXV=Λ V T X T X V = Λ

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

===minCkiCk||xiμk||22minCkiCk(xTixi2xTiμk+μTkμk)minC(ixTixik1nki,jCkxTixj)minC(Tr(XTX)Tr(HXTXH)) min C ∑ k ∑ i ∈ C k | | x i − μ k | | 2 2 = min C ∑ k ∑ i ∈ C k ( x i T x i − 2 x i T μ k + μ k T μ k ) = min C ( ∑ i x i T x i − ∑ k 1 n k ∑ i , j ∈ C k x i T x j ) = min C ( T r ( X T X ) − T r ( H X T X H ) )

maxHs.t.Tr(HTXTXH)HTH=IK×K ⇔ max H T r ( H T X T X H ) s . t . H T H = I K × K

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

Hij={1Nk0xiCjxiCj H i j = { 1 N k x i ∈ C j 0 x i ∉ C j

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


PCA与Kmeans的关系

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

X=UΣVT=WΣHTH=XTWΣ X = U Σ V T = W Σ H T → H = X T W Σ

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


Kmeans与谱聚类的关系

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


谱聚类与PCA的关系

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


PCA与LDA的关系

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

μj=1NjxCjx μ j = 1 N j ∑ x ∈ C j x

Covj=xCj(xμj)(xμj)T C o v j = ∑ x ∈ C j ( x − μ j ) ( x − μ j ) T

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

Sw=Cov1+Cov2|Sb=(μ1μ2)(μ1μ2)T S w = C o v 1 + C o v 2 | S b = ( μ 1 − μ 2 ) ( μ 1 − μ 2 ) T

投影后类中心间距:

||wTμ1wTμ2||2=wT(μ1μ2)(μ1μ2)Tw=wTSbw | | w T μ 1 − w T μ 2 | | 2 = w T ( μ 1 − μ 2 ) ( μ 1 − μ 2 ) T w = w T S b w

投影后类内方差:

wTCov1w+wTCov2w=wTSww w T C o v 1 w + w T C o v 2 w = w T S w w

因此目标是:

argmaxwJ(w)=wTSbwwTSww arg ⁡ max w J ( w ) = w T S b w w T S w w

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


参考资料

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

  • 5
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值