PCA(用数学原理进行推导和解释)

首发于 我不爱机器学习 公众号,微信号:learning_free


在学PCA的时候总是提到根据方差选主成分,方差计算贡献率之类的,但一直不明白其中的原理,今天就来给大家解析一下。

首先是一些数学公式,大家可以找一些例子证明一下,这里就不证明了。

1、相关数学知识

1.1 均值

x={1,2,3}
E [ a + x ] = a + E [ x ] E [ α x ] = α E [ x ] E [ α x + a ] = α E [ x ] + a \begin{aligned} E[a+x] &=a+E[x] \\ E[\alpha x] &=\alpha E[x] \\ E[\alpha x+a] &=\alpha E[x]+a \end{aligned} E[a+x]E[αx]E[αx+a]=a+E[x]=αE[x]=αE[x]+a

1.2 方差

V a r [ a + x ] = V a r [ x ] V a r [ α x ] = α 2 V a r [ x ] V a r [ A x + b ] = A V a r [ x ] A T \begin{aligned} \mathrm{Var}[a+x] &=\mathrm{Var}[x] \\ \mathrm{Var}[\alpha x] &=\alpha^2\mathrm{Var}[x] \\ \mathrm{Var}[Ax+b] &=A\mathrm{Var}[x]A^T \end{aligned} Var[a+x]Var[αx]Var[Ax+b]=Var[x]=α2Var[x]=AVar[x]AT

2、相关向量知识

2.1 向量的长度

对于向量x,y: x T y = ∑ i = 1 N x i y i , x , y ∈ R N x^Ty=\sum_{i=1}^Nx_iy_i,x,y \in \mathbb{R}^N xTy=i=1Nxiyi,x,yRN,其中向量 x=[1,2],向量 y=[2,1],如下图所示。​​

在这里插入图片描述

向量x的长度: ∣ ∣ x ∣ ∣ = x T x = ∑ i = 1 N x i 2 = 1 2 + 2 2 = 5 ||x||=\sqrt{x^Tx}=\sqrt{\sum_{i=1}^Nx_i^2}=\sqrt{1^2+2^2}=\sqrt{5} x=xTx =i=1Nxi2 =12+22 =5

向量y的长度: ∣ ∣ y ∣ ∣ = 5 ||y||=\sqrt{5} y=5

向量的距离(两点之间的距离):
d = ∣ ∣ x − y ∣ ∣ = ( x − y ) T ( x − y ) = ∥ [ 1 2 ] − [ 2 1 ] ∥ = ∥ [ − 1 1 ] ∥ = 1 + 1 = 2 \begin{aligned} d &=||x-y||=\sqrt{(x-y)^T(x-y)} \\ &=\left \| \begin{bmatrix} 1\\ 2 \end{bmatrix}- \begin{bmatrix} 2\\ 1 \end{bmatrix} \right \|=\left \| \begin{bmatrix} -1\\ 1 \end{bmatrix}\right \|=\sqrt{1+1}=\sqrt{2} \end{aligned} d=xy=(xy)T(xy) =[12][21]=[11]=1+1 =2
向量之间的夹角: c o s α = x T y ∥ x ∥ ∥ y ∥ = 4 5 ≈ 0.64 r a d \mathrm{cos} \alpha=\frac{x^Ty}{\left \| x \right \| \left \| y \right \|}=\frac{4}{5}\approx 0.64\mathrm{rad} cosα=xyxTy=540.64rad

2.2 内积定义(inner product definition)

x,y都是向量即 x , y ∈ V x,y\in V x,yV,向量内积的表示: < ⋅ , ⋅ > = V ∗ V , ∈ R <\cdot ,\cdot >=V*V,\in \mathbb{R} <,>=VV,R

内积的属性:

  • 对称性(symmetry): < x , y > = < y , x > <x,y>=<y,x> <x,y>=<y,x>

  • 正定(positive definite): < x , x > ≥ 0 , < x , x > ⩾ 0 <x ,x>\geq 0,<x ,x> \geqslant 0 <x,x>0,<x,x>0,当 x = 0 x=0 x=0 < x , x > = 0 <x,x>=0 <x,x>=0

  • 双线性(bilinear):对于 x , y , z ∈ V , λ ∈ R x,y,z \in V,\lambda \in \mathbb{R} x,y,zV,λR
    < λ x + z , y > = λ < x , y > + < z , y > < x , λ y + z > = λ < x , y > + < x , z > \begin{aligned} <\lambda x+z ,y> &=\lambda<x,y>+<z,y> \\ < x ,\lambda y+z> &=\lambda<x,y>+<x,z> \end{aligned} <λx+z,y><x,λy+z>=λ<x,y>+<z,y>=λ<x,y>+<x,z>

上述两向量x,y 的点乘可以用内积表示为:

< x , y > = x T I y <x,y>=x^T\mathbf{I}y <x,y>=xTIy,其中 I \mathbf{I} I 是单位矩阵。

上述是正常情况下两向量之间的点乘(dot product),在内积中是这样定义的: < x , y > = x T A y <x,y>=x^T\mathbf{A}y <x,y>=xTAy
,其中 A \mathbf{A} A 是半正定矩阵

注:个人感觉内积是点乘的扩展,应用的范围更广一点。

A = [ 2 1 1 2 ] \mathbf{A}=\begin{bmatrix} 2 &1 \\ 1 & 2 \end{bmatrix} A=[2112],则 < x , y > = x T A y = 2 x 1 y 1 + x 2 y 1 + x 1 y 2 + 2 x 2 y 2 <x,y>=x^T\mathbf{A}y=2x_1y_1+x_2y_1+x_1y_2+2x_2y_2 <x,y>=xTAy=2x1y1+x2y1+x1y2+2x2y2

内积定义下表示向量的长度和距离:

