最近上课学到了KPCA,之前也有遇到过,但并没有进行详细了解,上课时老师讲的比较快,感觉糊里糊涂的,课后在网上找了一些资料进行学习,然后结合自己的理解进行了整理。
思路
KPCA和PCA一样也是进行降维,但区别在于KPCA处理的问题是非线性的。KPCA先将数据通过映射 ϕ \phi ϕ映射到高维空间,然后再将映射后的数据进行线性变换实现降维。
这个思路写得比较简略,大家可以先看后面的总结,有一个整体的印象,然后再进行阅读。
向高维空间映射
回顾PCA,我们知道PCA求解的最终问题是 X X T W = λ W XX^{T}W=\lambda W XXTW=λW(可以结合西瓜书相关章节进行复习)。
其中X为数据矩阵,每一列代表一个样本;W为降维时的线性变换矩阵,每个列向量w就是降维后的空间中的一个基向量(可以理解为直角坐标系下的坐标轴),基的个数决定了降维后数据的维数; λ \lambda λ为对角矩阵,对角线上的元素是 X X T XX^{T} XXT的特征值。
我们在此基础上引入非线性映射 ϕ \phi ϕ,那么上面问题就可以转换为 ϕ ( X ) [ ϕ ( X ) ] T W = λ W \phi (X)[\phi (X)]^{T}W=\lambda W ϕ(X)[ϕ(X)]TW=λW。
其中W=( w 1 , w 2 , . . . , w m w_{1},w_{2},...,w_{m} w1,w2,...,wm),我们任取其中一个基向量w,可得 ϕ ( X ) [ ϕ ( X ) ] T w = λ w \phi (X)[\phi (X)]^{T}w=\lambda w ϕ(X)[ϕ(X)]Tw=λw(1)。
注意我们通常并不直接定义 ϕ \phi ϕ(这在核技巧中会有提及),也就是说我们并不知道 ϕ ( X ) [ ϕ ( X ) ] T \phi (X)[\phi (X)]^{T} ϕ(X)[ϕ(X)]T的具体内容,因此不能向PCA那样直接对其进行特征值分解。
因为 ϕ ( X ) [ ϕ ( X ) ] T = ∑ i = 1 N ϕ ( x i ) [ ϕ ( x i ) ] T \phi (X)[\phi (X)]^{T}=\sum_{i=1}^{N}\phi (x_{i})[\phi (x_{i})]^{T} ϕ(X)[ϕ(X)]T=∑i=1Nϕ(xi)[ϕ(xi)]T,那么(1)可以进一步表示为
∑ i = 1 N ϕ ( x i ) [ ϕ ( x i ) ] T w = λ w \sum_{i=1}^{N}\phi (x_{i})[\phi (x_{i})]^{T}w=\lambda w ∑i=1Nϕ(xi)[ϕ(xi)]Tw=λw
⇒ w = 1 λ ∑ i = 1 N ϕ ( x i ) [ ϕ ( x i ) ] T w =