由浅入深了解PCA和KPCA
Posted ZZX-研一小学僧
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了由浅入深了解PCA和KPCA相关的知识,希望对你有一定的参考价值。
1.PCA(Principal Component Analysis)
假设有这么多个零均值训练样本(如果不是zero mean就减去平均值),PCA的目标就是找到一个比较小的集合p<=d,这个集合具有最大量的variance值,即投影到坐标轴上的variance值
根据上图的一圈变量,找到投影后分散量最大方向(即蓝色的这条线)
如何找到投影方向以及投影后的向量:
正射影长(红色这段投影线的长度):
要找到向量,就得先找到v这个方向的单位向量(代表长度是1),整体计算方法如下图
投影就是找到做内积的坐标,如下图中找到五个向量在v的内积(都是一个单值,即算出来是一个数)投影
假设有另一个轴,找到在上的内积(都是一个单值),投影的坐标
PCA的目标就是要找到一个方向分散的最大的variance,如下图所示
由于内积算出的都是单值,因此是用单变数的统计概念来计算variance值,下图是计算方法(图中C是协方差矩阵,又称共变异数矩阵)
在找到所有variance值后,就是要找到最大的variance值,可用argmax函数
要找到v就要先找到,就用Lagrangian(拉格朗日函数)来解,求微分后会得到一个特征值(eigenvalue)和特征向量(eigenvector)
由上式可知,只需要把求协方差矩阵C变成求两个值的最大值就可以了,即最大特征值和最大特征向量(限制eigenvector的长度为1)
根据公式简化可以得到,最后要求的最大值其实就是最大的特征值(eigenvalue)
以此类推,如果要找两个方向的variance,即找最大的eigenvalue和第二大的eigenvalue;找三个方向的variance就是找最大的、第二大的和第三大的eigenvalue,最后得到的variance值就是几个相加起来的结果(因为求出来的value都是垂直的)
根据前面的公式推导,多变量统计中都是矩阵,分别为列向量矩阵和行向量矩阵,可以用下图中的来表示
2.KPCA(Kernel-based PCA)
什么是kernel化——可以指的是将原先的空间的资料送到一个feature space上去(feature space的维度比较大),通过该feature space来进行计算。所以KPCA的目标就是把feature space的协方差矩阵C(covariance matrix)和eigenvalue的值求出来。步骤如下,即把training sample训练样本送到feature space上去,再根据单值公式套入计算
上式中我们能够知道的只有kernel function,而是不知道的,所以我们就要想办法把公式C变成跟kernel function有关,下图是由kernel function计算出的K值
由上面的公式计算出的简化为,而原始式子中是,所以我们要通过找到K中的eigenvectors来找到C中的eigenvectors,最后计算出两者的eigenvalue跟eigenvector的关系
由上面公式推导可以看出,两者的eigenvalue是相同的,但两者的eigenvectors是不一样的,一个的eigenvectors是u,一个的eigenvectors是,但最终我们要做到的是令eigenvector的长度值为1,就除以它自己长度就可以
根据上面的式子可以找到两向量u和v之间的一个关系,但是关系式中的仍是未知的,而对于最终的结果来说,要得到投影到向量上的内积值才是我们的终极目标。因此再通过一次内积,便可以找到要求的variance
将data送到feature space上面,在feature space上面找到变异量最大的方向,投影下来的坐标就可以随之找出
总结:对于KPCA就是先算出kernel matrix的eigenvalue跟eigenvectors,然后求出来的eigenvalue和eigenvectors按照大小排列,得到了kernel matrix后就根据投影后的测试样本求出covariance matrix(不同的kernel对应不同的不同kappa所求出来的结果会对应不同)
有两个重要的因素决定值,一个是kernel function,挑选合适的kernel function是一个很重要的关键,其次是资料的形态
PCA跟KPCA最终的一个对比图
以上是关于由浅入深了解PCA和KPCA的主要内容,如果未能解决你的问题,请参考以下文章
核主成分分析(Kernel Principal Component Analysis, KPCA)的公式推导过程
解释一下核主成分分析(Kernel Principal Component Analysis, KPCA)的公式推导过程(转载)
机器学习强基计划8-3:详细推导核化主成分分析KPCA算法(附Python实现)