【机器学习】SVD与PCA

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/Hemk340200600/article/details/85548344

主成分分析算法(PCA)是最常用的线性降维方法,它的目标是通过某种线性投影,将高维的数据映射到低维的空间中表示,并期望在所投影的维度上数据的方差最大,以此使用较少的数据维度,同时保留住较多的原数据点的特性。

1.概率论基础

1.1 数学期望

  数学期望又称为均值。在概率论中,数学期望用来反映一个随机变量平均取值的大小,记为E(x)。具有如下性质:

  1. E ( a ) = a E(a)=a
  2. E ( a X ) = a E ( X ) E(aX)=aE(X)
  3. E ( a X + b ) = a E ( X ) + b E(aX+b)=aE(X)+b

1.2 方差(Variance)

  方差是各个数据与平均数之差的平方的平均数。用来度量随机变量和其数学期望之间的偏离程度。定义为 v a r ( x ) = E ( ( x E ( x ) ) 2 ) var(x)=E((x-E(x))^2) 。具有如下性质:

  1. v a r ( X + b ) = v a r ( X ) var(X+b)=var(X)
  2. v a r ( a X + b ) = a 2 v a r ( X ) var(aX+b)=a^2var(X)
  3. X,Y独立的情况下, v a r ( a X + b Y ) = a 2 v a r ( X ) + b 2 v a r ( Y ) var(aX+bY)=a^2var(X)+b^2var(Y)

  当方差比较小时,说明数据离均值比较近,相对集中。
  当方差比较大时,说明数据离均值比较远且分散。

1.3 协方差(Covariance)

   协方差用于衡量两个变量的总体误差。方差只是协方差的一种特殊情况。期望值为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}
   如果X与Y是统计独立的,那么二者之间的协方差就是0,因为两个独立的随机变量满足 E ( X Y ) = E ( X ) E ( Y ) E(XY)=E(X)E(Y) ,此时协方差等价于方差。
   如果两个变量的变化趋势一致,也就是说如果其中一个大于自身的期望值,另外一个也大于自身的期望值,那么两个变量之间的协方差就是正值。 如果两个变量的变化趋势相反,即其中一个大于自身的期望值,另外一个却小于自身的期望值,那么两个变量之间的协方差就是负值。
   协方差具有以下性质:

  1. C o v ( X , Y ) = C o v ( Y , X ) Cov(X,Y)=Cov(Y,X)
  2. C o v ( a X , b Y ) = a b C o v ( X , Y ) Cov(aX,bY)=abCov(X,Y)
  3. C o v ( X 1 + X 2 , Y ) = C o v ( X 1 , Y ) + C o v ( X 2 , Y ) Cov(X_1+X_2,Y)=Cov(X_1,Y)+Cov(X_2,Y)
       当两个随机变量不是相互独立时,具有以下性质:
  4. var(X+Y)=var(X)+var(Y)+2Cov(X,Y)
  5. var(X-Y)=var(X)+var(Y)-2Cov(X,Y)

2.线性代数基础

2.1 矩阵

   形如 [ 1 2 3 4 ] \begin{bmatrix} 1 & 2 \\ 3 & 4 \\ \end{bmatrix} 的被称为矩阵。在解方程组的时候,我们可以将每个方程的系数当做矩阵的一行。在研究图像时,一张 256 × 256 256\times256 的图片在计算机中就是以矩阵的方式存储,矩阵的每一个位置代表一个像素。

