Đại số tuyến tính cho Khoa học dữ liệu với R
Eric Eager
Data Scientist at Pro Football Focus
Ma trận $A^T$, ma trận chuyển vị của $A$, được tạo bằng cách hoán đổi các hàng và cột của $A$.
Nếu dữ liệu ở ma trận $A$ và đã trừ trung bình của mỗi cột khỏi từng phần tử trong cột đó, thì phần tử $i,j$ của ma trận
$$\frac{A^TA}{n - 1},$$
với $n$ là số hàng của $A$, là hiệp phương sai giữa biến ở cột $i$ và $j$ của dữ liệu trong ma trận.
Do đó, phần tử thứ $i$ trên đường chéo của $\frac{A^TA}{n - 1}$ là phương sai của cột thứ $i$ của ma trận.
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
Các trị riêng $\lambda_1, \lambda_2, ... \lambda_n$ của $\frac{A^TA}{n - 1}$ là số thực, và các vector riêng tương ứng trực giao, tức chỉ theo các hướng khác nhau.
Tổng phương sai của bộ dữ liệu là tổng các trị riêng của $\frac{A^TA}{n - 1}$.
Các vector riêng $v_1, v_2, ..., v_n$ được gọi là thành phần chính của dữ liệu trong ma trận $A$.
Hướng của $v_j$ giải thích $\lambda_j$ phương sai tổng. Nếu $\lambda_j$, hoặc một tập con của $\lambda_1, \lambda_2, ... \lambda_n$, giải thích phần lớn phương sai, ta có thể giảm chiều.
eigen(t(A)%*%A/(nrow(A) - 1))
phân rã eigen()
$`values`
[1] 12.5 0.0
$vectors
[,1] [,2]
[1,] 0.4472136 -0.8944272
[2,] 0.8944272 0.4472136
Đại số tuyến tính cho Khoa học dữ liệu với R