PCA 背后的线性代数

R 数据科学的线性代数

Eric Eager

Data Scientist at Pro Football Focus

理论

矩阵 $A^T$,即 $A$ 的转置,通过交换 $A$ 的行和列得到。

若数据集为矩阵 $A$,且每列都已减去该列均值,则矩阵

$$\frac{A^TA}{n - 1}$$

的第 $i,j$ 个元素(其中 $n$ 为 $A$ 的行数)为矩阵中第 $i$ 列与第 $j$ 列变量的协方差。

因此,$\frac{A^TA}{n - 1}$ 的对角线第 $i$ 个元素是矩阵第 $i$ 列的方差。

R 数据科学的线性代数

理论

print(A)
     [,1] [,2]
[1,]    1    2
[2,]    2    4
[3,]    3    6
[4,]    4    8
[5,]    5   10
A[, 1] <- A[, 1] - mean(A[, 1])
A[, 2] <- A[, 2] - mean(A[, 2]) 
print(A)
     [,1] [,2]
[1,]   -2   -4
[2,]   -1   -2
[3,]    0    0
[4,]    1    2
[5,]    2    4
R 数据科学的线性代数

理论

t(A)%*%A/(nrow(A) - 1)
     [,1] [,2]
[1,]  2.5    5
[2,]  5.0   10
cov(A[, 1], A[, 2])
5
var(A[, 1])
2.5
var(A[, 2])
10
R 数据科学的线性代数

PCA

  • $\frac{A^TA}{n - 1}$ 的特征值 $\lambda_1, \lambda_2, ... , \lambda_n$ 为实数,其对应特征向量两两正交,指向不同方向。

  • 数据集的总方差等于 $\frac{A^TA}{n - 1}$ 的特征值之和。

  • 这些特征向量 $v_1, v_2, ..., v_n$ 称为矩阵 $A$ 的主成分。

  • 向量 $v_j$ 的方向可解释数据中的 $\lambda_j$ 的总方差。若 $\lambda_j$,或 $\lambda_1, \lambda_2, ... , \lambda_n$ 的某个子集能解释大量总方差,则可进行降维。

R 数据科学的线性代数

示例

eigen(t(A)%*%A/(nrow(A) - 1))
eigen() 分解
$`values`
[1] 12.5  0.0

$vectors
          [,1]       [,2]
[1,] 0.4472136 -0.8944272
[2,] 0.8944272  0.4472136
R 数据科学的线性代数

¡Vamos a practicar!

R 数据科学的线性代数

Preparing Video For Download...