此时向量 x 的长度为: ∣ ∣ x ∣ ∣ = < x , x > = 2 x 1 x 1 + x 2 x 1 + x 1 x 2 + 2 x 2 x 2 = 2 x 1 2 + 2 x 2 x 1 + 2 x 2 2 = 14 \begin{aligned} ||x||=\sqrt{<x,x>} &=\sqrt{2x_1x_1+x_2x_1+x_1x_2+2x_2x_2} \\ &=\sqrt{2x_1^2+2x_2x_1+2x_2^2}=\sqrt{14} \end{aligned} x=<x,x> =2x1x1+x2x1+x1x2+2x2x2 =2x12+2x2x1+2x22 =14
此时,内积下的向量长度比点乘下的大。

向量的距离:
d = ∣ ∣ x − y ∣ ∣ = < x − y , x − y > = < x , x > − 2 < x , y > + < y , y > = 14 − 2 ∗ 14 + 14 = 0 \begin{aligned} d=||x-y|| &=\sqrt{<x-y,x-y>} \\ &=\sqrt{<x,x>-2<x,y>+<y,y>}\\ &=\sqrt{14-2*14+14}=0 \end{aligned} d=xy=<xy,xy> =<x,x>2<x,y>+<y,y> =14214+14 =0

此时,内积下的向量距离与上面点乘下的距离不同。

由上可知,通过内积计算向量的长度和距离可以不同

内积定义下的向量夹角: c o s α = < x , y > ∥ x ∥ ∥ y ∥ \mathrm{cos} \alpha=\frac{<x,y>}{\left \| x \right \| \left \| y \right \|} cosα=xy<x,y>

注:在点乘下,两向量的夹角是90度,但在内积中两向量的夹角可能不是90度。

其他一些属性:

  • ∣ ∣ λ x ∣ ∣ = ∣ λ ∣ ∥ x ∥ ||\lambda x||=|\lambda|\left \| x \right \| λx=λx
  • triangle inequality: ∣ ∣ x + y ∣ ∣ ≤ ∥ x ∥ + ∥ y ∥ ||x+y||\leq \left \| x \right \|+\left \| y \right \| x+yx+y
  • Cauchy-Schwart inequality: ∣ < x , y > ∣ ≤ ∥ x ∥ ∥ y ∥ |<x,y>|\leq \left \| x \right \|\left \| y \right \| <x,y>xy

函数和随机变量的内积:

a 函数的内积(连续变量):定义两个函数 u 和 v,其在 [a,b] 范围内的内积为:
< u , v > = ∫ a b u ( x ) v ( x ) d x <u,v>=\int _a^bu(x)v(x)\mathrm{d}x <u,v>=abu(x)v(x)dx
如果积分为 0,则两个函数 u 和 v 正交(orthogonality)。

u ( x ) = s i n ( x ) u(x)=sin(x) u(x)=sin(x),v(x)=cos(x),则 f(x)=u(x)v(x)。

因为 f ( x ) f(x) f(x) 是奇函数,所以在 [ − π , π ] [-\pi,\pi] [π,π] 范围内其积分为 0,即函数 u 和 v 正交。

b 随机变量的内积(离散变量):

若两随机变量之间不相关: v a r [ x + y ] = v a r [ x ] + v a r [ y ] \mathrm{var}[x+y]=\mathrm{var}[x]+\mathrm{var}[y] var[x+y]=var[x]+var[y]

因为 var 是平方所得,所以上式类似直角三角形定理 c 2 = a 2 + b 2 c^2=a^2+b^2 c2=a2+b2,如下图所示(Pythagorean theorem),下图是几何解释。

在这里插入图片描述

不 相 关 的 两 随 机 变 量 的 内 积 为 : \color{Red}{不相关的两随机变量的内积为:} < x , y > = c o v [ x , y ] <x,y>=cov[x,y] <x,y>=cov[x,y],协方差满足内积的三个属性。
c o v [ λ x + y , z ] = λ c o v [ x , z ] + c o v [ y , z ] c o s α = < x , y > ∥ x ∥ ∥ y ∥ = c o v [ x , y ] v a r [ x ] v a r [ y ] ∣ ∣ x ∣ ∣ = c o v [ x , x ] = v a r [ x ] = σ ( x ) \begin{aligned} cov[\lambda x+y,z] &=\lambda cov[x,z]+cov[y,z] \\ \mathrm{cos} \alpha &=\frac{<x,y>}{\left \| x \right \| \left \| y \right \|}=\frac{\mathrm{cov}[x,y]}{\sqrt{\mathrm{var}[x]\mathrm{var}[y]}} \\ ||x|| &=\sqrt{cov[x,x]}=\sqrt{var[x]}=\sigma (x) \end{aligned} cov[λx+y,z]cosαx=λcov[x,z]+cov[y,z]=xy<x,y>=var[x]var[y] cov[x,y]=cov[x,x] =var[x] =σ(x)

2.3 向量的投影

a 投影到一维空间:

如下图所示,设向量x在u上的投影为向量 π u ( x ) \pi_u(x) πu(x) 则:

