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() decomposition
$`values`
[1] 12.5  0.0

$vectors
          [,1]       [,2]
[1,] 0.4472136 -0.8944272
[2,] 0.8944272  0.4472136
Rで学ぶデータサイエンスのための線形代数

演習に進みましょう!

Rで学ぶデータサイエンスのための線形代数

Preparing Video For Download...