PCA降维算法推导
主成分分析(PCA)是一种常用的无监督学习方法,这一方法利用正交变换(也就是对原坐标系做旋转变换)把由线性相关变量表示的观测数据转换为少数几个由线性无关变量表示的数据,线性无关的变量称作主成分。
算法原理有最大方差理论以及最小均方误差理论。
下面利用数学推导PCA算法的原理。
对于给定的一组数据样本{v_1,v_2,⋯,v_n},其中所有向量均为列向量(向量的维数表示数据的特征数量),中心化后数据样本的表示为{x_1,x_2,⋯,x_n}={v_1-\mu,v_2- \mu,⋯,v_n-\mu},其中\mu = \frac{1}{n}\sum_{i=1}^{n}v_i。
1. PCA最大方差理论
对应PCA最大方差理论,要求样本点在这个单位轴上的投影能尽可能分开。
考虑单位向量\omega,要求数据样本在单位向量\omega上的投影尽可能大。向量x_i在ω(单位方向向量)上的投影坐标可以表示为投影(x_i,\omega) = x_i^T\omega 。所以目标是找到一个投影方向ω,使得{x_1,x_2,⋯,x_n}在ω上的投影方差尽可能大。
由方差计算公式:D(X) = \frac{1}{n}\sum_{i=1}^{n}(x_i^T\omega)^2 = \frac{1}{n}\sum_{i=1}^{n}(x_i^T\omega)^T(x_i^T\omega) = \frac{1}{n}\sum_{i=1}^{n}\omega^Tx_ix_i^T\omega \ \\=\omega^T(\frac{1}{n}\sum_{i=1}^{n}x_ix_i^T)\omega
观察到\frac{1}{n}\sum_{i=1}^{n}x_ix_i^T为数据样本中心化的协方差矩阵,简写为\sum。
由于\omega是单位向量,所以有\omega^T \omega = 1。
我们要求解的最大化问题为
\begin{equation} \begin{cases} max\left{ \omega^T\sum\omega \right} \ s.t.\omega^T\omega = 1 \end{cases} \end{equation}
引入拉格朗日乘子\lambda解决约束条件,并对\omega求导令其等于0:
L(\omega,\lambda)=\omega^T\sum\omega - \lambda(\omega^T\omega - 1) \\ 对\omega求导:2\sum\omega - 2\lambda\omega = 0
可以推出\sum\omega = \lambda\omega,此时:
D(X) = \omega^T\sum\omega = \lambda\omega^T\omega = \lambda
x投影后的方差就是协方差矩阵的特征值。我们要找到最大的方差也就是协方差矩阵最大的特征值,最佳投影方向就是最大特征值所对应的特征向量。
2.PCA最小均方误差理论
对应PCA最小均方误差理论,要求样本点到这个单位轴的距离尽可能小。
考虑单位向量\omega,向量x_i到单位向量\omega的距离的平方可以表示为||x_i||^2-(x_i^T\omega)^2。
由MSE计算公式:
MSE(X)=\frac{1}{n}\sum_{i=1}^{n}(||x_i||^2-(x_i^T\omega)^2) = \frac{1}{n}\sum^{n}_{i=1}||x_i||^2 - \frac{1}{n}\sum_{i=1}^{n}(x_i^T\omega)^2 \\ =\frac{1}{n}\sum^{n}_{i=1}||x_i||^2 -D(X)
我们要求解的最小化问题为:
\begin{equation} \begin{cases} min\left{ \frac{1}{n}\sum^{n}_{i=1}||x_i||^2 -D(X) \right} \ s.t.\omega^T\omega = 1 \end{cases} \end{equation}
由于\frac{1}{n}\sum^{n}_{i=1}||x_i||^2为定值,最小化负方差等价于最大化方差。
因此PCA最小均方误差理论与PCA最大方差理论等价。
3. PCA降维算法步骤
主成分分析方法主要有两种:第一种方法是通过样本协方差矩阵的特征值分解,求得样本的主成分矩阵。第二种方法是将数据矩阵进行奇异值分解,求得样本的主成分矩阵。
3.1 样本协方差矩阵特征值分解法
特征值分解法是根据PCA的基本原理推导而来的算法。PCA的目标是通过线性投影将高维数据映射到低维空间,同时最大化投影后数据的方差。特征值分解提供了一种有效的方式来确定最佳的投影方向,即特征向量。
具体步骤如下:
输入:
样本集X =\left\{x_1,x_2,...,x_n\right\} ,其中X是一个m×n的样本矩阵。
低维空间度数d。
过程:
1.对所有样本进行去中心化:x_i \leftarrow x_i-\frac{1}{n}\sum_{i=1}^{n}x_i
2.计算样本的协方差矩阵:XX^T
3.对协方差矩阵XX^T做特征值分解,得到 n 个特征值并排序:
\lambda_1\geq\lambda_2\geq...\geq\lambda_n
其中,求前d个特征值对应的单位特征向量,第 i 个特征值对应的单位特征向量:
\omega_i=(a_{1i},a_{2i},...,a_{ni})^T,i=1,2,...,d
4.最大的d个特征值对应的特征向量\omega_1,\omega_2,..,\omega_d ,构造矩阵W=(\omega_1,\omega_2,...,\omega_d),W是一个n×d的正交矩阵。
5.通过以上映射将 m 维样本映射到 d 维,得到d×n样本主成分矩阵Y:Y=W^TX
输出:
投影矩阵W,样本主成分矩阵Y。
3.2 数据矩阵奇异值分解法
对n×m矩阵X进行奇异值分解:
X=U\sum V
保留前d个奇异值、奇异向量,V的每一列对应一个主成分,得到d×m样本主成分矩阵Y.
Y=V^TX
在sklearn中,求解PCA的方法正是采用的是奇异值分解法,它大大提高了计算效率,使用PCA类时,默认使用svd_solver对数据进行降维。
3.3 使用PCA算法进行降维后的效果
PCA将高维空间中的向量通过简单的向量减法和矩阵-向量乘法将新样本投影至低维空间中,降维导致只有d维被保留,剩余的n-d个特征值的特征向量都被舍弃了。这个舍弃是有必要的:第一,降维能够使采样密度增大;第二,当数据受到噪声影响时,最小的特征值所对应的特征向量往往与噪声有关,将它们舍弃能够在一定程度上起到去噪的效果。
在新的特征矩阵生成之前,我们无法知晓PCA都建立了怎样的新特征向量,新特征矩阵生成之后也不具有可读性。我们无法判断新特征矩阵的特征是从原数据中的什么特征组合而 来,新特征虽然带有原始数据的信息,却已经不是原数据上代表着的含义了。因此以PCA为代表的降维算法是特征提取的一种表现形式。
评论区