【机器学习】非线性降维与核主成分分析KPCA

其他机器学习系列文章见于专题:机器学习进阶之路——学习笔记整理,欢迎大家关注。

1. 核化线性降维

  线性降维方法假设从高维空间到低维空间的函数映射是线性的,然而在有些时候,高维空间是线性不可分的,需要找到一个非线性函数映射才能进行恰当的降维,这就是非线性降维。

线性可分问题与线性不可分问题

  核化线性降维方法是一种典型的非线性降维方法,它基于核技巧对线性降维方法进行“核化”,然后再降维。

  下面我们将要介绍的核主成分分析(KPCA)就是一种经典的核化线性降维方法。

2. KPCA概述

  核主成分分析(Kernelized PCA,KPCA)利用核技巧将 d d d维线性不可分的输入空间映射到线性可分的高维特征空间中,然后对特征空间进行PCA降维,将维度降到 d ′ d' d维,并利用核技巧简化计算。也就是一个先升维后降维的过程,这里的维度满足 d ′ < d < D d'<d<D d<d<D

3. KPCA原理

  原始输入空间中的样本 X = ( x 1 , x 2 , … , x m ) X = \left( {{x_1},{{x}_2}, \ldots ,{{x}_m}} \right) X=(x1,x2,,xm)通过映射 ϕ \phi ϕ得到高维( D D D维)特征空间的样本 Φ ( X ) = ( ϕ ( x 1 ) , … , ϕ ( x i ) , … , ϕ ( x m ) ) \Phi ( X ) = \left( \phi \left( x _ { 1 } \right) , \ldots , \phi \left( x _ { i } \right) , \ldots , \phi \left( x _ { m } \right) \right) Φ(X)=(ϕ(x1),,ϕ(xi),,ϕ(xm))(假设高维空间的数据样本已经进行了中心化),之后利用投影矩阵 W = ( w 1 , … , w j , … , w d ′ ) W = \left( {{w_1}, \ldots ,{w_j}, \ldots ,{w_{d'}}} \right) W=(w1,,wj,,wd)把高维空间的样本投影到低维空间。

  我们只需要对高维空间的协方差矩阵 Φ ( X ) Φ ( X ) T \Phi ( X ) \Phi ( X ) ^ { T } Φ(X)Φ(X)T进行特征值分解,将求得的特征值排序,取前 d ′ d' d个特征值对应的特征向量构成 W = ( w 1 , w 2 , … , w d ′ ) W = \left( w _ { 1 } , w _ { 2 } , \dots , w _ { d ^ { \prime } } \right) W=(w1,w2,,wd),这就是KPCA的解。

  首先求解式(1):
Φ ( X ) Φ ( X ) T W = λ W (1) \Phi \left( X \right)\Phi {\left( X \right)^T}W = \lambda W\tag{1} Φ(X)Φ(X)TW=λW(1)

  由式(1)可得式(2):
W = 1 λ Φ ( X ) Φ ( X ) T W = Φ ( X ) A (2) W = \frac{1}{\lambda }\Phi \left( X \right)\Phi {\left( X \right)^T}W = \Phi \left( X \right)A \tag{2} W=λ1Φ(X)Φ(X)TW=Φ(X)A(2)

  其中,投影矩阵的第 j j j维为 w j = 1 λ j ( ∑ i = 1 m ϕ ( x i ) ϕ ( x i ) T ) w j = ∑ i = 1 m ϕ ( x i ) ϕ ( x i ) T w j λ j = ∑ i = 1 m ϕ ( x i ) α i j w _ { j } = \frac { 1 } { \lambda _ { j } } \left( \sum _ { i = 1 } ^ { m } \phi \left( x _ { i } \right) \phi \left( x _ { i } \right) ^ { T } \right) w _ { j } = \sum _ { i = 1 } ^ { m } \phi \left( x _ { i } \right) \frac { \phi \left( x _ { i } \right) ^ { T } w _ { j } } { \lambda _ { j } } = \sum _ { i = 1 } ^ { m } \phi \left( x _ { i } \right) \alpha _ { i } ^ { j } wj=λj1(i=1mϕ(xi)ϕ(xi)T)wj=i=1mϕ(xi)λjϕ(xi)Twj=i=1mϕ(xi)αij;而 α i j = 1 λ j ϕ ( x i ) T w j \alpha _i^j = \frac{1}{{{\lambda _j}}}\phi {\left( {{x_i}} \right)^T}{w_j} αij=λj1ϕ(xi)Twj α i {\alpha _i} αi的第 j j j个分量,矩阵 A = ( α 1 , … , α i , … , α m ) {\bf{A}} = \left( {{\alpha _1}, \ldots ,{\alpha _i}, \ldots ,{\alpha _m}} \right) A=(α1,,αi,,αm)

  高维空间的样本内积计算量非常大,在这里,利用核技巧避免对特征空间上的样本内积直接进行计算,于是我们需要引入核函数 κ ( x i , x j ) = ϕ ( x i ) T ϕ ( x j ) \kappa \left( \boldsymbol { x } _ { i } , \boldsymbol { x } _ { j } \right) = \phi \left( \boldsymbol { x } _ { i } \right) ^ { \mathrm { T } } \phi \left( \boldsymbol { x } _ { j } \right) κ(xi,xj)=ϕ(xi)Tϕ(xj)和核矩阵 K \mathbf { K } K,其中 ( K ) i j = κ ( x i , x j ) ( \mathbf { K } ) _ { i j } = \kappa \left( \boldsymbol { x } _ { i } , \boldsymbol { x } _ { j } \right) (K)ij=κ(xi,xj)

  先将式(2)代入式(1)得到:
Φ ( X ) Φ ( X ) T Φ ( X ) A = λ Φ ( X ) A (3) \Phi ( X ) \Phi ( X ) ^ { T } \Phi ( X ) A = \lambda \Phi ( X ) A\tag{3} Φ(X)Φ(X)TΦ(X)A=λΦ(X)A(3)

  两边左乘 Φ ( X ) T \Phi ( X ) ^ { T } Φ(X)T
Φ ( X ) T Φ ( X ) Φ ( X ) T Φ ( X ) A = λ Φ ( X ) T Φ ( X ) A (4) \Phi ( X ) ^ { T } \Phi ( X ) \Phi ( X ) ^ { T } \Phi ( X ) A = \lambda \Phi ( X ) ^ { T } \Phi ( X ) A\tag{4} Φ(X)TΦ(X)Φ(X)TΦ(X)A=λΦ(X)TΦ(X)A(4)

  构造出 Φ ( X ) T Φ ( X ) \Phi ( X ) ^ { T } \Phi ( X ) Φ(X)TΦ(X),进一步用核矩阵 K \mathbf { K } K代替:
K 2 A = λ K A K A = λ A (5) \mathbf { K } ^ { 2 } \mathbf { A } = \lambda \mathbf { K } \mathbf { A }\\ \mathbf { K A } = \lambda \mathbf { A }\tag{5} K2A=λKAKA=λA(5)

  由此,式(1)中的特征值分解问题就变成了式(5)中的特征值分解问题。将求得的特征值排序: λ 1 ≥ λ 2 ≥ … ≥ λ D \lambda _ { 1 } \geq \lambda _ { 2 } \geq \ldots \geq \lambda _ { D } λ1λ2λD,取 K \mathbf { K } K最大的 d ′ d' d个特征值对应的特征向量。注意:这里的特征向量是核矩阵 K \mathbf { K } K的特征向量,而不是投影矩阵 W W W的特征向量,接下来还要代回到(2)式中,得到从高维输入空间到低维空间的投影矩阵 W W W

  对于一个新样本 x x x,假设其投影后为 z z z,其第 j ( j = 1 , 2 , … , d ′ ) j \left( j = 1,2 , \dots , d ^ { \prime } \right) j(j=1,2,,d)维坐标为:
z j = w j T ϕ ( x ) = ∑ i = 1 m α i j ϕ ( x i ) T ϕ ( x ) = ∑ i = 1 m α i j κ ( x i , x ) (6) \begin{aligned} z _ { j } & = \boldsymbol { w } _ { j } ^ { \mathrm { T } } \phi ( \boldsymbol { x } ) = \sum _ { i = 1 } ^ { m } \alpha _ { i } ^ { j } \phi \left( \boldsymbol { x } _ { i } \right) ^ { \mathrm { T } } \phi ( \boldsymbol { x } ) \\ & = \sum _ { i = 1 } ^ { m } \alpha _ { i } ^ { j } \kappa \left( \boldsymbol { x } _ { i } , \boldsymbol { x } \right) \end{aligned}\tag{6} zj=wjTϕ(x)=i=1mαijϕ(xi)Tϕ(x)=i=1mαijκ(xi,x)(6)

参考文献:

  1. 《机器学习》第十章降维与度量学习——周志华
  2. KPCA原理及部分代码
  3. 降维算法之KPCA原理推导
  4. 《Python机器学习》读书笔记(七)特征抽取——kPCA
    主成分分析(PCA)和基于核函数的主成分分析(KPCA)入门
  • 2
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值