在这里插入图片描述
  • π u ( x ) ∈ u ⇒ ∃ λ ∈ R : π u ( x ) = λ b \pi_u(x) \in u \Rightarrow \exists \lambda \in \mathbb{R}:\pi_u(x)=\lambda b πu(x)uλR:πu(x)=λb

  • 向量x在u上的投影向量正交于向量 π u ( x ) − x \pi_u(x)-x πu(x)x,则 ⟨ b , π u ( x ) − x ⟩ = 0 \left \langle b,\pi_u(x)-x \right \rangle=0 b,πu(x)x=0

  • 为什么是正交,因为只有正交时,向量x在u上的投影最大,与x向量的长度最接近
    ⟨ b , π u ( x ) − x ⟩ = 0 ⇒ ⟨ b , π u ( x ) ⟩ − ⟨ b , x ⟩ = 0 ⇒ ⟨ b , λ b ⟩ − ⟨ b , x ⟩ = 0 ⇒ λ ∣ ∣ b ∣ ∣ 2 − < b , x > = 0 ⇒ λ = < b , x > ∣ ∣ b ∣ ∣ 2 ⇒ π u ( x ) = λ b = λ = < b , x > ∣ ∣ b ∣ ∣ 2 b = b T x b ∣ ∣ b ∣ ∣ 2 = b b T ∣ ∣ b ∣ ∣ 2 x \begin{aligned} &\left \langle b,\pi_u(x)-x \right \rangle=0 \\ \Rightarrow &\left \langle b,\pi_u(x) \right \rangle -\left \langle b,x \right \rangle =0\\ \Rightarrow &\left \langle b,\lambda b \right \rangle -\left \langle b,x \right \rangle =0\\ \Rightarrow &\lambda ||b||^2-<b,x>=0\\ \Rightarrow &\lambda=\frac{<b,x>}{||b||^2}\\ \Rightarrow &\pi_u(x)=\lambda b = \lambda=\frac{<b,x>}{||b||^2}b=\frac{b^Txb}{||b||^2}=\frac{bb^T}{||b||^2}x \end{aligned} b,πu(x)x=0b,πu(x)b,x=0b,λbb,x=0λb2<b,x>=0λ=b2<b,x>πu(x)=λb=λ=b2<b,x>b=b2bTxb=b2bbTx

,式中 b b T ∣ ∣ b ∣ ∣ 2 \frac{bb^T}{||b||^2} b2bbT是投影矩阵。

假设 ∣ ∣ b ∣ ∣ = 1 ||b||=1 b=1,则 λ = < b , x > = b T x \lambda=<b,x>=b^Tx λ=<b,x>=bTx π u ( x ) = b T x b = b b T x \pi_u(x)=b^Txb=bb^Tx πu(x)=bTxb=bbTx

例:若 b ⃗ = [ 2 1 ] , x ⃗ = [ 1 2 ] \vec{b}=\begin{bmatrix} 2\\ 1 \end{bmatrix},\vec{x}=\begin{bmatrix} 1\\ 2 \end{bmatrix} b =[21],x =[12](下图所示),则 π u ( x ) = b T x ∣ ∣ b ∣ ∣ 2 b = 4 5 [ 2 1 ] \pi_u(x)=\frac{b^Tx}{||b||^2}b=\frac{4}{5} \begin{bmatrix} 2\\ 1 \end{bmatrix} πu(x)=b2bTxb=54[21],即向量x在u上的投影长度为 ∣ ∣ π u ( x ) ∣ ∣ = 4 5 ∣ ∣ b ∣ ∣ ||\pi_u(x)||=\frac{4}{5}||b|| πu(x)=54b

b 投影到高维空间

假设向量x是三维向量即 x ∈ R 3 x \in \mathbb{R}^3 xR3,将其投影到二维空间上,特征(降维)空间 u = [ b 1 , b 2 ] u=[b_1,b_2] u=[b1,b2],如下图所示:

在这里插入图片描述

则向量x在u平面上的投影长度为: π u ( x ) = λ 1 b 1 + λ 2 b 2 \pi_u(x)=\lambda_1b_1+\lambda_2b_2 πu(x)=λ1b1+λ2b2,则有:
⟨ b 1 , π u ( x ) − x ⟩ = 0 ⟨ b 2 , π u ( x ) − x ⟩ = 0 \begin{aligned} \left \langle b_1,\pi_u(x)-x \right \rangle=0 \\ \left \langle b_2,\pi_u(x)-x \right \rangle=0 \end{aligned} b1,πu(x)x=0b2,πu(x)x=0
D 维空间投影到 M 维空间的一般形式: λ = [ λ 1 , . . . , λ M ] T , M × 1 \lambda=[\lambda_1,...,\lambda_M]^T,M\times 1 λ=[λ1,...,λM]T,M×1 B = [ b 1 ∣ . . . ∣ b M ] T , D × M B=[b_1|...|b_M]^T,D \times M B=[b1...bM]T,D×M

1. π u ( x ) = ∑ i = 1 M λ i b i \pi_u(x)=\sum_{i=1}^M\lambda_ib_i πu(x)=i=1Mλibi(成分的线性组合)

2. ⟨ b i , π u ( x ) − x ⟩ = 0 , i = 1 , . . . , M \left \langle b_i,\pi_u(x)-x \right \rangle=0,i=1,...,M bi,πu(x)x=0,i=1,...,M(正交)
π u ( x ) = B λ ⟨ b i , B λ ⟩ − ⟨ b i , x ⟩ = 0 λ T B T b i − x T b i = 0 λ T B T B − x T B = 0 λ T = x T B ( B T B ) − 1 λ = ( B T B ) − 1 B T x π u ( x ) = B λ = B ( B T B ) − 1 B T x = B B T x \begin{aligned} \pi_u(x) &=B \lambda \\ \left \langle b_i,B \lambda \right \rangle-\left \langle b_i,x \right \rangle &=0\\ \lambda^TB^Tb_i-x^T b_i &=0\\ \lambda^TB^TB-x^TB &=0\\ \lambda^T &=x^TB(B^TB)^{-1}\\ \lambda &=(B^TB)^{-1}B^Tx\\ \pi_u(x) &=B \lambda=B(B^TB)^{-1}B^Tx=BB^Tx \end{aligned} πu(x)bi,Bλbi,xλTBTbixTbiλTBTBxTBλTλπu(x)=Bλ=0=0=0=xTB(BTB)1=(BTB)1BTx=Bλ=B(BTB)1BTx=BBTx

B ( B T B ) − 1 B T B(B^TB)^{-1}B^T B(BTB)1BT是投影矩阵(projection matrix)。

例:三维投影到二维上 x ⃗ = [ 2 , 1 , 1 ] T , b 1 = [ 1 , 2 , 0 ] T , b 2 = [ 1 , 1 , 0 ] T , u = [ b 1 , b 2 ] \vec{x}=[2,1,1]^T,b_1=[1,2,0]^T,b_2=[1,1,0]^T,u=[b_1,b_2] x =[2,1,1]T,b1=[1,2,0]T,b2=[1,1,0]T,u=[b1,b2],求其投影,如下图所示:

