kernel-PCA的应用步骤

Kernel-PCA是采用Kernel方法,在更高维的空间中做PCA分析,但是得到的主成分的个数却不能超过原始数据的维度。Kernel-PCA适用于非凸分布的数据的分析,但值得注意的是,因为Kernel-PCA是采用Kernel做隐式高维映射,所以只能进行信号的最小误差表示,不能进行信号重建操作。

在这一节中,Kernel-PCA算法的每一步将被拿出来做不涉及深入证明的解释。主要目的是简明表述Kernel-PCA算法,以免被复杂的证明过程扰乱了主线。

1. 选择合适的Kernel

Kernel通过内积间接定义了高维映射函数。设Kernel函数为KK,高维映射函数为ϕ\phi,他们之间的关系为:

(1)K(xi,xj)=<ϕ(xi),ϕ(xj)>K(\boldsymbol x_i,\boldsymbol x_j) = <\phi(\boldsymbol x_i),\phi(\boldsymbol x_j)> \tag{1}

在使用Kernel-PCA之前,需要选择一个合适的Kernel。目前常用的Kernel有Gaussian Kernel,Polynomial Kernel等。具体选择哪一个Kernel尚无具体方法,一般选择Gaussian Kernel即可。

2. 中心化高维空间中的数据

跟PCA相同,Kernel-PCA也需要数据的中心化,但被中心化的数据是高维映射后的数据ϕ(xi)\phi(x_i)。这里中心化的操作可以在Kernel上完成:

(2)K(xi,xj)C=Kij1NpKip1NqKqj+1N2pqKpqK(x_i,x_j) ^{C}=K_{ij}-\frac{1}{N}\sum_pK_{ip}-\frac{1}{N}\sum_{q}K_{qj}+\frac{1}{N^2}\sum_{p}\sum_{q}K_{pq} \tag{2}

在Kernel-PCA中采用K(xi,xj)CK(x_i,x_j)^C会隐式地对高维映射后的数据做中心化。

(2)(2)写作矩阵形式如式(3)(3)表示:

(3)KC=K1NKK1N+1NK1NK^C = K - \boldsymbol 1_NK - K\boldsymbol 1_N + \boldsymbol 1_NK\boldsymbol 1_N \tag{3}

其中1N1_NN×NN\times N的矩阵,其中每一个元素都是1/N1/N

3. 计算高维空间中的主成分

采用KCK^C做计算即可,计算式如式(4)(4)所示:

(4)KCα=λαK^C\alpha=\lambda\alpha \tag{4}

跟PCA相同,将λ\lambda从大到小排列,选取前NNλ\lambda对应的特征向量α\alpha即可,此时可以将原始数据投影至NN维空间。值得注意的是,α\alpha的确代表了主成分,但是它并不是主成分的方向向量。

4. 在主成分方向上做投影

Kernel-PCA的投影跟PCA相同,也是数据跟主成分做内积。但是因为Kernel-PCA的主成分在高维空间中,所以这里要借助Kernel进行投影。例如,对新数据t\boldsymbol t做投影如下:

(5)t=iαiKD(xi,t)\boldsymbol t' = \sum_{i}\alpha_iK^D(\boldsymbol x_i,\boldsymbol t) \tag{5}

其中αi\alpha_i是特征向量α\alpha 的某个维度上的坐标,即α=[α1,α2,...,αi,...,αn]\alpha=[\alpha_1,\alpha_2,...,\alpha_i,...,\alpha_n]。而KDK^D是对xi\boldsymbol x_it\boldsymbol t做了中心化处理的Kernel:

(6)K(xi,t)D=K(xi,t)1NpKip1NqK(xq,t)+1N2pqKpqK(\boldsymbol x_i,\boldsymbol t)^D = K(\boldsymbol x_i,\boldsymbol t) - \frac{1}{N}\sum_pK_{ip}-\frac{1}{N}\sum_qK(\boldsymbol x_q,\boldsymbol t) + \frac{1}{N^2}\sum_p\sum_qK_{pq} \tag{6}

此时Kernel-PCA将数据t\boldsymbol t投影到由X\boldsymbol X计算得到的主成分上。

0%