2.2 特征值与特征向量

   对矩阵A,若有Ax=λx,则λ为特征值,x为对应的特征向量。对于矩阵A乘上 x \vec x ,可以看成 x \vec x 在经过由矩阵A的列向量表示的线性变换后得到的向量。如矩阵 [ 1 2 3 4 ] \begin{bmatrix} 1 & 2 \\ 3 & 4 \\ \end{bmatrix} 可以看做是将标准基 [ 1 0 ] \begin{bmatrix} 1 \\ 0\end{bmatrix} [ 0 1 ] \begin{bmatrix} 0 \\ 1\end{bmatrix} 线性变换到新的坐标系 [ 1 3 ] \begin{bmatrix} 1 \\ 3\end{bmatrix} [ 2 4 ] \begin{bmatrix} 2 \\ 4\end{bmatrix} 下。而 A x A\vec x 则会得到 x \vec x 在新坐标系下的坐标。大部分新的 x \vec x 在矩阵A的作用下都会偏离原来的方向,而少部分 x \vec x 只会沿着原来的方向进行缩放,方向不变,这样特殊的向量被称为特征向量,其缩放的比例被称为特征值。因此有Ax=λx。

2.3 对称矩阵

   形如 [ 1 2 2 3 ] \begin{bmatrix} 1 & 2 \\ 2 & 3 \\ \end{bmatrix} [ 1 2 3 2 3 4 3 4 10 ] \begin{bmatrix} 1 & 2 & 3 \\ 2 & 3 & 4 \\ 3 & 4 & 10\end{bmatrix} 等沿着主对角线对称的矩阵被称为对称矩阵,对于对称矩阵的元素,有 A i j = A j i A_{ij}=A_{ji} 。对于整个矩阵来说,有 A T = A A^T=A 。并且对称矩阵的特征向量之间互相垂直,因此特征向量组成的矩阵是正交矩阵。证明可参考对称矩阵的特征向量两两正交的证明

2.4 正交矩阵

   形如 [ 1 0 0 1 ] \begin{bmatrix} 1 & 0 \\ 0 & 1 \\ \end{bmatrix} [ 0 1 0 0 0 1 1 0 0 ] \begin{bmatrix} 0 & 1 & 0 \\ 0 & 0 & 1 \\ 1 & 0 & 0\end{bmatrix} 等各列之间互相正交(垂直)的矩阵被称为正交矩阵。对于正交矩阵来说,有 A A T = I , A T = A 1 AA^T=I,A^T=A^{-1}

2.5 矩阵对角化

   对矩阵A,B,如果存在可逆矩阵P使得 A = P 1 B P A=P^{-1}BP ,则称矩阵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} ,
   其中 Λ \Lambda 表示由 λ 1 , λ 2 , . . . , λ n \lambda_1,\lambda_2,...,\lambda_n 组成的对角矩阵。同时右乘 S 1 S^{-1} A = S Λ S 1 A=S\Lambda S^{-1}
   如果从几何的角度来解释矩阵的对角化,可以将矩阵A是一种线性转换,但是这种线性转换是在我们正常的以 [ 1 0 ] \begin{bmatrix} 1 \\ 0\end{bmatrix} [ 0 1 ] \begin{bmatrix} 0 \\ 1\end{bmatrix} 为标准基的空间上进行的。如果将其映射到特征向量组成的基上,也就是S矩阵,对于原空间上的向量 x \vec x ,如果执行 S 1 A S S^{-1}AS 的话,代表的变换是,先将 x \vec x 的坐标映射到特征基组成的空间里,然后进行A矩阵的线性变换,再将得到的新坐标映射回原坐标系下。而 S 1 A S S^{-1}AS 得到的新矩阵必然是对角矩阵,并且对角元为对应的特征值。也就是 Λ \Lambda 矩阵。这也是矩阵对角化的原理。

