引言
主成分分析是一种方法,它能够在尽可能不丢失信息的前提下,将相互关联的特征所构成的多维数据,通过原始特征的线性组合来表示新的特征,从而实现数据的降维。
在机器学习中需要分类的数据往往是远超三维的高维数据。因此,数据的可视化变得困难,计算成本也会增加。
即使在这种情况下,通过使用主成分分析进行降维,将数据投影到一维直线、二维平面或三维空间,就可以直观地把握数据结构。
本文将讲解主成分分析的基本理论。
\begin{align*}
\newcommand{\mat}[1]{\begin{pmatrix} #1 \end{pmatrix}}
\newcommand{\f}[2]{\frac{#1}{#2}}
\newcommand{\pd}[2]{\frac{\partial #1}{\partial #2}}
\newcommand{\d}[2]{\frac{{\rm d}#1}{{\rm d}#2}}
\newcommand{\T}{\mathsf{T}}
\newcommand{\(}{\left(}
\newcommand{\)}{\right)}
\newcommand{\{}{\left\{}
\newcommand{\}}{\right\}}
\newcommand{\[}{\left[}
\newcommand{\]}{\right]}
\newcommand{\dis}{\displaystyle}
\newcommand{\eq}[1]{{\rm Eq}(\ref{#1})}
\newcommand{\n}{\notag\\}
\newcommand{\t}{\ \ \ \ }
\newcommand{\argmax}{\mathop{\rm arg\, max}\limits}
\newcommand{\argmin}{\mathop{\rm arg\, min}\limits}
\def\l<#1>{\left\langle #1 \right\rangle}
\def\us#1_#2{\underset{#2}{#1}}
\def\os#1^#2{\overset{#2}{#1}}
\newcommand{\case}[1]{\{ \begin{array}{ll} #1 \end{array} \right.}
\definecolor{myblack}{rgb}{0.27,0.27,0.27}
\definecolor{myred}{rgb}{0.78,0.24,0.18}
\definecolor{myblue}{rgb}{0.0,0.443,0.737}
\definecolor{myyellow}{rgb}{1.0,0.82,0.165}
\definecolor{mygreen}{rgb}{0.24,0.47,0.44}
\end{align*}
基本思想
主成分分析是将多维数据中包含的信息这一概念用”方差”来衡量,在不丢失信息的前提下定义新特征的方法。为了便于理解,首先基于二维数据来说明主成分分析。考虑将二维数据 $\bm{x} = (x_1, x_2)^\T$ 投影到下述轴上。也就是说,将原始的二维数据代入下式,转换为一维数据。
\begin{align}
\label{eq:proj}
y = w_1x_1 + w_2x_2.
\end{align}
作为示例,下图假设了三个投影轴(a)、(b)、(c),将观测到的二维数据分别投影到各个轴上,并用黑色箭头 <—-> 表示数据的分散范围。
从该图可以看出,将数据投影到(b)轴比投影到(a)轴时数据的分散程度(方差)更大,而投影到(c)轴比(b)轴的方差更大。
这样,主成分分析通过寻找使数据方差最大的投影轴,并将数据投影到该轴上,从而在尽可能不丢失数据信息的情况下实现降维。特别地,使方差最大的投影轴称为”第一主成分”,而在与第一主成分正交的条件下使方差最大的投影轴称为”第二主成分”。
那么,如何求得投影后数据方差最大的轴呢?让我们基于二维数据对主成分分析进行形式化。
主成分分析的形式化
将观测到的 $n$ 个二维数据表示如下。
\bm{x}^{(1)} = \mat{x_1^{(1)} \\ x_2^{(1)}},\ \bm{x}^{(2)} = \mat{x_1^{(2)} \\ x_2^{(2)}}, \cdots, \bm{x}^{(n)} = \mat{x_1^{(n)} \\ x_2^{(n)}}.
\end{align}
那么,将第 $i$ 个二维数据投影到投影轴:$\eq{eq:proj}$ 上得到的数据为:
\label{eq:proj2}
y^{(i)} = w_1 x_1^{(i)} + w_2 x_2^{(i)} = \bm{w}^\T \bm{x}^{(i)} \,\ \ \ \ (i=1, 2, \dots n)
\end{align}
可以这样表示。这里,$\bm{w}$ 是系数向量 $(w_1, w_2)^\T$,表示投影轴的方向。因此,主成分分析的目标就是求得使方差最大的投影轴,换句话说,就是求这样的系数向量 $\bm{w}$。
因此,我们来计算投影轴上数据的方差 $s_y^2$。根据方差的定义 $s_y^2 \equiv \f{1}{n}\sum_i (y^{(i)} – \bar{y})^2$,首先计算投影轴上数据的均值 $\bar{y}$:
因此,方差 $s_y^2$ 为:
\end{align}
可以这样表示。这里,矩阵 $S$ 是基于二维观测数据的协方差矩阵。
S = \mat{s_{11} & s_{12} \\ s_{21} & s_{22}},\ \ s_{jk} \equiv \f{1}{n}\sum_{i=1}^n \(x_j^{(i)} – \bar{x}_j\)\(x_k^{(i)} – \bar{x}_k\),\ \ j,k=1,2.
\end{align*}
因此,为了求得主成分,需要找到使 $s_y^2= \bm{w}^\T S \bm{w}$ 最大的 $\bm{w}$,但这样的 $\bm{w}$ 会使 $\|\bm{w}\| \to \infty$ 而发散。
我们感兴趣的不是系数向量 $\bm{w}$ 的大小,而是其分量的比例(即投影轴的方向)。因此,对系数向量施加 $\bm{w}^\T \bm{w} = 1$ 这一约束条件。这样,求主成分的问题就转化为以下优化问题。
\max_{\bm{w}} \bm{w}^\T S \bm{w}\ \ {\rm subject\ to}\ \ \bm{w}^\T\bm{w}=1.
\end{align*}
这种约束条件下的最大化问题可以通过拉格朗日乘数法来求解。

即,设拉格朗日乘数为 $\lambda$,拉格朗日函数为:
L(\bm{w}, \lambda) = \bm{w}^\T S \bm{w} + \lambda(1 – \bm{w}^\T \bm{w})\label{eq:lag}
\end{align}
通过求其驻点(微分函数为0的点)可以得到解。
对拉格朗日函数:$\eq{eq:lag}$ 关于 $\bm{w}$ 求偏导数得到:
\pd{L}{\bm{w}} &= \pd{}{\bm{w}}(\bm{w}^\T S\bm{w}) + \lambda \pd{}{\bm{w}}(1-\bm{w}^\T \bm{w}) \n&= \pd{}{\bm{w}}(\bm{w}^\T S \bm{w}) – \lambda \pd{}{\bm{w}}(\bm{w}^\T \bm{w}) \n\n&= 2S\bm{w} -2\lambda \bm{w}.\label{eq:divlag}
\end{align}
这里使用了向量微分公式 $\partial(\bm{w}^\T S\bm{w}) / \partial \bm{w} = 2S \bm{w},\ \partial(\bm{w}^\T \bm{w}) / \partial \bm{w} = 2 \bm{w}$。

然后,令 $\eq{eq:divlag}$ 为 $\bm{0}$,可得:
\begin{align*}
S\bm{w} = \lambda\bm{w}.
\end{align*}
这样,主成分分析就归结为协方差矩阵的特征值问题。
主成分的确定
”求使投影数据方差最大的投影轴”这一问题已经转化为以下特征值问题。
\begin{align*}
S\bm{w} = \lambda\bm{w}.
\end{align*}
那么,特征值 $\lambda$ 具有什么含义呢?在上式左侧作用 $\bm{w}^\T$,得到:
\bm{w}^\T S \bm{w} &= \bm{w}^\T \lambda \bm{w} \n&= \lambda \bm{w}^\T \bm{w} \n&= \lambda\ \ \textstyle \because (\bm{w}^\T \bm{w}=1)\label{eq:lambda}
\end{align}
这里使用了特征向量已归一化的条件($\bm{w}^\T \bm{w}=1$)。那么 $\eq{eq:lambda}$ 左侧根据 $ \eq{eq:var} $ 就是投影轴上数据的方差 $s_y^2 = \bm{w}^\T S \bm{w}$。因此,特征值 $\lambda$ 本身就代表投影轴上数据的方差。
\begin{align*}
{\rm Var}[y] = \lambda
\end{align*}
综上所述,对于特征值问题 $S\bm{w} = \lambda\bm{w}$,属于最大特征值 $\lambda_1$ 的特征向量 $\bm{w}_1$ 给出了第一主成分的方向。
另外,根据定义,协方差矩阵 $S$ 是对称矩阵。对于对称矩阵,属于不同特征值的特征向量相互正交。
因此,对于特征值问题 $S\bm{w} = \lambda\bm{w}$,属于第二大特征值 $\lambda_2$ 的特征向量 $\bm{w}_2$ 给出了第二主成分的方向。
投影到多维空间
以上我们考察了投影到一维的情况,现在来考虑一般情况,即压缩到多维子空间的情形。
将观测到的 $n$ 个 $p$ 维数据用矩阵表示如下。
\us X_{[n \times p]}=\mat{x_1^{(1)} & x_2^{(1)} & \cdots & x_q^{(1)} &\cdots & x_p^{(1)} \\ x_1^{(2)} & x_2^{(2)} & \cdots & x_q^{(2)} &\cdots & x_p^{(2)} \\ \vdots & \vdots & \ddots & \vdots & \ddots & \vdots \\ x_1^{(n)} & x_2^{(n)} & \cdots & x_q^{(n)} &\cdots & x_p^{(n)}\\}=\mat{- & \bm{x}^{(1)\T} & – \\ – & \bm{x}^{(2)\T} & – \\ & \vdots & \\ – & \bm{x}^{(n)\T} & – \\}
\end{align*}
考虑使用主成分分析将上述 $p$ 维数据降维到 $q$ 维数据 $(q < p)$。
根据之前的讨论,降维后的 $q$ 维空间是由第一主成分到第 $q$ 主成分所张成的空间。因此,为了求主成分,将基于观测到的 $n$ 个 $p$ 维数据的协方差矩阵记为 $\us S_{[p \times p]}$,并将其特征值和特征向量按降序排列 $q$ 个。
&\lambda_1 &\geq \t\ \ &\lambda_2 &\geq \t\ \ &\cdots &\geq \t\ \ &\lambda_q \\&\bm{w}_1 &\ \t\ \ &\bm{w}_2 & \t\ \ & & \t\ \ &\bm{w}_q
\end{align*}
这里,$\bm{w}_j = (w_{j1}, w_{j2}, \dots, w_{jp})^\T$。那么,第一主成分 $y_1$ 到第 $q$ 主成分 $y_q$ 可以表示如下。
第1主成分 \t y_1 &= w_{11}x_1 + w_{12}x_2 + \cdots + w_{1p}x_p = \bm{w}^\T _1 \bm{x} \\第2主成分 \t y_2 &= w_{21}x_1 + w_{22}x_2 + \cdots + w_{2p}x_p = \bm{w}^\T _2 \bm{x} \\&\ \ \vdots \\第q主成分 \t y_q &= w_{q1}x_1 + w_{q2}x_2 + \cdots + w_{qp}x_p = \bm{w}^\T _q \bm{x}
\end{align*}
应用主成分分析后,观测到的第 $i$ 个 $p$ 维数据 $\bm{x}^{(i)} = \( x_1^{(i)}, x_2^{(i)}, \dots, x_p^{(i)} \)^\T$ 被投影到维度更低的 $q$ 维空间 $(q < p)$,成为 $q$ 维数据 $\bm{y}^{(i)} = \( y_1^{(i)}, y_2^{(i)}, \dots, y_q^{(i)} \)^\T$。各分量如下所示。
y_j^{(i)} = w_{j1}x_1^{(i)} + w_{j2}x_2^{(i)} + \cdots + w_{jp}x_p^{(i)} &= \bm{w}_j^\T \bm{x}^{(i)} \\&=\bm{x}^{(i)\T} \bm{w}_j\\(i = 1, \dots, n), \ \ (j=1, \dots,q)
\end{align*}
这个投影用矩阵综合表示如下。
\underbrace{\mat{y_1^{(1)} & y_2^{(1)} & \cdots & y_q^{(1)} \\ y_1^{(2)} & y_2^{(2)} & \cdots & y_q^{(2)} \\ \vdots & \vdots & \ddots & \vdots \\ y_1^{(n)} & y_2^{(n)} & \cdots & y_q^{(n)} \\}}_{\equiv \us Y_{[n \times q]}}=\underbrace{\mat{- & \bm{x}^{(1)\T} & – \\ – & \bm{x}^{(2)\T} & – \\ & \vdots & \\ – & \bm{x}^{(n)\T} & – \\}}_{\equiv \us X_{[n \times p]}}\underbrace{\mat{ | & | & & | \\ \bm{w}_1 & \bm{w}_2 & \cdots & \bm{w}_q \\ | & | & & |}}_{\equiv \us W_{[p \times q]}}
\end{align*}
\large\therefore \us Y_{[n \times q]} = \us X_{[n \times p]} \us W_{[p \times q]}
\end{align}
这样,通过主成分分析的投影是通过构造将特征向量按列排列的投影矩阵 $W$,并从右侧作用于观测数据矩阵 $X$ 来实现的。
主成分分析的实现篇请见这里▼
の理解-〜実装編〜.jpg)





の理解-〜実装編〜-120x68.jpg)