因为 b 1 = [ 1 , 2 , 0 ] T , b 2 = [ 1 , 1 , 0 ] T b_1=[1,2,0]^T,b_2=[1,1,0]^T b1=[1,2,0]T,b2=[1,1,0]T 的第三维均为 0,所以 u u u 是一个二维平面(图中向上的箭头是第三维数据)。

由上得:

π u ( x ) = B λ B = [ b 1 ∣ b 2 ] = [ 1 1 2 1 0 0 ] B T x = [ 4 3 ] B T B = [ 5 3 3 2 ] \begin{aligned} \pi_u(x) &=B \lambda \\ B=[b_1|b_2] &=\begin{bmatrix} 1 & 1\\ 2 &1 \\ 0 & 0 \end{bmatrix} \\ B^Tx &=\begin{bmatrix} 4\\ 3 \end{bmatrix} \\ B^TB &=\begin{bmatrix} 5 &3 \\ 3 & 2 \end{bmatrix} \end{aligned} πu(x)B=[b1b2]BTxBTB=Bλ=120110=[43]=[5332]

λ = ( B T B ) − 1 B T x B T B λ = B T x λ = [ − 1 3 ] π u ( x ) = − 1 × b 1 + 3 × b 2 = [ 2 1 0 ] \begin{aligned} \lambda &=(B^TB)^{-1}B^Tx \\ B^TB \lambda &=B^Tx \\ \lambda &=\begin{bmatrix} -1\\ 3 \end{bmatrix} \\ \pi_u(x) &=-1\times b_1+3\times b_2=\begin{bmatrix} 2\\ 1\\0 \end{bmatrix} \end{aligned} λBTBλλπu(x)=(BTB)1BTx=BTx=[13]=1×b1+3×b2=210

由上所得,投影向量 π u ( x ) \pi_u(x) πu(x) 是一个三维向量,但其第三个成分是 0 ,虽然是个三维向量,但是可以用二维坐标表示。上面的 b 1 , b 2 b_1,b_2 b1,b2 的第三成分也是0,这就是将向量x从多维降到低维空间的压缩原理。

3、PCA

3.1 PCA 原理

假设 X= { x_1,…,x_N }, x i ∈ R D x_i \in \mathbb{R}^D xiRD ,PCA 的目标是找到一个低维空间能够表示数据并尽可能的与 X 相似。

再了解PCA之前,先了解一些概念:

a D 维空间的向量可以用基向量(basis vectors)的线性组合表示: x n = ∑ i = 1 D β i n b i x_n=\sum_{i=1}^D \beta_{in}b_i xn=i=1Dβinbi,这里的基向量是指D维空间中的向量,类似坐标轴。

ba 可知: β i n = x n T b i \beta_{in}=x_n^Tb_i βin=xnTbi

c 从 D 维空间中选择前 M 个 b i b_i bi 作为正交基础向量(orthogonality basis vectors),即 B = [ b 1 ∣ . . . ∣ b M ] B=[b_1|...|b_M] B=[b1...bM]

向量 x 的投影向量为: x ~ = B B T x \widetilde{x}=BB^Tx x =BBTx B T x B^Tx BTx叫做 coord or code。

PCA的主要想法是找到一个低维,可以用更少的基向量组成的 x ~ n \widetilde{x}_n x n 表示 x n x_n xn, 假设在M维空间中数据是中心化的,即数据的均值为0( E ( x ) = 0 E(x)=0 E(x)=0)。假设 b 1 ∼ b D b_1\sim b_D b1bD R D \mathbb{R}^D RD 的正交基础向量,则:

向量 x n x_n xn 在 M维空间的投影为: x ~ n = ∑ i = 1 M β i n b i + ∑ i = M + 1 D β i n b i , x ~ n ∈ R D \widetilde{x}_n=\sum_{i=1}^M \beta_{in}b_i+\sum_{i=M+1}^D \beta_{in}b_i,\widetilde{x}_n \in \mathbb{R}^D x n=i=1Mβinbi+i=M+1Dβinbi,x nRD

在PCA中会忽视第二项,所以 x ~ n = ∑ i = 1 M β i n b i , x ~ n ∈ R D \widetilde{x}_n=\sum_{i=1}^M \beta_{in}b_i,\widetilde{x}_n \in \mathbb{R}^D x n=i=1Mβinbi,x nRD

基向量 b 1 ∼ b D b_1\sim b_D b1bD 构成的子空间叫做 principle subspace, 即 b 1 ∼ b D b_1\sim b_D b1bDspan the principle subspace.

虽然 x ~ n \widetilde{x}_n x n 是 D 维向量,但是存在于 D 维的子空间 M 维中。

上述中需要调节的参数有 β i n , b i \beta_{in},b_i βin,bi:,对此可以构建平方差损失函数求得: J = 1 N ∑ n = 1 N ∥ x n , x ~ n ∥ 2 J=\frac{1}{N}\sum_{n=1}^N\left \| x_n,\widetilde{x}_n \right \|^2 J=N1n=1Nxn,x n2

找到最优的基向量,对 β i n , b i \beta_{in},b_i βin,bi 求偏导数,令其偏导数为 0,即可求得。

