利用PCA求解第一和第二主成分的完整过程
主成分分析(Principal Component Analysis, PCA)是一种常用的降维方法,它通过线性变换将高维数据投影到一个新的坐标系中,使得数据在每个新坐标轴上的方差依次递减。本文以一个二维数据集为例,完整展示如何通过PCA求解第一主成分和第二主成分。
1. 数据集
假设我们有以下二维数据集:
X = [ 2 4 3 3 4 2 5 5 ] X = \begin{bmatrix} 2 & 4 \\ 3 & 3 \\ 4 & 2 \\ 5 & 5 \end{bmatrix} X= 23454325
其中:
- 每行表示一个样本。
- 每列表示一个特征(特征1: X 1 X_1 X1,特征2: X 2 X_2 X2)。
我们的目标是通过PCA找出数据的第一主成分和第二主成分方向,并计算投影后的数据值。
2. 数据标准化(中心化)
PCA的第一步是对数据进行中心化处理,使得每个特征的均值为0。
-
计算特征均值:
μ 1 = 2 + 3 + 4 + 5 4 = 3.5 , μ 2 = 4 + 3 + 2 + 5 4 = 3.5 \mu_1 = \frac{2 + 3 + 4 + 5}{4} = 3.5, \quad \mu_2 = \frac{4 + 3 + 2 + 5}{4} = 3.5 μ1=42+3+4+5=3.5,μ2=44+3+2+5=3.5 -
将每个样本减去均值:
X centered = X − μ = [ 2 − 3.5 4 − 3.5 3 − 3.5 3 − 3.5 4 − 3.5 2 − 3.5 5 − 3.5 5 − 3.5 ] = [ − 1.5 0.5 − 0.5 − 0.5 0.5 − 1.5 1.5 1.5 ] X_{\text{centered}} = X - \mu = \begin{bmatrix} 2 - 3.5 & 4 - 3.5 \\ 3 - 3.5 & 3 - 3.5 \\ 4 - 3.5 & 2 - 3.5 \\ 5 - 3.5 & 5 - 3.5 \end{bmatrix} = \begin{bmatrix} -1.5 & 0.5 \\ -0.5 & -0.5 \\ 0.5 & -1.5 \\ 1.5 & 1.5 \end{bmatrix} Xcentered=X−μ= 2−3.53−3.54−3.55−3.54−3.53−3.52−3.55−3.5 = −1.5−0.50.51.50.5−0.5−1.51.5
3. 计算协方差矩阵
协方差矩阵描述了特征之间的相关性,用以下公式计算:
Σ
=
1
n
−
1
X
centered
T
X
centered
\Sigma = \frac{1}{n-1} X_{\text{centered}}^T X_{\text{centered}}
Σ=n−11XcenteredTXcentered
-
计算 X centered T X_{\text{centered}}^T XcenteredT:
X centered T = [ − 1.5 − 0.5 0.5 1.5 0.5 − 0.5 − 1.5 1.5 ] X_{\text{centered}}^T = \begin{bmatrix} -1.5 & -0.5 & 0.5 & 1.5 \\ 0.5 & -0.5 & -1.5 & 1.5 \end{bmatrix} XcenteredT=[−1.50.5−0.5−0.50.5−1.51.51.5] -
计算矩阵乘积 X centered T X centered X_{\text{centered}}^T X_{\text{centered}} XcenteredTXcentered:
X centered T X centered = [ 5 − 2 − 2 5 ] X_{\text{centered}}^T X_{\text{centered}} = \begin{bmatrix} 5 & -2 \\ -2 & 5 \end{bmatrix} XcenteredTXcentered=[5−2−25] -
计算协方差矩阵:
Σ = 1 3 [ 5 − 2 − 2 5 ] = [ 1.67 − 0.67 − 0.67 1.67 ] \Sigma = \frac{1}{3} \begin{bmatrix} 5 & -2 \\ -2 & 5 \end{bmatrix} = \begin{bmatrix} 1.67 & -0.67 \\ -0.67 & 1.67 \end{bmatrix} Σ=31[5−2−25]=[1.67−0.67−0.671.67]
4. 特征值分解
协方差矩阵的特征值和特征向量决定了主成分的方向和方差大小。
计算特征值:
特征值的计算公式为:
det
(
Σ
−
λ
I
)
=
0
\det(\Sigma - \lambda I) = 0
det(Σ−λI)=0
-
代入 Σ \Sigma Σ 和单位矩阵 I I I:
det [ 1.67 − λ − 0.67 − 0.67 1.67 − λ ] = 0 \det \begin{bmatrix} 1.67 - \lambda & -0.67 \\ -0.67 & 1.67 - \lambda \end{bmatrix} = 0 det[1.67−λ−0.67−0.671.67−λ]=0 -
计算行列式:
( 1.67 − λ ) 2 − ( − 0.67 ) ( − 0.67 ) = 0 (1.67 - \lambda)^2 - (-0.67)(-0.67) = 0 (1.67−λ)2−(−0.67)(−0.67)=0
( 1.67 − λ ) 2 = 0.4489 (1.67 - \lambda)^2 = 0.4489 (1.67−λ)2=0.4489
1.67 − λ = ± 0.67 1.67 - \lambda = \pm 0.67 1.67−λ=±0.67 -
解得特征值:
λ 1 = 2.34 , λ 2 = 1.00 \lambda_1 = 2.34, \quad \lambda_2 = 1.00 λ1=2.34,λ2=1.00
计算特征向量:
-
对应于特征值 λ 1 = 2.34 \lambda_1 = 2.34 λ1=2.34:
( Σ − λ 1 I ) a = 0 (\Sigma - \lambda_1 I)a = 0 (Σ−λ1I)a=0
解得特征向量:
a 1 = [ − 1 1 ] a_1 = \begin{bmatrix} -1 \\ 1 \end{bmatrix} a1=[−11]
归一化后:
a 1 = 1 2 [ − 1 1 ] a_1 = \frac{1}{\sqrt{2}} \begin{bmatrix} -1 \\ 1 \end{bmatrix} a1=21[−11] -
对应于特征值 λ 2 = 1.00 \lambda_2 = 1.00 λ2=1.00:
解得特征向量:
a 2 = [ 1 1 ] a_2 = \begin{bmatrix} 1 \\ 1 \end{bmatrix} a2=[11]
归一化后:
a 2 = 1 2 [ 1 1 ] a_2 = \frac{1}{\sqrt{2}} \begin{bmatrix} 1 \\ 1 \end{bmatrix} a2=21[11]
5. 第一主成分和第二主成分
- 第一主成分方向:
a 1 = 1 2 [ − 1 1 ] , λ 1 = 2.34 a_1 = \frac{1}{\sqrt{2}} \begin{bmatrix} -1 \\ 1 \end{bmatrix}, \quad \lambda_1 = 2.34 a1=21[−11],λ1=2.34 - 第二主成分方向:
a 2 = 1 2 [ 1 1 ] , λ 2 = 1.00 a_2 = \frac{1}{\sqrt{2}} \begin{bmatrix} 1 \\ 1 \end{bmatrix}, \quad \lambda_2 = 1.00 a2=21[11],λ2=1.00
6. 数据投影
将数据投影到主成分方向,计算每个样本的投影值。
投影公式:
y i = X centered a i y_i = X_{\text{centered}} a_i yi=Xcenteredai
-
投影到第一主成分:
y 1 = 1 2 [ − 1.5 0.5 − 0.5 − 0.5 0.5 − 1.5 1.5 1.5 ] [ − 1 1 ] = 1 2 [ 2 0 − 2 0 ] y_1 = \frac{1}{\sqrt{2}} \begin{bmatrix} -1.5 & 0.5 \\ -0.5 & -0.5 \\ 0.5 & -1.5 \\ 1.5 & 1.5 \end{bmatrix} \begin{bmatrix} -1 \\ 1 \end{bmatrix} = \frac{1}{\sqrt{2}} \begin{bmatrix} \sqrt{2} \\ 0 \\ -\sqrt{2} \\ 0 \end{bmatrix} y1=21 −1.5−0.50.51.50.5−0.5−1.51.5 [−11]=21 20−20 结果:
y 1 = [ 2 0 − 2 0 ] y_1 = \begin{bmatrix} \sqrt{2} \\ 0 \\ -\sqrt{2} \\ 0 \end{bmatrix} y1= 20−20 -
投影到第二主成分:
y 2 = 1 2 [ − 1.5 0.5 − 0.5 − 0.5 0.5 − 1.5 1.5 1.5 ] [ 1 1 ] = 1 2 [ − 1 − 1 − 1 3 ] y_2 = \frac{1}{\sqrt{2}} \begin{bmatrix} -1.5 & 0.5 \\ -0.5 & -0.5 \\ 0.5 & -1.5 \\ 1.5 & 1.5 \end{bmatrix} \begin{bmatrix} 1 \\ 1 \end{bmatrix} = \frac{1}{\sqrt{2}} \begin{bmatrix} -1 \\ -1 \\ -1 \\ 3 \end{bmatrix} y2=21 −1.5−0.50.51.50.5−0.5−1.51.5 [11]=21 −1−1−13 结果:
y 2 = [ − 2 − 2 − 2 3 2 ] y_2 = \begin{bmatrix} -\sqrt{2} \\ -\sqrt{2} \\ -\sqrt{2} \\ 3\sqrt{2} \end{bmatrix} y2= −2−2−232
7. 总结
-
第一主成分方向:
a 1 = 1 2 [ − 1 1 ] , λ 1 = 2.34 a_1 = \frac{1}{\sqrt{2}} \begin{bmatrix} -1 \\ 1 \end{bmatrix}, \quad \lambda_1 = 2.34 a1=21[−11],λ1=2.34 -
第二主成分方向:
a 2 = 1 2 [ 1 1 ] , λ 2 = 1.00 a_2 = \frac{1}{\sqrt {2}} \begin{bmatrix} 1 \\ 1 \end{bmatrix}, \quad \lambda_2 = 1.00 a2=21[11],λ2=1.00 -
投影后的数据:
Y = [ y 1 y 2 ] = [ 2 − 2 0 − 2 − 2 − 2 0 3 2 ] Y = \begin{bmatrix} y_1 & y_2 \end{bmatrix} = \begin{bmatrix} \sqrt{2} & -\sqrt{2} \\ 0 & -\sqrt{2} \\ -\sqrt{2} & -\sqrt{2} \\ 0 & 3\sqrt{2} \end{bmatrix} Y=[y1y2]= 20−20−2−2−232
主成分分析成功将二维数据降维到两个正交的方向上,同时保证了第一主成分捕获最大的信息量(方差)。