核主成分分析—Kernel Principal Component Analysis(KPCA)

摘要:

一种新的非线性“主成分分析(PCA)”方法被提出了。

通过对核函数的积分,利用非线性映射,我们可以有效地计算与输入空间相关的高维特征空间中的主成分。

例如,在图像中所有可能的d个像素的空间。

我们给出了该方法的推导,并给出了用于模式识别的多项式特征提取的实验结果。

1.介绍

假设我们有一个数据集:

x_{k},k= 1,\cdot \cdot \cdot ,l,x_{k}\in R^{N}

其中,数据集x_{k}的均值为0(如果均值不为0,要先对x_{k}做处理,减去均值)

\sum _{K=1}^{l}x{_{k}}=0

x_{k}的协方差矩阵:

C=\frac{1}{l}\sum _{j=1}^{l}x{_{j}}x_{j}^{T}(1)

主成分分析(PCA)其实是对数据集x_{k}做基变换。

经过这个基变换之后,使得协方差矩阵能被对角化。

特征向量基中的新坐标,即特征向量上的正交投影,称为主分量。

在本文中,我们将此设置推广到以下非线性类型之一。

假设我们将数据非线性映射到特征空间F:

\Phi :R^{N}\rightarrow F,x \mapsto X.(2)

我们将证明,即使F具有任意多的维数,只要\Phi确定下来,我们还是可以在F中使用PCA。

这是通过使用支持向量机中已知的核函数来完成的。

2.Kernel PCA

假设我们的数据x_{k}映射到特征空间后变成\Phi(x_{1})...\Phi(x_{l})

而且,均值为0

\sum _{k=1}^{l}\Phi(x_{k})=0

那么,计算相应的协方差矩阵:

\bar{C}=\frac{1}{l}\sum _{j=1}^{l}\Phi(x_{j})\Phi(x_{j})^{T}(3)

接下来,我们要去寻找矩阵的特征值\lambda\lambda\geqslant 0),还要找到特征向量V\in F

使得\lambda V=\bar{C}V

我们知道,所有的特征向量的解V其实都在\Phi(x_{1})...\Phi(x_{l})的空间中。

这意味着我们可以考虑另一个等式:

\lambda (\Phi(x_{k})\cdot V)=(\Phi(x_{1})\cdot \bar{C}V),k=1,\cdot \cdot \cdot ,l(4)

对于这个等式,存在系数\alpha _{1}...\alpha _{l},使得:

V=\sum _{i=1}^{l}\alpha _{i}\Phi(x_{i})(5)

定义一个l\times l的矩阵K

K_{ij}:=(\Phi(x_{i})\cdot \Phi(x_{j}))(6)

“:=”表示“定义为”

联立(3)(4)(5),得:

l\lambda K\alpha =K^{2}\alpha(7)

其中\alpha表示具有元素\alpha _{1}...\alpha _{l}的列向量。

为了找到(7)的解

我们解决这个特征值的问题:

l\lambda \alpha =K\alpha(8)

对于任何一个非0的特征值,显然,所有能满足(8)的解都能使(7)成立

此外,这表明(8)的任何附加解对于展开式(5)来说没有影响,因此对我们来说不感兴趣。

为了对F中的相应的向量进行归一化,也就是使

1=(V^{k}\cdot V^{k})

我们可以对属于非零特征值的解\alpha^{k}进行归一化。

通过式子(5),(6)和(8),1=(V^{k}\cdot V^{k})转化为

1=\sum _{i,j=1}^{l}\alpha _{i}^{k}\alpha _{j}^{k}(\Phi(x_{i})\cdot \Phi(x_{j}))=(\alpha ^{k}\cdot K\cdot \alpha ^{k})=\lambda_{k}(\alpha ^{k}\cdot \alpha ^{k})(9)

为了提取主分量,我们根据以下公式计算图像的测试点\Phi(x)投影到F中的特征向量V^{k}上的结果

由(5),得:

V^{k}\cdot \Phi(x)=\sum _{i=1}^{l}\alpha _{i}^{k}(\Phi(x_{i})\Phi(x))(10)