2.6奇异值分解SVD(Singular Value Decomposition)

  SVD是在机器学习广泛应用的算法。当一个矩阵较大时,我们可能希望对它进行分解。对于任意的m*n矩阵A,对其应用SVD后,可以得到三个较小的矩阵,有 A = U Σ V T A=U\Sigma V^T ,其中U和V都是正交矩阵,他们都满足 U T U = I , V T V = I U^TU=I,V^TV=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} ,因为 A A T AA^T 为实对称矩阵,因此其特征向量组成的矩阵为正交矩阵,由矩阵相似的知识可知, Σ 2 \Sigma^2 A A T AA^T 的特征值组成的对角矩阵, U U 矩阵为 A A T AA^T 的特征向量组成的矩阵。而 A A 矩阵是我们已知的,求出 A A T AA^T 后,求出其特征值和特征向量即可得到 U , Σ 2 U,\Sigma^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} ,因为 A T A A^TA 为实对称矩阵,因此其特征向量组成的矩阵为正交矩阵,由矩阵相似的知识可知, Σ 2 \Sigma^2 A T A A^TA 的特征值组成的对角矩阵, V V 矩阵为 A T A A^TA 的特征向量组成的矩阵。而 A A 矩阵是我们已知的,求出 A T A A^TA 后,求出其特征值和特征向量即可得到 V , Σ 2 V,\Sigma^2
  求解 Σ \Sigma: 上述步骤已经求出 Σ 2 \Sigma^2 ,因此求出 Σ 2 \Sigma^2 的求根即可。

2.7协方差矩阵

  前面已经介绍过协方差。而协方差矩阵就是,假定有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}
  而由 C o v ( X , Y ) = C o v ( Y , X ) Cov(X,Y)=Cov(Y,X) 可知协方差矩阵是对称矩阵。

3.主成分分析PCA(Principal Component Analysis)

3.1 算法简介

  PCA是寻找到一个低维的平面对数据进行投影,以便最小化投影误差的平方,即最小化每个点与投影后的对应点之间距离的平方值。

3.2 算法流程:

  1. 预处理数据,对数据进行均值化
  2. 计算协方差矩阵 Σ = 1 m i = 1 m ( x ( i ) ) ( x ( i ) ) T \Sigma=\frac{1}{m}\sum\limits_{i=1}^m(x^{(i)})(x^{(i)})^T
  3. 使用SVD特征值分解计算 Σ \Sigma 得到U,S,V矩阵,U矩阵每一列是特征向量,取前k列作为降维后的特征向量矩阵 U r e d u c e U_{reduce}
  4. 计算 Z = U r e d u c e T X Z=U_{reduce}^TX 得到 k × 1 k\times1 的向量得到样本X降维后的特征表示。

3.3 算法分析

  一个样本有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 得到特征之间的相关强度。由于特征可能很多,当维度达到很高的时候,计算往往很困难。而PCA可以帮助我们选出较为重要的特征,为我们的数据降维。比如1000维的特征,最终可能只有100维的特征是我们需要的。
  得到协方差矩阵 Σ \Sigma 后,我们用SVD对 Σ \Sigma 进行分解。将特征值按照从高到低排序,选择特征值最大的前k个(也即方差最大,因为数据的最大方差给出了数据的最重要的信息。)的N个特征所对应的特征向量组成的矩阵。由于 Σ \Sigma 是对称矩阵,所以计算过程中的 A A T AA^T A T A A^TA 是一样的,最终得到的U矩阵的V矩阵也应该是一样的。所以我们简单取U矩阵即可。取分解后的U矩阵的前k列作为新维度的特征向量,将原先的样本映射到k维特征基组成的新空间中。
  使用降维后的样本执行我们的机器学习算法。

3.3 重构rebuilding

  降维后的样本 Z = U r e d u c e T X Z=U_{reduce}^TX ,则重构回原样本空间得到的近似样本为 X a p p r o x = U r e d u c e Z X_{approx}=U_{reduce}Z ,可以通过映射得到在原来的高维度下样本X的近似位置。

3.4 参数K的选择:

  定义均方误差: 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
  定义数据总方差: 1 m i = 1 m x ( i ) 2 \frac{1}{m}\sum\limits_{i=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

3.5 总结

  降维就是一种对高维度特征数据预处理方法。降维是将高维度的数据保留下最重要的一些特征,去除噪声和不重要的特征,从而实现提升数据处理速度的目的。在实际的生产和应用中,降维在一定的信息损失范围内,可以为我们节省大量的时间和成本。降维也成为应用非常广泛的数据预处理方法。

猜你喜欢

转载自blog.csdn.net/Hemk340200600/article/details/85548344