除了令偏导数为 0 进行参数优化,还可以用 chain rule 进行优化:
∂ J ∂ { β i n , b i } = ∂ J ∂ x ~ n × ∂ x ~ n ∂ { β i n , b i } ⇒ ∂ J ∂ x ~ n = − 2 N ( x n − x ~ n ) T ⇒ ∂ x ~ n ∂ β i n = b i , i = 1 , . . . , M \begin{aligned} \frac{\partial J}{\partial\left \{ \beta_{in},b_i \right \}} &=\frac{\partial J}{\partial \widetilde{x}_n}\times \frac{\partial \widetilde{x}_n}{\partial\left \{ \beta_{in},b_i \right \}}\\ \Rightarrow \frac{\partial J}{\partial \widetilde{x}_n} &=-\frac{2}{N}(x_n-\widetilde{x}_n)^T\\ \Rightarrow \frac{\partial \widetilde{x}_n}{\partial\beta_{in}} &=b_i,i=1,...,M \end{aligned} {βin,bi}Jx nJβinx n=x nJ×{βin,bi}x n=N2(xnx n)T=bi,i=1,...,M
∂ J ∂ β i n = ∂ J ∂ x ~ n × ∂ x ~ n ∂ β i n = − 2 N ( x n − x ~ n ) T b i = − 2 N ( x n − ∑ i = 1 M β i n b i ) T b i = − 2 N ( x n T b i − β i n b i T b i ) , b i T b i = 1 = − 2 N ( x n T b i − β i n ) = 0 ⇒ β i n = x n T b i \begin{aligned} \frac{\partial J}{\partial \beta_{in}}=\frac{\partial J}{\partial \widetilde{x}_n}\times \frac{\partial \widetilde{x}_n}{\partial \beta_{in}}&=-\frac{2}{N}(x_n-\widetilde{x}_n)^Tb_i \\ &=-\frac{2}{N}(x_n-\sum_{i=1}^M \beta_{in}b_i)^Tb_i \\ &=-\frac{2}{N}(x_n^Tb_i-\beta_{in}b_i^Tb_i),b_i^Tb_i=1\\ &=-\frac{2}{N}(x_n^Tb_i-\beta_{in})=0\\ &\Rightarrow \beta_{in}=x_n^Tb_i \end{aligned} βinJ=x nJ×βinx n=N2(xnx n)Tbi=N2(xni=1Mβinbi)Tbi=N2(xnTbiβinbiTbi),biTbi=1=N2(xnTbiβin)=0βin=xnTbi
下面重构损失函数,这样更加方便找到基向量。

x ~ n = ∑ i = 1 M β i n b i = ∑ i = 1 M ( x n T b i ) b i = ∑ i = 1 M ( x n T b i ) b i = ( ∑ i = 1 M b i b i T ) x n \begin{aligned} \widetilde{x}_n &=\sum_{i=1}^M \beta_{in}b_i \\ &=\sum_{i=1}^M (x_n^Tb_i)b_i \\ &=\sum_{i=1}^M (x_n^Tb_i)b_i \\ &=(\sum_{i=1}^M b_ib_i^T)x_n \end{aligned} x n=i=1Mβinbi=i=1M(xnTbi)bi=i=1M(xnTbi)bi=(i=1MbibiT)xn

∑ i = 1 M b i b i T \sum_{i=1}^M b_ib_i^T i=1MbibiT是投影矩阵。

x n = ∑ i = 1 M β i n b i + ∑ i = M + 1 D β i n b i = ( ∑ i = 1 M b i b i T ) x n + ( ∑ i = M + 1 D b i b i T ) x n \begin{aligned} x_n &=\sum_{i=1}^M \beta_{in}b_i+\sum_{i=M+1}^D \beta_{in}b_i \\ &=(\sum_{i=1}^M b_ib_i^T)x_n+(\sum_{i=M+1}^D b_ib_i^T)x_n \end{aligned} xn=i=1Mβinbi+i=M+1Dβinbi=(i=1MbibiT)xn+(i=M+1DbibiT)xn

x ~ n \widetilde{x}_n x n x n x_n xn 相比少了第二项,所以 x ~ n \widetilde{x}_n x n x n x_n xn 的近似值(approximation)。

原始向量减去投影向量,即:

x n − x ~ n = ( ∑ i = M + 1 D b i b i T ) x n = ∑ i = M + 1 D ( b i T x n ) b i \begin{aligned} x_n-\widetilde{x}_n &=(\sum_{i=M+1}^D b_ib_i^T)x_n \\ &=\sum_{i=M+1}^D (b_i^Tx_n)b_i \end{aligned} xnx n=(i=M+1DbibiT)xn=i=M+1D(biTxn)bi

从上式可以看出两向量之差位于我们忽视的子空间里,即不包含主要子空间,该子空间是主要子空间的正交互补空间。

由上,损失函数可以重新定义为:

J = 1 N ∑ n = 1 N ∥ x n , x ~ n ∥ 2 = 1 N ∑ n = 1 N ∥ ∑ i = M + 1 D ( b i T x n ) b i ∥ 2 = 1 N ∑ n = 1 N ∑ i = M + 1 D ( b i T x n ) 2 = 1 N ∑ n = 1 N ∑ i = M + 1 D b i T x n x n T b i = 1 N ∑ n = 1 N ∑ i = M + 1 D b i T x n x n T b i = ∑ i = M + 1 D b i T ( 1 N ∑ n = 1 N x n x n T ) b i , S = 1 N ∑ n = 1 N x n x n T , S 是 协 方 差 矩 阵 = ∑ i = M + 1 D b i T S b i = t r a c e ( ( ∑ i = M + 1 D b i b i T ) S ) \begin{aligned} J &=\frac{1}{N}\sum_{n=1}^N \left \| x_n,\widetilde{x}_n \right \|^2 \\ &=\frac{1}{N}\sum_{n=1}^N\left \| \sum_{i=M+1}^D (b_i^Tx_n)b_i \right \|^2 \\ &=\frac{1}{N}\sum_{n=1}^N \sum_{i=M+1}^D (b_i^Tx_n)^2 \\ &=\frac{1}{N}\sum_{n=1}^N \sum_{i=M+1}^D b_i^Tx_nx_n^Tb_i \\ &=\frac{1}{N}\sum_{n=1}^N \sum_{i=M+1}^D b_i^Tx_nx_n^Tb_i \\ &=\sum_{i=M+1}^D b_i^T(\frac{1}{N} \sum_{n=1}^Nx_nx_n^T)b_i,S =\frac{1}{N} \sum_{n=1}^Nx_nx_n^T,S是协方差矩阵 \\ &=\sum_{i=M+1}^D b_i^TSb_i \\ &=trace((\sum_{i=M+1}^D b_ib_i^T)S) \end{aligned} J=N1n=1Nxn,x n2=N1n=1Ni=M+1D(biTxn)bi2=N1n=1Ni=M+1D(biTxn)2=N1n=1Ni=M+1DbiTxnxnTbi=N1n=1Ni=M+1DbiTxnxnTbi=i=M+1DbiT(N1n=1NxnxnT)bi,S=N1n=1NxnxnT,S=i=M+1DbiTSbi=trace((i=M+1DbibiT)S)