注意,(6)和(10)都不需要\Phi(x_{i})以明确的形式表示,它们仅在点积中需要。

因此,我们可以使用核函数来计算这些式子,而无需实际执行映射\Phi

对于核K(x,y)的一些选择,可以用泛函分析的方法证明,存在一个映射到某个点积空间F的映射\Phi(可能具有无限维),使得K能计算F中的点积。

目前已经成功地用于支持向量机的内核有许多,其中包括多项式核:

K(x,y)=(x\cdot y)^{d}(11)

此外还有径向基函数:radial basis functions(RBF) 

K(x,y)=e^{ \frac{-\left \| x-y \right \|^{2}}{(2\sigma ^{2})} }

Sigmoid核:

K(x,y)=tanh(\kappa (x\cdot y)+\theta )

可以表明,D次方的多项式核对应于映射\Phi,映射到一个输入模式的d次方的所有乘积所跨越的特征空间。

(没看懂这句话啥意思,但是看下面的例子就知道了)

对于N=2,d=2的情况:

(x\cdot y)^{2}=( x_{1}^{2},x_{1}x_{2},x_{2}x_{1},x_{2}^{2} )( y_{1}^{2},y_{1}y_{2},y_{2}y_{1},y_{2}^{2} )^{T}

核PCA的基本思想:用非线性核函数k代替标准点积,隐式地在可能与输入空间非线性相关的高维空间F中执行PCA。虚线是等特征值的等高线。

如果我们处理的对象是一张图片,那么我们就可以在d个像素的所有乘积的空间中工作,从而在进行PCA时考虑更高阶的统计量。

用核函数代替所有出现(\Phi(x)\cdot \Phi(y))的地方,我们得到以下的KPCA算法:

1:我们计算点积矩阵K_{ij}:=(K(x_{i}\cdot x_{j}))_{ij}

2:通过使K对角化来求解(8)

3:在(9)的约束下,使特征向量的系数\alpha^{n}归一化。

4:利用式子(10)通过在特征向量上计算投影来提取测试点X的主分量(对应于核K)

我们应该指出,在实践中,我们的算法不等价于通过显式映射到特征空间F中得到的非线性PCA的形式:即使点积矩阵的秩会受样本大小的限制,但如果维度太高,我们还是没办法计算矩阵。

例如,16×16像素的图片和多项式度d=5,这样产生10^10的维数。

通过提供在该子空间中的向量之间计算点积的方法,核PCA通过自动选择F的子空间来处理这个问题。(由k的秩确定维数)

这样,我们必须在输入空间中计算‘核函数’,而不是在10^10维空间中计算点积。

为了结束本节,我们简要地提到了放弃\Phi(x_{i})以F为中心的假设的情况。

注意,通常我们不知道数据中心,因为我们不能计算没有显式形式的一组点的平均值。

取而代之的是,我们必须使用上面的代数\Phi(x_{i})

\widetilde{\Phi}(x_{i}) = \Phi(x_{i})-\frac{1}{l}\sum _{i=1}^{l} \Phi(x_{i})

事实证明,在这种情况下,我们必须对矩阵进行角化。

对角化之后的矩阵记为:\widetilde{K}

 

在程序中,核的种类有以下:

kernel : "linear" | "poly" | "rbf" | "sigmoid" | "cosine" | "precomputed"

"linear":线性核,K(x,y)=x^{T}\cdot y。(相当于普通的PCA)

"poly":多项式核,K(x,y)=( x\cdot y+1)^{d}

"rbf":(Radial Basis Function)高斯径向基核函数 ,K(x,y)=e^{ \frac{-\left \| x-y \right \|^{2}}{(2\sigma ^{2})} }

"sigmoid":sigmoid核函数,K(x,y)=tanh(\kappa (x\cdot y)+\theta )

"cosine":余弦核函数K(x,y)=\frac{x\cdot y}{\left \| x \right \|\left \| y \right \|}

 

  • 3
    点赞
  • 31
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值