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

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

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


PCA与SVD/EVD的关系

  首先,从SVD入手:

X ( d × N ) = U Σ V T X X T = U Λ U T

U T X X T U = Λ

  然后,这是PCA的目标:

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

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


Kmeans与SVD/EVD的关系

  首先从SVD出发:

X ( d × N ) = U Σ V T X T X = V Λ V T

V T X T X V = Λ

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

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 ) )

max H T r ( H T X T X H ) s . t . H T H = I K × K

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

H i j = { 1 N k x i C j 0 x i C j

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


PCA与Kmeans的关系

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

X = U Σ V T = W Σ H T H = X T W Σ

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


Kmeans与谱聚类的关系

  谱聚类中RatioCut是对拉普拉斯矩阵 L 进行特征值分解(目标为 min H H T L H ),NCult则是对标准化过的拉普拉斯矩阵 D 1 / 2 L D 1 / 2 做特征值分解(目标为 min H H T D 1 / 2 L D 1 / 2 H ),但两个矩阵都可以看做是一种相似性矩阵。与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 ,类协方差 C o v j

μ j = 1 N j x C j x

C o v j = x C j ( x μ j ) ( x μ j ) T

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

S w = C o v 1 + C o v 2 | S b = ( μ 1 μ 2 ) ( μ 1 μ 2 ) T

投影后类中心间距:

| | w T μ 1 w T μ 2 | | 2 = w T ( μ 1 μ 2 ) ( μ 1 μ 2 ) T w = w T S b w

投影后类内方差:

w T C o v 1 w + w T C o v 2 w = w T S w w

因此目标是:

arg max w J ( w ) = w T S b w w T S w w

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


参考资料

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

猜你喜欢

转载自blog.csdn.net/songbinxu/article/details/80868779