R로 배우는 데이터 과학을 위한 선형대수
Eric Eager
Data Scientist at Pro Football Focus
행렬 $A^T$는 $A$의 전치행렬로, $A$의 행과 열을 맞바꿔 만든 행렬입니다.
데이터셋이 행렬 $A$에 있고, 각 열의 평균을 그 열의 각 원소에서 뺐다면,
$$\frac{A^TA}{n - 1}$$
에서 $n$은 $A$의 행수이며, 이 행렬의 $i,j$번째 원소는 행렬의 데이터에서 $i$번째 열과 $j$번째 열 변수 간의 공분산입니다.
따라서 $\frac{A^TA}{n - 1}$의 대각선의 $i$번째 원소는 해당 행렬의 $i$번째 열의 분산입니다.
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
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
$\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$의 일부가 총분산의 상당 부분을 설명하면 차원 축소가 가능합니다.
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로 배우는 데이터 과학을 위한 선형대수