引
kernel PCA通过\(k(x,y)\)隐式地将样本由输入空间映射到高维空间\(F\),那么问题来了,如何回来呢,即已知\(\Phi(x) \in F\),如何找到其原像\(x\)呢?可是呢:
- 这个问题不一定有解,因为从低维空间往高维空间映射往往不是满射;
- 即便有解,这个也不一定唯一。
但是这个方面的应用还是蛮多的啊,PCA可以通过抛去一些方向(方差小的部分)来去噪声(虽然效果似乎不是很好),kernel PCA如果也要这么做的话,就会产生上面的问题。这篇文章就是提出了一种可行的方法来解决这个问题。
通过最小化下式:
\[ \min \limits_z \quad \rho (z)= \|\Phi(z) - \mathrm{P}_n \Phi(x)\|^2 \]
其中\(\mathrm{P}_n(\cdot)\)是投影算子——将向量投影至由前n个特征向量构成的子空间之中。
主要内容
在化简上式之前,需要先进行一些必要的符号说明:
\[ V^k = \sum \limits_{i=1}^l \alpha_i^k \Phi(x_i) \]
为第k个特征向量(F空间中的),其中\(l\)为样本个数(沿用了论文的符号)。
定义:
\[ \beta_k = (V^k\cdot \Phi(x))=\sum \limits_{i=1}^l \alpha_i^k k(x, x_i) \]
那么:
\[ \mathrm{P}_n \Phi(x) = \sum_{i=1}^n \beta_k V^k \]
现在,我们可以展开\(\rho(z)\):
其中\(\Omega\)为与\(z\)无关的项,通过梯度下降可以获得\(z\)。
如果我们假设\(k(x,y)=k(\|x-y\|^2)\),即\(k(x,x)\)为常数,则:
其中\(\Omega'\)为与\(z\)无关的项,\(\gamma_i = \sum_{k=1}^n \beta_k \alpha_i^k\)
容易计算其梯度为(差个常数2):
\[ \nabla_z \rho(z) = \sum \limits_{i=1}^l \gamma_i k'(\|z-x_i\|)(z-x_i) \]
令其为0,得到一个必要条件:
\[ z = \frac{\sum \limits_{i=1}^l \delta_i x_i}{\sum \limits_{i=1}^l \delta_i} \]
其中\(\delta_i = \gamma_i k'(\|z-x_i|^2\)
一个例子就是高斯核,这时:
选取一个合适的起始点(分母不为0),可以通过下式来迭代:
这么来想,一般的迭代方法是:
\[ z_{t+1} = z_t - \eta \nabla \rho(z_t) \]
令\(\eta=1 / \sum_{i=1}^l \delta_i\)即可得(10),我不知道这么做是否有别的深意。