∑ i = M + 1 D b i b i T \sum_{i=M+1}^D b_ib_i^T i=M+1DbibiT 是投影矩阵(projection matrix),这个投影矩阵将数据协方差投影到主要子空间(principle subspace)的互补空间中,意味着重构的损失函数是将数据的方差投影到我们忽视的子空间去,因此最小化损失函数等价于最小化数据在忽视的空间的方差。

b 1 b_1 b1 是 principle subspace, b 2 b_2 b2是 orthogonal complement(the space we ignore),则:

b i T b j = δ i j ; i = j , δ i j = 1 ; i ≠ j , δ i j = 0 b_i^Tb_j=\delta _{ij};i=j,\delta _{ij}=1;i\neq j,\delta _{ij}=0 biTbj=δij;i=j,δij=1;i=j,δij=0

最小化(S): J = ∑ i = M + 1 D b i T S b i = b 2 T S b 2 J=\sum_{i=M+1}^D b_i^TSb_i= b_2^TSb_2 J=i=M+1DbiTSbi=b2TSb2

约束: b 2 T b 2 = 1 b_2^Tb_2=1 b2Tb2=1

根据拉格朗日乘子得:

L = b 2 T S b 2 + λ ( 1 − b 2 T b 2 ) ⇒ ∂ L ∂ λ = 1 − b 2 T b 2 = 0 ⇔ b 2 T b 2 = 1 ⇒ ∂ L ∂ b 2 = 2 b 2 T S − 2 λ b 2 T = 0 ⇔ S b 2 = λ b 2 \begin{aligned} L&=b_2^TSb_2+\lambda(1-b_2^Tb_2) \\ \Rightarrow \frac{\partial L}{\partial \lambda} &=1-b_2^Tb_2=0\Leftrightarrow b_2^Tb_2=1 \\ \Rightarrow \frac{\partial L}{\partial b_2} &=2b_2^TS-2\lambda b_2^T=0\Leftrightarrow Sb_2=\lambda b_2 \end{aligned} LλLb2L=b2TSb2+λ(1b2Tb2)=1b2Tb2=0b2Tb2=1=2b2TS2λb2T=0Sb2=λb2

因此: J = b 2 T S b 2 = b 2 T b 2 λ = λ J= b_2^TSb_2=b_2^Tb_2 \lambda= \lambda J=b2TSb2=b2Tb2λ=λ ( λ \lambda λ 是数据的协方差矩阵的特征值)。

λ \lambda λ 是最小特征值时,平方损失函数是最小的,意味着 b 2 b_2 b2 是我们忽视的空间的对应的特征向量, b 1 b_1 b1是主要子空间是数据协方差矩阵的最大特征值的特征向量。 b 1 , b 2 b_1,b_2 b1,b2 之间是正交的,因为协方差矩阵是对称的。

损失函数的一般形式:

S b i = λ i b i , i = M + 1 , . . , D J = ∑ i = M + 1 D λ i \begin{aligned} Sb_i &=\lambda_ib_i,i=M+1,..,D \\ J &=\sum_{i=M+1}^D \lambda_i \end{aligned} SbiJ=λibi,i=M+1,..,D=i=M+1Dλi

当取的基向量(base vector)是被忽视子空间的数据协方差的最小特征值的特征向量时,损失函数是最小化; 这相当于主要子空间是由数据协方差矩阵的M个最大特征值的特征向量组成。大的特征值对应大的方差,方差方向由特征向量给出。

主要子空间是标准正交的(orthonormal ),协方差矩阵的特征向量与大的特征值之间是相关的。

3.2 PCA 运用注意点

PCA算法中需要计算数据的协方差矩阵(数据的协方差矩阵是不稳定,因此需要中心化(中心化不等于归一化))以及对数据进行中心化处理(均值为0(新的数据值=数据值-均值))。中心化并不影响数据之间的相关性。

D维空间的协方差矩阵是 D × D D \times D D×D 的矩阵,若D是高维的,则计算协方差矩阵的特征值和特征向量是昂贵的,因此可以对协方差矩阵进行处理。

假设数据点是少于纬度的,即数据点为 x 1 , . . . , x N ∈ R D x_1,...,x_N \in \mathbb{R}^D x1,...,xNRD X = [ x 1 T . . . x N T ] ∈ R N × D X=\begin{bmatrix} x_1^T\\ ... \\ x_N^T \end{bmatrix} \in \mathbb{R}^{N \times D} X=x1T...xNTRN×D,其中 N < D N<D N<D

S = 1 N X T X S=\frac{1}{N}X^TX S=N1XTX,S 的秩为N,即 r a n k ( S ) = N rank(S)=N rank(S)=N,所以有D-N+1个值为0特征值,即矩阵不是满秩(矩阵的行列之间是线性相关的(linearly dependent)即矩阵中有一些重复(redundancies))。

接下来让 D × D D \times D D×D 的协方差矩阵变成满秩的,即矩阵中不存在为 0 的特征值。

