主成分分析算法(PCA)是最常用的线性降维方法,它的目标是通过某种线性投影,将高维的数据映射到低维的空间中表示,并期望在所投影的维度上数据的方差最大,以此使用较少的数据维度,同时保留住较多的原数据点的特性。
数学期望又称为均值。在概率论中,数学期望用来反映一个随机变量平均取值的大小,记为E(x)。具有如下性质:
方差是各个数据与平均数之差的平方的平均数。用来度量随机变量和其数学期望之间的偏离程度。定义为 v a r ( x ) = E ( ( x − E ( x ) ) 2 ) var(x)=E((x-E(x))^2) var(x)=E((x−E(x))2)。具有如下性质:
当方差比较小时,说明数据离均值比较近,相对集中。
当方差比较大时,说明数据离均值比较远且分散。
协方差用于衡量两个变量的总体误差。方差只是协方差的一种特殊情况。期望值为E(X)和E(Y)的协方差定义如下:
c o v ( X , Y ) = E ( ( X − E ( X ) ) × ( Y − E ( Y ) ) ) = E ( X Y ) − 2 E ( Y ) E ( X ) + E ( X ) E ( Y ) = E ( X Y ) − E ( X ) E ( Y ) \begin{aligned} cov(X,Y) &=E((X-E(X))\times(Y-E(Y))) \\ &=E(XY)-2E(Y)E(X)+E(X)E(Y) \\ &=E(XY)-E(X)E(Y) \end{aligned} cov(X,Y)=E((X−E(X))×(Y−E(Y)))=E(XY)−2E(Y)E(X)+E(X)E(Y)=E(XY)−E(X)E(Y)
如果X与Y是统计独立的,那么二者之间的协方差就是0,因为两个独立的随机变量满足 E ( X Y ) = E ( X ) E ( Y ) E(XY)=E(X)E(Y) E(XY)=E(X)E(Y),此时协方差等价于方差。
如果两个变量的变化趋势一致,也就是说如果其中一个大于自身的期望值,另外一个也大于自身的期望值,那么两个变量之间的协方差就是正值。 如果两个变量的变化趋势相反,即其中一个大于自身的期望值,另外一个却小于自身的期望值,那么两个变量之间的协方差就是负值。
协方差具有以下性质:
形如 [ 1 2 3 4 ] \begin{bmatrix} 1 & 2 \\ 3 & 4 \\ \end{bmatrix} [1324]的被称为矩阵。在解方程组的时候,我们可以将每个方程的系数当做矩阵的一行。在研究图像时,一张 256 × 256 256\times256 256×256的图片在计算机中就是以矩阵的方式存储,矩阵的每一个位置代表一个像素。
对矩阵A,若有Ax=λx,则λ为特征值,x为对应的特征向量。对于矩阵A乘上 x ⃗ \vec x x,可以看成 x ⃗ \vec x x在经过由矩阵A的列向量表示的线性变换后得到的向量。如矩阵 [ 1 2 3 4 ] \begin{bmatrix} 1 & 2 \\ 3 & 4 \\ \end{bmatrix} [1324]可以看做是将标准基 [ 1 0 ] \begin{bmatrix} 1 \\ 0\end{bmatrix} [10] [ 0 1 ] \begin{bmatrix} 0 \\ 1\end{bmatrix} [01]线性变换到新的坐标系 [ 1 3 ] \begin{bmatrix} 1 \\ 3\end{bmatrix} [13] [ 2 4 ] \begin{bmatrix} 2 \\ 4\end{bmatrix} [24]下。而 A x ⃗ A\vec x Ax则会得到 x ⃗ \vec x x在新坐标系下的坐标。大部分新的 x ⃗ \vec x x在矩阵A的作用下都会偏离原来的方向,而少部分 x ⃗ \vec x x只会沿着原来的方向进行缩放,方向不变,这样特殊的向量被称为特征向量,其缩放的比例被称为特征值。因此有Ax=λx。
形如 [ 1 2 2 3 ] \begin{bmatrix} 1 & 2 \\ 2 & 3 \\ \end{bmatrix} [1223], [ 1 2 3 2 3 4 3 4 10 ] \begin{bmatrix} 1 & 2 & 3 \\ 2 & 3 & 4 \\ 3 & 4 & 10\end{bmatrix} ⎣⎡1232343410⎦⎤等沿着主对角线对称的矩阵被称为对称矩阵,对于对称矩阵的元素,有 A i j = A j i A_{ij}=A_{ji} Aij=Aji。对于整个矩阵来说,有 A T = A A^T=A AT=A。并且对称矩阵的特征向量之间互相垂直,因此特征向量组成的矩阵是正交矩阵。证明可参考对称矩阵的特征向量两两正交的证明
形如 [ 1 0 0 1 ] \begin{bmatrix} 1 & 0 \\ 0 & 1 \\ \end{bmatrix} [1001], [ 0 1 0 0 0 1 1 0 0 ] \begin{bmatrix} 0 & 1 & 0 \\ 0 & 0 & 1 \\ 1 & 0 & 0\end{bmatrix} ⎣⎡001100010⎦⎤等各列之间互相正交(垂直)的矩阵被称为正交矩阵。对于正交矩阵来说,有 A A T = I , A T = A − 1 AA^T=I,A^T=A^{-1} AAT=I,AT=A−1。
对矩阵A,B,如果存在可逆矩阵P使得 A = P − 1 B P A=P^{-1}BP A=P−1BP,则称矩阵A和B相似。如果m*n的矩阵A有n个线性无关的特征向量,那么可以将其组成一个可逆矩阵,进而将矩阵分解。令S表示由矩阵A的特征向量组成的矩阵,则:
A S = A [ x 1 , x 2 , x 3 , . . . , x n ] = [ λ 1 x 1 , λ 2 x 2 , λ 3 x 3 , . . . , λ n x n ] = [ x 1 , x 2 , x 3 , . . . , x n ] Λ = S Λ \begin{aligned} AS &=A[x_1,x_2,x_3,...,x_n] \\ &=[\lambda_1x_1,\lambda_2x_2,\lambda_3x_3,...,\lambda_nx_n]\\ &=[x_1,x_2,x_3,...,x_n]\Lambda \\ &=S\Lambda \end{aligned} AS=A[x1,x2,x3,...,xn]=[λ1x1,λ2x2,λ3x3,...,λnxn]=[x1,x2,x3,...,xn]Λ=SΛ,
其中 Λ \Lambda Λ表示由 λ 1 , λ 2 , . . . , λ n \lambda_1,\lambda_2,...,\lambda_n λ1,λ2,...,λn组成的对角矩阵。同时右乘 S − 1 S^{-1} S−1得 A = S Λ S − 1 A=S\Lambda S^{-1} A=SΛS−1。
如果从几何的角度来解释矩阵的对角化,可以将矩阵A是一种线性转换,但是这种线性转换是在我们正常的以 [ 1 0 ] \begin{bmatrix} 1 \\ 0\end{bmatrix} [10] [ 0 1 ] \begin{bmatrix} 0 \\ 1\end{bmatrix} [01]为标准基的空间上进行的。如果将其映射到特征向量组成的基上,也就是S矩阵,对于原空间上的向量 x ⃗ \vec x x,如果执行 S − 1 A S S^{-1}AS S−1AS的话,代表的变换是,先将 x ⃗ \vec x x的坐标映射到特征基组成的空间里,然后进行A矩阵的线性变换,再将得到的新坐标映射回原坐标系下。而 S − 1 A S S^{-1}AS S−1AS得到的新矩阵必然是对角矩阵,并且对角元为对应的特征值。也就是 Λ \Lambda Λ矩阵。这也是矩阵对角化的原理。
SVD是在机器学习广泛应用的算法。当一个矩阵较大时,我们可能希望对它进行分解。对于任意的m*n矩阵A,对其应用SVD后,可以得到三个较小的矩阵,有 A = U Σ V T A=U\Sigma V^T A=UΣVT,其中U和V都是正交矩阵,他们都满足 U T U = I , V T V = I U^TU=I,V^TV=I UTU=I,VTV=I。
求解U: 计算 A A T = U Σ V T V Σ U T = U Σ 2 U T = U Σ 2 U − 1 AA^T=U\Sigma V^TV\Sigma U^T=U\Sigma^2U^T =U\Sigma^2U^{-1} AAT=UΣVTVΣUT=UΣ2UT=UΣ2U−1,因为 A A T AA^T AAT为实对称矩阵,因此其特征向量组成的矩阵为正交矩阵,由矩阵相似的知识可知, Σ 2 \Sigma^2 Σ2为 A A T AA^T AAT的特征值组成的对角矩阵, U U U矩阵为 A A T AA^T AAT的特征向量组成的矩阵。而 A A A矩阵是我们已知的,求出 A A T AA^T AAT后,求出其特征值和特征向量即可得到 U , Σ 2 U,\Sigma^2 U,Σ2。
求解V: 计算 A T A = V Σ U T U Σ V T = V Σ 2 V T = V Σ 2 V − 1 A^TA=V\Sigma U^TU\Sigma V^T=V\Sigma^2V^T =V\Sigma^2V^{-1} ATA=VΣUTUΣVT=VΣ2VT=VΣ2V−1,因为 A T A A^TA ATA为实对称矩阵,因此其特征向量组成的矩阵为正交矩阵,由矩阵相似的知识可知, Σ 2 \Sigma^2 Σ2为 A T A A^TA ATA的特征值组成的对角矩阵, V V V矩阵为 A T A A^TA ATA的特征向量组成的矩阵。而 A A A矩阵是我们已知的,求出 A T A A^TA ATA后,求出其特征值和特征向量即可得到 V , Σ 2 V,\Sigma^2 V,Σ2。
求解 Σ : \Sigma: Σ: 上述步骤已经求出 Σ 2 \Sigma^2 Σ2,因此求出 Σ 2 \Sigma^2 Σ2的求根即可。
前面已经介绍过协方差。而协方差矩阵就是,假定有n个随机变量,使用矩阵来描述这n个随机变量之间的协方差。例如 [ C o v ( x 1 , x 1 ) C o v ( x 1 , x 2 ) C o v ( x 1 , x 3 ) C o v ( x 2 , x 1 ) C o v ( x 2 , x 2 ) C o v ( x 2 , x 3 ) C o v ( x 3 , x 1 ) C o v ( x 3 , x 2 ) C o v ( x 3 , x 3 ) ] \begin{bmatrix} Cov(x_1,x_1) & Cov(x_1,x_2) & Cov(x_1,x_3) \\ Cov(x_2,x_1) & Cov(x_2,x_2) & Cov(x_2,x_3) \\ Cov(x_3,x_1) & Cov(x_3,x_2) & Cov(x_3,x_3)\end{bmatrix} ⎣⎡Cov(x1,x1)Cov(x2,x1)Cov(x3,x1)Cov(x1,x2)Cov(x2,x2)Cov(x3,x2)Cov(x1,x3)Cov(x2,x3)Cov(x3,x3)⎦⎤
而由 C o v ( X , Y ) = C o v ( Y , X ) Cov(X,Y)=Cov(Y,X) Cov(X,Y)=Cov(Y,X)可知协方差矩阵是对称矩阵。
PCA的本质是原始特征空间的重构,通过寻找到一个低维的平面对数据进行投影,以便最小化投影误差的平方,即最小化每个点与投影后的对应点之间距离的平方值。
一个样本有n个特征,通过计算协方差矩阵 Σ = 1 m ∑ i = 1 m ( x ( i ) ) ( x ( i ) ) T \Sigma=\frac{1}{m}\sum\limits_{i=1}^m(x^{(i)})(x^{(i)})^T Σ=m1i=1∑m(x(i))(x(i))T得到特征之间的相关强度。由于特征可能很多,当维度达到很高的时候,计算往往很困难。而PCA可以帮助我们选出较为重要的特征,为我们的数据降维。比如1000维的特征,最终可能只有100维的特征是我们需要的。
得到协方差矩阵 Σ \Sigma Σ后,我们用SVD对 Σ \Sigma Σ进行分解。将特征值按照从高到低排序,选择特征值最大的前k个(也即方差最大,因为数据的最大方差给出了数据的最重要的信息。)的N个特征所对应的特征向量组成的矩阵。由于 Σ \Sigma Σ是对称矩阵,所以计算过程中的 A A T AA^T AAT和 A T A A^TA ATA是一样的,最终得到的U矩阵和V矩阵也应该是一样的。所以我们简单取U矩阵即可。取分解后的U矩阵的前k列作为新维度的特征向量,将原先的样本映射到k维特征基组成的新空间中。
使用降维后的样本执行我们的机器学习算法。
PCA的目标是要将高维的样本x降低到某个k维的z,即 z = W x z=Wx z=Wx。我们先限定W中的每一列都有 ∣ ∣ w ∣ ∣ = 1 ||w||=1 ∣∣w∣∣=1,这样我们就可以使用 w ⋅ x = ∣ w ∣ ∣ x ∣ c o s θ = ∣ x ∣ c o s θ w·x=|w||x|cos\theta=|x|cos\theta w⋅x=∣w∣∣x∣cosθ=∣x∣cosθ直接表示x在w方向上的投影。假设我们要将降到一维,即 z 1 = w 1 ⋅ x z_1=w^1·x z1=w1⋅x,其中 w 1 w^1 w1是W矩阵中的第一列。 z 1 z_1 z1是向量x在 w 1 w^1 w1上的向量。得到一系列的 z 1 z_1 z1,我们希望 z 1 z_1 z1的方差 V a r ( z 1 ) = ∑ z 1 ( z 1 − z ˉ 1 ) 2 Var(z_1)=\sum_{z_1}(z_1-\bar z_1)^2 Var(z1)=∑z1(z1−zˉ1)2越大越好,因为我们不希望降维之后得到的样本点之间的差异性消失,同时方差越大也表示样本点在这个方向上越分散。
如果我们希望降到二维,我们需要找到 z 2 = w 2 ⋅ x z_2=w^2·x z2=w2⋅x,同样需要最大化方差 V a r ( z 2 ) = ∑ z 2 ( z 2 − z ˉ 2 ) 2 Var(z_2)=\sum_{z_2}(z_2-\bar z_2)^2 Var(z2)=∑z2(z2−zˉ2)2,但是如果这样的话,找到的 w 2 w^2 w2就跟 w 1 w^1 w1一样了,因此我们需要加一个限制,令 w 1 ⋅ w 2 = 0 w^1·w^2=0 w1⋅w2=0,即 w 1 w^1 w1和 w 2 w^2 w2之间正交。
推广到k维的情况,得到 W = [ ( w 1 ) T ( w 2 ) T . . . ( w k ) T ] W=\begin{bmatrix} (w^1)^T \\ (w^2)^T \\ ... \\ (w^k)^T\end{bmatrix} W=⎣⎢⎢⎡(w1)T(w2)T...(wk)T⎦⎥⎥⎤,根据定义可知W矩阵为正交矩阵,这也符合我们的直觉,就是将样本映射到一个新的低维空间上,而W矩阵的每一列就是这个空间的标准正交基。
z 1 = w 1 ⋅ x z ˉ 1 = ∑ z 1 = ∑ w 1 ⋅ x = w 1 ⋅ ∑ x = w 1 ⋅ x ˉ ( a ⋅ b ) 2 = ( a T b ) 2 = a T b a T b = a T b ( a T b ) T = a T b b T a V a r ( z 1 ) = ∑ z 1 ( z 1 − z ˉ 1 ) 2 = ∑ x ( w 1 ⋅ x − w 1 ⋅ x ˉ ) 2 = ∑ ( w 1 ⋅ ( x − x ˉ ) ) 2 = ∑ ( w 1 ) T ( x − x ˉ ) ( x − x ˉ ) T w 1 = ( w 1 ) T ∑ ( x − x ˉ ) ( x − x ˉ ) T w 1 = ( w 1 ) T S w 1 \begin{aligned} &z_1=w^1·x \\ &\bar z_1=\sum z_1=\sum w^1·x=w^1·\sum x =w^1· \bar x \\ &(a·b)^2=(a^Tb)^2=a^Tba^Tb=a^Tb(a^Tb)^T=a^Tbb^Ta \\ &Var(z_1) =\sum_{z_1}(z_1-\bar z_1)^2 \\ &=\sum_x(w^1·x-w^1·\bar x)^2 \\ &=\sum(w^1·(x-\bar x))^2 \\ &=\sum(w^1)^T(x-\bar x)(x-\bar x)^Tw^1 \\ &=(w^1)^T\sum(x-\bar x)(x-\bar x)^Tw^1 \\ &=(w^1)^TSw^1 \end{aligned} z1=w1⋅xzˉ1=∑z1=∑w1⋅x=w1⋅∑x=w1⋅xˉ(a⋅b)2=(aTb)2=aTbaTb=aTb(aTb)T=aTbbTaVar(z1)=z1∑(z1−zˉ1)2=x∑(w1⋅x−w1⋅xˉ)2=∑(w1⋅(x−xˉ))2=∑(w1)T(x−xˉ)(x−xˉ)Tw1=(w1)T∑(x−xˉ)(x−xˉ)Tw1=(w1)TSw1
为了找到 w 1 w^1 w1最大化 ( w 1 ) T S w 1 (w^1)^TSw^1 (w1)TSw1,我们必须对 w 1 w^1 w1做一个限制,否则我们只需要令 w 1 w^1 w1都为无穷大即可。上面我们已经限制了W每一列的模长为1,这样还有一个好处就是我们得到的特征向量也是唯一的。因此我们的问题转化为带约束的最优化问题,可以使用拉格朗日乘子法进行求解。
协方差矩阵是对称的,半正定的。
L ( w 1 ) = ( w 1 ) T S w 1 − α ( ( w 1 ) T w 1 − 1 ) . . . . . . . . . . ( 1 ) L(w^1)=(w^1)^TSw^1-\alpha((w^1)^Tw^1-1)..........(1) L(w1)=(w1)TSw1−α((w1)Tw1−1)..........(1)
对其求偏导得到
∂ L ( w 1 ) / ∂ w 1 1 = 0 , ∂ L ( w 1 ) / ∂ w 2 1 = 0 , . . . ∂ L ( w 1 ) / ∂ w k 1 = 0 ; \partial L(w^1)/\partial w^1_1=0,\\ \partial L(w^1)/\partial w^1_2=0,\\ ... \\ \partial L(w^1)/\partial w^1_k=0;\\ ∂L(w1)/∂w11=0,∂L(w1)/∂w21=0,...∂L(w1)/∂wk1=0;
最后可以解得
S w 1 − α w 1 = 0    ⟺    S w 1 = α w 1 . . . . . . . . . . ( 2 ) Sw^1-\alpha w^1=0 \iff Sw^1=\alpha w^1 ..........(2) Sw1−αw1=0⟺Sw1=αw1..........(2)
这里我们已经可以发现 w 1 w^1 w1是S矩阵的特征向量了,问题是它是哪个特征值对应的特征向量?由于当 S w 1 = α w 1 Sw^1=\alpha w^1 Sw1=αw1时整个式子是最大的,因此我们进一步推导得到:
( w 1 ) T S w 1 = α ( w 1 ) T w 1 = α . . . . . . . . . . ( 3 ) (w^1)^TSw^1=\alpha (w^1)^Tw^1 = \alpha ..........(3) (w1)TSw1=α(w1)Tw1=α..........(3)
而此时最大值就是 α \alpha α,也就是S的特征值,因此我们需要取得最大的特征值,而 w 1 w^1 w1是就是最大特征值对应的特征向量。
同时我们需要找到 w 2 w^2 w2来最大化 ( w 2 ) T S w 2 (w^2)^TSw^2 (w2)TSw2,同时存在两个约束 ( w 2 ) T w 2 = 1 (w^2)^Tw^2=1 (w2)Tw2=1, ( w 2 ) T w 1 = 0 (w^2)^Tw^1=0 (w2)Tw1=0,依旧使用拉格朗日乘子法进行求解,有
L ( w 2 ) = ( w 2 ) T S w 2 − α ( ( w 2 ) T w 2 − 1 ) − β ( ( w 2 ) T w 1 − 0 ) . . . . . . . . . . ( 4 ) L(w^2)=(w^2)^TSw^2-\alpha((w^2)^Tw^2-1)-\beta ((w^2)^Tw^1-0)..........(4) L(w2)=(w2)TSw2−α((w2)Tw2−1)−β((w2)Tw1−0)..........(4)
对其求偏导并令偏导为0得到:
S w 2 − α w 2 − β w 1 = 0.......... ( 5 ) ( w 1 ) T S w 2 − α ( w 1 ) T w 2 ⎵ 0 − β ( w 1 ) T w 1 ⎵ 1 = 0 ( w 1 ) T S w 2 = ( ( w 1 ) T S w 2 ) T = ( w 2 ) T S T w 1 = ( w 2 ) T S w 1 = λ 1 ( w 2 ) T w 1 = 0 Sw^2-\alpha w^2- \beta w^1=0 ..........(5) \\ (w^1)^TSw^2-\alpha \underbrace{(w^1)^Tw^2}_{0}-\beta \underbrace{(w^1)^Tw^1}_{1}=0 \\ (w^1)^TSw^2 = ((w^1)^TSw^2)^T=(w^2)^TS^Tw^1=(w^2)^TSw^1=\lambda_1(w^2)^Tw^1=0 Sw2−αw2−βw1=0..........(5)(w1)TSw2−α0 (w1)Tw2−β1 (w1)Tw1=0(w1)TSw2=((w1)TSw2)T=(w2)TSTw1=(w2)TSw1=λ1(w2)Tw1=0
最终我们得到 β = 0 \beta =0 β=0 式(5)中剩下 S w 2 = α w 2 Sw^2=\alpha w^2 Sw2=αw2,因此 w 2 w^2 w2就是S矩阵第二大特征值对应的特征向量,并且由于S是对称的,因此它们的特征向量之间相互正交。
对于一组数据点 { v 1 , v 2 , . . . , v n } \{v_1,v_2,...,v_n\} {v1,v2,...,vn},先对其进行中心化,表示为 { x 1 , x 2 , . . . , x n } = { v 1 − μ , v 2 − μ , . . . , v n − μ } \{x_1,x_2,...,x_n\}=\{v_1-\mu,v_2-\mu,...,v_n-\mu\} {x1,x2,...,xn}={v1−μ,v2−μ,...,vn−μ},其中 μ = 1 n ∑ i = 1 n v i \mu=\frac{1}{n}\sum\limits_{i=1}^nv_i μ=n1i=1∑nvi,因此向量 x i x_i xi在 w w w上的投影可以表示为 x i T w x_i^Tw xiTw,由于做了中心化,所以投影后的均值 μ ′ = 1 n ∑ i = 1 n x i T w = ( 1 n ∑ i = 1 n x i T ) w = 0 \mu'=\frac{1}{n}\sum\limits_{i=1}^nx_i^Tw=(\frac{1}{n}\sum\limits_{i=1}^nx_i^T)w=0 μ′=n1i=1∑nxiTw=(n1i=1∑nxiT)w=0。投影之后的方差表示为
D ( x ) = 1 n ∑ i = 1 n ( x i T w ) 2 = 1 n ∑ i = 1 n ( x i T w ) T ( x i T w ) = 1 n ∑ i = 1 n w T x i x i T w = w T ( 1 n ∑ i = 1 n x i x i T ) w = w T Σ w \begin{aligned} D(x) &=\frac{1}{n}\sum_{i=1}^n(x_i^Tw)^2 \\ &=\frac{1}{n}\sum_{i=1}^n(x_i^Tw)^T(x_i^Tw) \\ &=\frac{1}{n}\sum_{i=1}^nw^Tx_ix_i^Tw \\ &=w^T(\frac{1}{n}\sum_{i=1}^nx_ix_i^T)w \\ &=w^T\Sigma w \\ \end{aligned} D(x)=n1i=1∑n(xiTw)2=n1i=1∑n(xiTw)T(xiTw)=n1i=1∑nwTxixiTw=wT(n1i=1∑nxixiT)w=wTΣw
Σ \Sigma Σ为样本协方差矩阵,得到上式后,我们得到最大化问题
max w T Σ w , s t . w T w = 1 \max w^T\Sigma w , \quad st . w^Tw=1 maxwTΣw,st.wTw=1
引入拉格朗日乘子,并对 w w w求导后让其等于0,可以推出
Σ w = λ w \Sigma w=\lambda w Σw=λw
此时有
D ( x ) = w T Σ w = λ w T w = λ D(x)=w^T\Sigma w=\lambda w^T w=\lambda D(x)=wTΣw=λwTw=λ
即最大的方差=样本协方差矩阵的最大特征值,最佳投影方向就是最大特征值对应的特征向量。于是我们就得到了上面PCA的算法。
降维后的样本 Z = U r e d u c e T X Z=U_{reduce}^TX Z=UreduceTX,则重构回原样本空间得到的近似样本为 X a p p r o x = U r e d u c e Z X_{approx}=U_{reduce}Z Xapprox=UreduceZ,可以通过映射得到在原来的高维度下样本X的近似位置。
如果从最小化重构代价的角度来看PCA的话,和上面理解的最大投影方差其实是一样的。
PCA实际上是将样本的特征空间重构,再对其进行降维。在我们正常的理解中,一个空间上面的点(a,b),可以用 x = a x 1 + b x 2 x=ax_1+bx_2 x=ax1+bx2来表示,如果将其映射到新的坐标轴 u 1 , u 2 u_1,u_2 u1,u2上,可以用 x = ( x T u 1 ) u 1 + ( x T u 2 ) u 2 x=(x^Tu_1)u_1+(x^Tu_2)u_2 x=(xTu1)u1+(xTu2)u2来表示,如果原先的样本是p维的话,则有
x i = ∑ k = 1 p ( x i T u k ) u k x_i=\sum_{k=1}^p(x_i^Tu_k)u_k xi=k=1∑p(xiTuk)uk
如果不降维,它其实和原先的样本是等价的,而降到q维之后,新的样本就变成了
x ^ i = ∑ k = 1 q ( x i T u k ) u k \hat x_i=\sum_{k=1}^q(x_i^Tu_k)u_k x^i=k=1∑q(xiTuk)uk
要最小化重构代价,其实就是最小化以下目标
J = 1 N ∑ i = 1 N ∣ ∣ x i − x ^ i ∣ ∣ 2 = 1 N ∑ i = 1 N ∣ ∣ ∑ k = q + 1 p ( x i T u k ) u k ∣ ∣ 2 = 1 N ∑ i = 1 N ∑ k = q + 1 p ( x i T u k ) 2 \begin{aligned} J &=\frac{1}{N}\sum_{i=1}^N||x_i-\hat x_i||^2 \\ &=\frac{1}{N}\sum_{i=1}^N||\sum_{k=q+1}^p(x_i^Tu_k)u_k||^2 \\ &=\frac{1}{N}\sum_{i=1}^N\sum_{k=q+1}^p(x_i^Tu_k)^2 \\ \end{aligned} J=N1i=1∑N∣∣xi−x^i∣∣2=N1i=1∑N∣∣k=q+1∑p(xiTuk)uk∣∣2=N1i=1∑Nk=q+1∑p(xiTuk)2
将样本的去均值化考虑进来,继续化简,就有了
J = 1 N ∑ i = 1 N ∑ k = q + 1 p ( ( x i − x ˉ ) T u k ) 2 = ∑ k = q + 1 p ∑ i = 1 N 1 N ( ( x i − x ˉ ) T u k ) 2 = ∑ k = q + 1 p ∑ i = 1 N 1 N u k T ( x i − x ˉ ) ( x i − x ˉ ) T u k = ∑ k = q + 1 p u k T S u k \begin{aligned} J &=\frac{1}{N}\sum_{i=1}^N\sum_{k=q+1}^p((x_i-\bar x)^Tu_k)^2 \\ &=\sum_{k=q+1}^p\sum_{i=1}^N\frac{1}{N}((x_i-\bar x)^Tu_k)^2 \\ &=\sum_{k=q+1}^p\sum_{i=1}^N\frac{1}{N}u_k^T(x_i-\bar x)(x_i-\bar x)^Tu_k \\ &=\sum_{k=q+1}^pu_k^TSu_k \\ \end{aligned} J=N1i=1∑Nk=q+1∑p((xi−xˉ)Tuk)2=k=q+1∑pi=1∑NN1((xi−xˉ)Tuk)2=k=q+1∑pi=1∑NN1ukT(xi−xˉ)(xi−xˉ)Tuk=k=q+1∑pukTSuk
因此等价于求解
arg min w ∑ k = q + 1 p u k T S u k s . t . u k T u k = 1 \arg \min_w \sum_{k=q+1}^pu_k^TSu_k \quad s.t. \quad u_k^Tu_k=1 argwmink=q+1∑pukTSuks.t.ukTuk=1
可以发现最小重构代价的式子实际上和最大投影方差的式子是等价的。只不过最大投影方差是求得方差最大的q维,而最小重构代价的式子是从最小化余量的角度来选取最小的p-q维。
定义均方误差: 1 m ∑ i = 1 m ∣ ∣ x ( i ) − x a p p r o x ( i ) ∣ ∣ 2 \frac{1}{m}\sum\limits_{i=1}^m||x^{(i)}-x_{approx}^{(i)}||^2 m1i=1∑m∣∣x(i)−xapprox(i)∣∣2
定义数据总方差: 1 m ∑ i = 1 m ∣ ∣ x ( i ) ∣ ∣ 2 \frac{1}{m}\sum\limits_{i=1}^m||x^{(i)}||^2 m1i=1∑m∣∣x(i)∣∣2
参数k的选择通常要满足(保留99%的偏差):
1 m ∑ i = 1 m ∣ ∣ x ( i ) − x a p p r o x ( i ) ∣ ∣ 2 1 m ∑ i = 1 m ∣ ∣ x ( i ) ∣ ∣ 2 ≤ 0.01 o r 1 − ∑ i = 1 k S i i ∑ i = 1 n S i i ≤ 0.01 \frac{\frac{1}{m}\sum\limits_{i=1}^m||x^{(i)}-x_{approx}^{(i)}||^2}{\frac{1}{m}\sum\limits_{i=1}^m||x^{(i)}||^2} \le 0.01 \\ or\quad 1-\frac{\sum\limits_{i=1}^kS_{ii}}{\sum\limits_{i=1}^nS_{ii}} \le 0.01 m1i=1∑m∣∣x(i)∣∣2m1i=1∑m∣∣x(i)−xapprox(i)∣∣2≤0.01or1−i=1∑nSiii=1∑kSii≤0.01
降维就是一种对高维度特征数据预处理方法。降维是将高维度的数据保留下最重要的一些特征,去除噪声和不重要的特征,从而实现提升数据处理速度的目的。在实际的生产和应用中,降维在一定的信息损失范围内,可以为我们节省大量的时间和成本。降维也成为应用非常广泛的数据预处理方法。