PC1的几何意义解释,以及如何通过数据矩阵寻找PC1
首先对于Data Matrix:
- Row 数量(横向)代表数据点的数量。
- 每一个横列区分的是observation。
- Column 数量(纵向)代表的是当前这个Matrix里所收集的数据所处在的维度。
- 每一个纵列区分的是feature。
以题目的(a)为例。
1. 数据的几何直觉
观察数据矩阵 $X$:
$$ X = \begin{pmatrix} 0 & 0 \\ 1 & 1 \\ -1 & -1 \end{pmatrix} $$这三个样本点在二维平面上的坐标分别是:
- Point 1: $(0, 0)$
- Point 2: $(1, 1)$
- Point 3: $(-1, -1)$
Scatterplot 是一条直线。所有的点都完美地落在 $x_2 = x_1$ 这条线上(也就是 $y=x$ 的 45度线)。
2. 为什么这是第一主成分?
PCA 的目标是找到**方差最大(Variance Maximization)**的方向。
- 沿着 $x_2 = x_1$ 这条线,数据分布得最“散”,方差最大。
- 垂直于这条线,数据完全没有波动(方差为 0)。
所以,第一主成分的方向向量就是指向 $(1, 1)$ 的方向。
3. 标准化 (Normalization) PCA 要求载荷向量(Loading Vector, 即方向向量)必须是单位向量 (Unit Vector),即长度(Norm)为 1。
目前的非标准化方向向量是 $u = \begin{pmatrix} 1 \\ 1 \end{pmatrix}$。 计算其长度 $\|u\|$:
$$ \|u\| = \sqrt{1^2 + 1^2} = \sqrt{2} $$除以长度进行标准化:
$$ v_1 = \frac{u}{\|u\|} = \begin{pmatrix} \frac{1}{\sqrt{2}} \\ \frac{1}{\sqrt{2}} \end{pmatrix} $$这就是答案中 $v_1$ 的由来。
接着(a)问回答,为什么沿着这条线,方差就是最大的?
简而言之,PCA(主成分分析)就是在问一个问题:“我应该从哪个角度看这堆数据,能看到它们分布得最‘开’、最‘散’?”
这里的关键词是:方差 (Variance) = 数据分散的程度 (Spread)。
理解:从投影到由PC定义的坐标轴上理解。
1. 数据的几何形状:它们是一条线
首先看你的数据点:
- Point 1: $(0, 0)$
- Point 2: $(1, 1)$
- Point 3: $(-1, -1)$
如果在纸上画出来,这三个点完美地排成了一队,就像一串糖葫芦。它们所在的直线就是 $y=x$(也就是图中说的 $x_2 = x_1$),即 45度角的斜线。
2. 什么是“投影”与“方差”?
想象你拿手电筒照这串“糖葫芦”,把它们的影子(投影)投射到墙上。PCA 就是在旋转手电筒,寻找让影子最长的那个角度。
让我们对比两个方向:
情况 A:沿着 $y=x$ 这条线看(即第一主成分方向)
如果你把这三个点投影到 $y=x$ 这条直线上(或者说,你就顺着这条线去量它们的距离):
- $(0,0)$ 在原点。
- $(1,1)$ 离原点很远(距离是 $\sqrt{2} \approx 1.41$)。
- $(-1,-1)$ 离原点也很远,在另一头。
结论: 数据点在直线上拉得很长,非常分散。分散 = 方差大。
情况 B:垂直于 $y=x$ 这条线看(即 $y=-x$ 方向)
如果你把这三个点投影到垂直的线上(也就是你从侧面去“压扁”这条线):
- $(0,0)$ 还在原点。
- $(1,1)$ 投影过来,因为它是垂直的,它会落到原点上。
- $(-1,-1)$ 投影过来,也会落到原点上。
结论: 所有的点都挤在了一个点(0)上。完全没有分散。不分散 = 方差为 0。
3. 为什么“方差最大”就是“第一主成分”?
在数据分析中,方差代表信息量。
- 如果一堆数据挤在一起(方差小),它们看起来都一样,没有区别,就没有信息。
- 如果一堆数据分得很开(方差大),你能清楚地看到样本之间的差异,信息量最大。
回到图片: 图片中说“沿着 $x_2=x_1$ 这条线,数据分布得最散,方差最大”。 意思就是:因为这三个点本身就排成了一条线,如果你顺着这条线去描述它们,你能保留所有的位置信息(你知道谁在谁前面)。这是保留信息最多的方向,所以它就是第一主成分 (First PC)。
总结
- 方差最大 = 影子拉得最长 = 点分得最开。
- 因为点本身就都在 $y=x$ 上,所以顺着 $y=x$ 的方向,点肯定分得最开。
- 任何偏离这个 45 度线的方向,点之间的距离在投影后都会“缩水”,方差就会变小。
(b) 计算 Variance Explained by PC1
1. 投影 (Projection) 我们需要把原始数据 $X$ 投影到新的坐标轴 $v_1$ 上,得到新的坐标值(即 Scores,记为 $z$)。 数学上,投影就是做点积(Dot Product):
$$ z_{i(1)} = x_i^\top v_1 $$我们来逐个还原计算过程:
- Point 1 $(0,0)$: $$0 \cdot \frac{1}{\sqrt{2}} + 0 \cdot \frac{1}{\sqrt{2}} = 0$$
- Point 2 $(1,1)$: $$1 \cdot \frac{1}{\sqrt{2}} + 1 \cdot \frac{1}{\sqrt{2}} = \frac{2}{\sqrt{2}} = \sqrt{2}$$
- Point 3 $(-1,-1)$: $$-1 \cdot \frac{1}{\sqrt{2}} + (-1) \cdot \frac{1}{\sqrt{2}} = -\frac{2}{\sqrt{2}} = -\sqrt{2}$$
所以,投影后的数据(Scores)为:$z_{(1)} = (0, \sqrt{2}, -\sqrt{2})^\top$。
2. 计算方差 (Variance Calculation) 题目问的是“解释了多少方差”,也就是计算这就组 $z$ 值的方差。 首先检查均值:$\bar{z} = \frac{0 + \sqrt{2} + (-\sqrt{2})}{3} = 0$。均值为 0,计算简便很多。
根据答案的公式(注意:这里使用的是总体方差定义,除以 $n=3$,而非样本方差 $n-1$。在 PCA 的一些教材定义中,为了简化分解,有时直接定义为 $\frac{1}{n}X^\top X$ 的特征值):
$$ \lambda_1 = \text{Var}(z_{(1)}) = \frac{1}{3} \sum (z_i - \bar{z})^2 $$$$ \lambda_1 = \frac{1}{3} \left( 0^2 + (\sqrt{2})^2 + (-\sqrt{2})^2 \right) = \frac{1}{3} (0 + 2 + 2) = \frac{4}{3} $$结论:第一主成分解释的方差是 $\frac{4}{3}$。
(c) Variance Explained by PC2
通过PC1去寻找PC2。
第一步:找方向 $v_2$ (Find Direction)
规则: PCA 的第二主成分 ($v_2$) 必须满足两个条件:
- 垂直于 第一主成分 ($v_1$)。
- 长度为 1 (单位向量)。
操作:
回顾 $v_1$: 在 Part (a) 里我们要找 $y=x$ 的方向,所以未归一化的方向向量是 $u_1 = \begin{pmatrix} 1 \\ 1 \end{pmatrix}$。
找垂直向量: 在二维平面上,找一个向量 $\begin{pmatrix} a \\ b \end{pmatrix}$ 的垂直向量最简单的方法是:交换坐标,把其中一个取反。
- $\begin{pmatrix} 1 \\ 1 \end{pmatrix} \xrightarrow{\text{交换并取反}} \begin{pmatrix} -1 \\ 1 \end{pmatrix}$。
- 验证一下点积(Dot Product):$1 \cdot (-1) + 1 \cdot 1 = -1 + 1 = 0$。点积为 0 说明垂直。OK。
标准化 (Normalize): 向量 $\begin{pmatrix} -1 \\ 1 \end{pmatrix}$ 的长度是 $\sqrt{(-1)^2 + 1^2} = \sqrt{2}$。 除以长度得到 $v_2$:
$$ v_2 = \begin{pmatrix} -\frac{1}{\sqrt{2}} \\ \frac{1}{\sqrt{2}} \end{pmatrix} $$这就是答案里那个 $v_2$ 的由来。
第二步:算投影值 $z$ (Calculate Projections)
意义: 这一步是在问:“如果我站在 $v_2$ 这个新坐标轴上,看原来的那些点,它们在我的刻度尺上读数是多少?”
计算: 用数据点 $x_i$ 去点乘方向向量 $v_2$。
$$ z_{i(2)} = x_i^\top v_2 = x_{i1} \cdot (-\frac{1}{\sqrt{2}}) + x_{i2} \cdot (\frac{1}{\sqrt{2}}) $$我们一个个带入数据点 $X = \begin{pmatrix} 0 & 0 \\ 1 & 1 \\ -1 & -1 \end{pmatrix}$:
- 第一个点 $(0,0)$: $$0 \cdot (-\dots) + 0 \cdot (\dots) = 0$$
- 第二个点 $(1,1)$: $$1 \cdot (-\frac{1}{\sqrt{2}}) + 1 \cdot (\frac{1}{\sqrt{2}}) = -\frac{1}{\sqrt{2}} + \frac{1}{\sqrt{2}} = 0$$
- 第三个点 $(-1,-1)$: $$-1 \cdot (-\frac{1}{\sqrt{2}}) + (-1) \cdot (\frac{1}{\sqrt{2}}) = \frac{1}{\sqrt{2}} - \frac{1}{\sqrt{2}} = 0$$
直觉解释: 因为所有的数据点都趴在 $y=x$ 这条线(第一主成分)上,而 $v_2$ 是垂直于这条线的方向。 数据点在这个垂直方向上没有任何偏移(Deviation)。就像你在走钢丝,你左右晃动的幅度是 0。
第三步:算方差 (Calculate Variance)
计算: 现在你得到了一组新的坐标值(Scores):$\{0, 0, 0\}$。 这组数的方差是多少?
$$ \text{Variance} = \frac{1}{3} \sum (z_i - \bar{z})^2 $$均值是 0,每个数也是 0:
$$ \lambda_2 = \frac{1}{3} (0^2 + 0^2 + 0^2) = 0 $$总结
Part (c) 实际上就是在验证一个几何事实: 如果二维数据完全排成一条直线,那么垂直于这条直线的方向上,没有任何信息(方差为 0)。
这步怎么做?
- 几何找垂直:$(1,1) \to (-1,1)$。
- 代数算投影:发现结果全是 0。
- 结论:方差是 0。
更高维度的PC要如何寻找?
在多维空间,我们无法像 2D 那样通过“交换坐标”这种简单技巧来找垂直向量,因为垂直向量有无穷多个。我们必须依靠计算协方差矩阵 $X^\top X$ 的特征向量。矩阵代数的性质保证了算出来的这一组向量,既代表了方差最大的各个方向,又自动满足相互垂直的要求。
数学解法:协方差矩阵的特征向量这是解决所有维度的“万能钥匙”。不管是 3维 还是 1000维,步骤完全一样:
第一步:构建协方差矩阵 (Covariance Matrix)
计算 $\Sigma = \frac{1}{n} X^\top X$(假设 $X$ 已中心化)。这个矩阵 $\Sigma$ 包含了两两变量之间的所有关系。
第二步:特征值分解 (Eigen-decomposition)
我们求解 $\Sigma$ 的特征方程:
$$\Sigma v = \lambda v$$第三步:Spectral Theorem
因为协方差矩阵 $\Sigma$ 是一个实对称矩阵 (Real Symmetric Matrix)(因为 $X^\top X$ 转置后还是它自己),线性代数有一个名为 谱定理 (Spectral Theorem) 的强大定理保证了:所有的特征向量 ($v_1, v_2, \dots, v_p$) 必定相互正交(垂直)。所有的特征值 ($\lambda_1, \lambda_2, \dots, \lambda_p$) 都是实数且非负。
结论:
你根本不需要手动去“寻找”垂直向量。只要你算出了 $\Sigma$ 的所有特征向量,它们天生就是互相垂直的。对应的特征值最大的那个向量,就是 PC1。第二大的那个,就是 PC2(它自动垂直于 PC1)。第三大的那个,就是 PC3(它自动垂直于 PC1 和 PC2)。