S b i = λ i b i , i = M + 1 , . . , D 1 N X T X b i = λ i b i 1 N X X T X b i = λ i X b i ( 两 边 同 乘 一 个 X ) 1 N X X T c i = λ i c i ( X b i = c i , 1 N X X T ∈ R N × N ) 1 N X T X X T c i = λ i X T c i ( 两 边 同 乘 一 个 X T ) S X T c i = λ i X T c i \begin{aligned} Sb_i &=\lambda_ib_i,i=M+1,..,D \\ \frac{1}{N}X^TXb_i &=\lambda_ib_i \\ \frac{1}{N}{\color{Red} X}X^TXb_i &=\lambda_i{\color{Red} X}b_i (两边同乘一个X) \\ \frac{1}{N}XX^Tc_i &=\lambda_ic_i (Xb_i=c_i,\frac{1}{N}XX^T \in \mathbb{R}^{N \times N})\\ \frac{1}{N}{\color{Red} X^T}XX^Tc_i &=\lambda_i{\color{Red} X^T}c_i(两边同乘一个X^T)\\ SX^Tc_i &=\lambda_i{\color{Red} X^T}c_i \end{aligned} SbiN1XTXbiN1XXTXbiN1XXTciN1XTXXTciSXTci=λibi,i=M+1,..,D=λibi=λiXbi(X=λici(Xbi=ci,N1XXTRN×N)=λiXTci(XT=λiXTci

S = 1 N X T N ∈ R N × N S=\frac{1}{N}{\color{Red} X^T}N \in\mathbb{R}^{N \times N} S=N1XTNRN×N,计算 的协方差矩阵要比计算 D × D D\times D D×D 的代价小。

3.3 PCA 的其它解释

在这里插入图片描述

如上图所示,高维向量 X 通过基向量 ( B T B^T BT) 投影到低维空间 Z( = B T X =B^TX =BTX)。 B矩阵的列是数据协方差矩阵的特征向量,这些特征向量对应着大的特征值,Z 值是数据点相对于基向量的坐标,这些坐标对应着主要子空间,Z 也叫数据点的 code。低维的也可以转向高维,通过 B Z BZ BZ 即可将 Z转换到原来的数据空间。

通过构建平方差函数来找到PCA的最优参数,可将PCA看做是线性自动编码(linear auto encoder)。自动编码(autoencoder)对数据点X进行编码(encode)然后试图将其解码(decode)成一个类似X的数据点。将数据点映射到code叫做 encoder。将 code 映射到原始数据空间叫做 decoder。

若 encoder 和 decoder是线性映射,则PCA参数优化方法是用平方差损失函数;若将线性映射(linear mapping)换成非线性映射 (non-linear mapping),则得到 non-linear autoencoder,如在深度自动编码器中,用深度网络代替编码器和解码器。自动编码 器的损失函数叫做 encoding loss。

PCA的另一个解释与信息论有关。可以将code看做是原数据点被压缩的版本,当用code重构原数据点时,不会得到与原始数据点完全一样的数据点,会得到一个稍微失真或有噪声的版本,意味着压缩直观上是有损的。压缩是通过最大化原始数据点与低维的code之间的相关性,这跟 mutual information 相关。类似PCA损失函数的最优化,这里是最大化 mutual information。mutual information是信息论里一个重要的概念。在重构损失函数中,PCA是最小化数据在正交互补空间的方差,等价于最大化数据在主要子空间的方差。在信息论中最大化 mutual information 就是最大化方差,可以解释为尽可能的保留信息。

从隐藏变量模型(latent vatiable model)的角度看,Z是一个未知的低维空间,这个未知空间与X存在线性关系,因此X可以写成 X = B Z + μ + ϵ X=BZ+\mu+\epsilon X=BZ+μ+ϵ:,假设噪声 ϵ \epsilon ϵ 是各向同性的(isotropic),则 ϵ ∼ N ( 0 , σ 2 I ) \epsilon \sim N(0,\sigma^2\mathrm{I}) ϵN(0,σ2I) 。进一步假设Z的分布式标准正态分布,即 p ( Z ) = N ( 0 , I ) p(Z)=N(0,\mathrm{I}) p(Z)=N(0,I)。由上可以写出模型的似然函数:

p ( X ∣ Z ) = N ( X ∣ B Z + μ , σ 2 I ) p ( X ) = ∫ p ( X ∣ Z ) p ( Z ) d Z = N ( X ∣ μ , B B T + σ 2 I ) \begin{aligned} p(X|Z) &=N(X|BZ+\mu,\sigma^2\mathrm{I}) \\ p(X) &=\int p(X|Z)p(Z)dZ \\ &=N(X|\mu,BB^T+\sigma^2\mathrm{I}) \end{aligned} p(XZ)p(X)=N(XBZ+μ,σ2I)=p(XZ)p(Z)dZ=N(Xμ,BBT+σ2I)

模型的参数有 B , μ , ϵ B,\mu,\epsilon B,μ,ϵ,可以用最大似然估计求参数,发现 μ \mu μ 是数据点的均值, B是包含与最大特征值相关的特征向量的矩阵。

p ( Z ∣ X ) = p ( X ∣ Z ) p ( Z ) p ( X ) p(Z|X)=\frac{p(X|Z)p(Z)}{p(X)} p(ZX)=p(X)p(XZ)p(Z)

为得到数据在低维空间的code,可以用贝叶斯理论,将Z和X之间的线性关系进行转换。

相关资料推荐:

1、夹角计算的推导

2、协方差和相关性描述

3、矩阵秩的定义和求解

参考:
intrigano(Mathematics for Machine Learning - PCA )

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
PCA(Principal Component Analysis,主成分分析)是一种基于线性代数的数据降维算法。其目的是通过将原始数据映射到新的坐标系上,使得数据在新的坐标系下的方差最大,从而找到数据的主要特征。下面是PCA数学原理推导: 假设有样本集 $X=\{ x_1,x_2,\cdots,x_n \}$,其中每个样本 $x_i \in \mathbb{R}^d$,现在我们希望将原始数据映射到一个新的坐标系上,使得数据在新的坐标系下的方差最大。设新的坐标系为 $\{ w_1,w_2,\cdots,w_d \}$,其中每个 $w_i$ 是一个长度为 $d$ 的向量。 首先,我们需要对原始数据进行中心化,即将每个样本减去均值,得到新的样本集 $X'=\{ x_1',x_2',\cdots,x_n' \}$,其中 $x_i' = x_i - \frac{1}{n}\sum_{j=1}^n x_j$。 接下来,我们需要找到一个向量 $w_1$,使得将样本 $X'$ 投影到 $w_1$ 上的方差最大。具体来说,对于每个样本 $x_i'$,它在 $w_1$ 上的投影为 $x_i' \cdot w_1$,则样本集 $X'$ 在 $w_1$ 方向上的方差为: $$ \begin{aligned} \mathrm{Var}(X'w_1) &= \frac{1}{n} \sum_{i=1}^n (x_i' \cdot w_1 - \bar{x}' \cdot w_1)^2 \\ &= \frac{1}{n} \sum_{i=1}^n [(x_i' - \bar{x}') \cdot w_1]^2 \\ &= \frac{1}{n} \sum_{i=1}^n (w_1^T(x_i' - \bar{x}'))^2 \\ &= \frac{1}{n} \sum_{i=1}^n w_1^T(x_i' - \bar{x}')(x_i' - \bar{x}')^Tw_1 \\ &= w_1^T\left(\frac{1}{n} \sum_{i=1}^n (x_i' - \bar{x}')(x_i' - \bar{x}')^T\right)w_1 \\ &= w_1^TSw_1 \end{aligned} $$ 其中,$\bar{x}'$ 是样本集 $X'$ 的均值向量,$S$ 是样本集 $X'$ 的协方差矩阵,$w_1$ 是一个单位向量。根据上述式子,我们可以看出,$w_1$ 的方向与样本集 $X'$ 的协方差矩阵 $S$ 的主特征向量相同,因为 $w_1$ 的方向确定后,$\mathrm{Var}(X'w_1)$ 就只与 $S$ 的特征值有关,而特征值最大的方向就是协方差矩阵 $S$ 的主特征向量。 因此,我们可以通过求解样本集 $X'$ 的协方差矩阵 $S$ 的特征值和特征向量,找到 $w_1$ 的方向。具体来说,设 $S$ 的特征值和特征向量分别为 $\lambda_1,\lambda_2,\cdots,\lambda_d$ 和 $v_1,v_2,\cdots,v_d$,则 $w_1$ 的方向为 $v_1$。 接着,我们需要找到下一个向量 $w_2$,使得它与 $w_1$ 垂直,并且将样本集 $X'$ 投影到 $w_1$ 和 $w_2$ 构成的平面上的方差最大。具体来说,对于每个样本 $x_i'$,它在 $w_1$ 和 $w_2$ 构成的平面上的投影为 $(x_i' \cdot w_1, x_i' \cdot w_2)$,则样本集 $X'$ 在 $w_1$ 和 $w_2$ 构成的平面上的方差为: $$ \begin{aligned} \mathrm{Var}(X'w_1w_2) &= \frac{1}{n} \sum_{i=1}^n (x_i' \cdot w_1 - \bar{x}' \cdot w_1)^2 + (x_i' \cdot w_2 - \bar{x}' \cdot w_2)^2 \\ &= \frac{1}{n} \sum_{i=1}^n [(x_i' - \bar{x}') \cdot w_1]^2 + [(x_i' - \bar{x}') \cdot w_2]^2 \\ &= \frac{1}{n} \sum_{i=1}^n (w_1^T(x_i' - \bar{x}'))^2 + (w_2^T(x_i' - \bar{x}'))^2 \\ &= w_1^T\left(\frac{1}{n} \sum_{i=1}^n (x_i' - \bar{x}')(x_i' - \bar{x}')^T\right)w_1 + w_2^T\left(\frac{1}{n} \sum_{i=1}^n (x_i' - \bar{x}')(x_i' - \bar{x}')^T\right)w_2 \\ &= w_1^TSw_1 + w_2^TSw_2 \end{aligned} $$ 由于 $w_1$ 已经确定,因此我们只需要找到一个与 $w_1$ 垂直的向量 $w_2$,使得 $\mathrm{Var}(X'w_1w_2)$ 最大。我们可以通过最大化 $w_2^TSw_2$ 来实现这一点。 具体来说,我们可以定义一个投影矩阵 $P = \begin{bmatrix} w_1 & w_2 \end{bmatrix}$,将样本集 $X'$ 投影到 $w_1$ 和 $w_2$ 构成的平面上,得到新的样本集 $Y = \{ y_1,y_2,\cdots,y_n \}$,其中 $y_i = P^Tx_i'$。则样本集 $Y$ 的协方差矩阵为 $S_Y = \frac{1}{n}YY^T$。我们需要找到一个单位向量 $w_2$,使得 $w_2^TS_Yw_2$ 最大。根据拉格朗日乘数法,可以得到: $$ S_Yw_2 = \lambda w_2 $$ 其中,$\lambda$ 是 $S_Y$ 的特征值。因此,$w_2$ 的方向与 $S_Y$ 的主特征向量相同。由于 $S_Y$ 是对称矩阵,$w_1$ 和 $w_2$ 的方向就是 $S_Y$ 的前两个主特征向量。以此类推,我们可以找到 $d$ 个主成分,从而将原始数据映射到 $d$ 维空间中。 总结一下,PCA 的步骤如下: 1. 对原始数据进行中心化,得到新的样本集 $X'$。 2. 求解样本集 $X'$ 的协方差矩阵 $S$ 的特征值和特征向量。 3. 选择前 $d$ 个特征向量,构成新的坐标系 $\{ w_1,w_2,\cdots,w_d \}$。 4. 将样本集 $X'$ 投影到新的坐标系上,得到新的样本集 $Y$。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值