关于SVD和特征值分解
\section{矩阵表示的含义}
在线性代数当中,我们知道矩阵代表着线性变换.一个\(m \times n\)的矩阵\(\bold X\)代表一个线性映射\(\bold X :\mathbb{R}^m \to \mathbb{R}^n.\)
如果我们将标准正交基\(\bm e_1, \bm e_2, \cdots \bm e_n\)取作列向量,则矩阵
\begin{equation}
\bold E = \begin{bmatrix}\bm e_1 & \bm e_2 & \cdots &\bm e_n\end{bmatrix}
\end{equation}
是一个酉矩阵.如果向量\(\bm a\)与第\(i\)个正交基内积用\(a_i\)表示,即\(a_i = (\bm a, \bm e_i)\),那么\(\bm a\)可以表示为
\begin{equation}
\bm a = \bold E \begin{bmatrix}a_1 \ a_2 \ \vdots \ a_n\end{bmatrix}
\end{equation}
如果一个向量在基矩阵\(\bold A, \bold B\)下的坐标分别为为\(\bm a, \bm b\),那么有
\begin{equation}
\bold A \bm a = \bold B \bm b
\end{equation}
左乘\(\bold A^{-1}\),就有
\begin{equation}
\bm a = \bold A^{-1} \bold B \bm b
\end{equation}
特殊地,当\(\bold B = \bold I\)时,上式变为
\begin{equation}
\bm a = \bold A^{-1} \bm b
\end{equation}
也就是说,如要将正交直角坐标系下的坐标转换到另一套标准正交基,则左乘此正交基为列向量的矩阵的逆即可.
我们知道,对于\(m\times n\)的矩阵\(\bold X\),可以进行SVD:
\begin{equation}
\bold X = \bold{U\Sigma}\bold{V}^{\top}
\label{svd}
\end{equation}
其中\(\bold U, \bold{V}\)分别是\(m\times m\)和\(n \times n\)的酉矩阵,\(\Sigma\)为\(m\times n\)的对角矩阵,对角元被称为奇异值,一般从大到小排列.不失一般性,我们假设\(m \ge n\).
而对于方阵\(\bold A\),如果有
\begin{equation}
\bold A \bm x = \lambda \bm x
\end{equation}
那么\(\bm x\)被称为特征向量,\(\lambda\)即为对应的特征值.我们知道实对称矩阵一定可被相似对角化,因此将其\(n\)个线性无关的特征向量排列成矩阵\(\bold X\),就有
\begin{equation}
\bold A = \bold X \Lambda \bold X^{-1} = \bold X \Lambda \bold X^{\top}
\end{equation}
其中$\bold \Lambda $为特征值构成的对角矩阵.两种分解看起来具有相似性,那么它们的联系究竟是什么呢?
\section{奇异值分解和特征值分解的几何含义}
我们知道,一个矩阵可以视作一个线性变换,而线性变换共有三种效应,即拉伸,旋转和投影.
所谓拉伸,典型代表就是对角矩阵\(\text{diag} \{\lambda_1, \lambda_2, \cdots, \lambda_n\}\),就是将各个坐标方向拉长\(\lambda_i\)倍.旋转的典型例子是旋转\(\theta\)后的变换矩阵:
\begin{equation}
\begin{pmatrix}
\cos \theta & -\sin \theta
\
\sin \theta & \cos \theta
\end{pmatrix}
\end{equation}
投影则是指向不同维度的空间进行变换.
所谓特征值分解,就是寻找一组向量,使得矩阵代表的变换在这组向量下只体现为拉伸.我们知道\(n\)阶方阵可相似对角化的充要条件是其具有\(n\)个线性无关的特征向量,这\(n\)个线性无关的特征向量进行标准正交化之后,就是我们要寻找的"只有拉伸变换"的基.也就是
\begin{equation}
\bold A = \bold T^{-1} \Lambda \bold T
\label{eigenvector decomposition}
\end{equation}
我们知道,若从基\((\bm a_1, \bm a_2, \cdots, \bm a_n)\)到基\((\bm b_1, \bm b_2, \cdots, \bm b_n)\)的过渡矩阵为\(\bold P\),则同一个线性变换在两组基下的矩阵分别为\(\bold A\)和\(\bold P^{-1}\bold A\bold P\).式 \(\ref{eigenvector decomposition}\) 就代表了在以\(\bold T\)的列向量为基的空间中,线性变换的矩阵是对角阵\(\Lambda\),"拉伸"的比例就是各个特征值.
现在我们来看svd.它的矩阵表示如下:
\begin{equation}
\bold X = \bold{U\Sigma}\bold{V}^{\top}
\end{equation}
将\(\bold X\)视为一线性变换,则\(\bold X \bm v = \bold{U\Sigma}\bold{V}^{\top} \bm v\).由于\(\bold V\)是酉矩阵,所以\(\bold{V}^{\top} \bm v = \bold{V}^{-1} \bm v\),也就是将\(\bm v\)从直角坐标变换为以\(\bold V\)的列向量为基的坐标.随后按照\(\bold \Sigma\)的系数和形状分别将其"拉伸"和"投影"到一个\(m\)维坐标,各个维度的基向量就是\(\bold U\)的列向量.
\section{PCA的数学推导}
在处理大量数据的时候,我们常常会发现数据具有某种规律,比如集中在某个超平面附近.这时可以提取这些规律,也就是将坐标变换到以另一些基上表示,之后可以只保留部分基,也就是进行降维.显然我们希望降维带来的损失越小越好,如果以投影后的模长平方为损失的度量,假设我们有\(m\)个\(n\)维数据\(\bold X_{n \times m}\),且\(\bold X\)已经过中心化,设投影方向为\(\bm u_j\),限制\(\bm u_j^{\top} \bm u_j = 1\),那么去掉这个维度产生的误差(也就是原数据在此方向上的投影平方)
\begin{equation}
\mathcal{L}j = \sum^{m} \left(\bm x_i^{\top} \bm u_j\right)^2 = \sum_{i=1}^{m} \left( \bm x_i^{\top} \bm u_j\right)^{\top} \left(\bm x_i^{\top} \bm u_j\right) = \bm u_j^{\top} \bold X\bold X^{\top} \bm u_j
\end{equation}
如果我们要去掉\(t\)个维度,那么就是求解约束极值问题
\begin{equation}
\text{minimize }\mathcal{L}t = \sum^{t} \mathcal{L}t =\sum^{t} \bm u_i^{\top} \bold X\bold X^{\top} \bm u_i
\text{ s.t. } \forall i, \bm u_i^{\top}\bm u_i =1.
\end{equation}
记\(\bold S = \bold X\bold X^{\top}\),将其转换为无约束极值问题
\begin{equation}
L = \sum_{i=1}^{t} \zk{ \bm u_i^{\top} \bold S \bm u_i - \lambda_i \xk{\bm u_i^{\top}\bm u_i - 1} }
\label{无约束极值}
\end{equation}
求导得
\begin{equation}
\frac{\partial L}{\partial \bm u_i} = \bold S \bm u_i - \lambda_i \bm u_i = 0
\end{equation}
也就是说\(\bm u_i\)是对应特征值\(\lambda_i\)的单位特征向量.将其代入式 \(\ref{无约束极值}\),得到极值为
\begin{equation}
L = \sum_{i=1}^t \lambda_i
\end{equation}
因此我们只需去掉特征值最小的\(t\)个特征向量的方向.这并不难理解,因为这相当于保留了拉伸效应最显著的方向.
\section{svd与特征值分解的关系}
从数学上不难得到,式 \(\ref{svd}\)中\(\bold V\)的列向量正是\(\bold X^{\top} \bold X\)的特征向量,而\(\bold{U}\)的列向量是\(\bold X \bold X^\top\)的特征向量.\footnote{这里要注意的是,在式 \(\ref{svd}\)当中分解的\(\bold X\)的形状是\(m \times n\), 而在PCA数学推导当中则是\(n\times m\),这只是笔者对两个问题中记号的习惯用法,切勿混淆.}因为
\begin{equation}
\begin{split}
\bold X^{\top} \bold X = \bold V \Sigma^{\top} \bold U^{\top}\bold U \bold \Sigma \bold V^{\top} = \bold V \Sigma^{\top}\Sigma \bold V^{\top}
\
\bold X \bold X^{\top} = \bold U \Sigma \bold V^{\top}\bold V \bold \Sigma^{\top} \bold U^{\top} = \bold U \Sigma \Sigma^{\top} \bold U^{\top}
\end{split}
\end{equation}
在一个具体的例子当中,比如\(\bold X_{n \times m}\)代表了\(n\)个人是否看过\(m\)部电影,那么对\(\bold X\)进行svd,就相当于分别取人和电影这两个空间的特征向量,\(\bold\Sigma\)给出了两个空间的特征向量的转换关系.反过来也可以对\(\bold X^\top\)做类似的解释.而经过中心化的\(\bold X\)运算得出的\(\bold X \bold X^\top\)(或\(\bold X^{\top} \bold X\))实际上正是人之间以观看的电影作为指标(或电影之间以被观看的人作为指标)的协方差矩阵,代表了人与人(或电影与电影)之间以另一个空间的特征的相关性.对其进行特征值分解,其实也就是对人(电影)进行分类,这就是PCA.

浙公网安备 33010602011771号