Làm thế nào để có được các giá trị bản địa (phần trăm của phương sai được giải thích) của các vectơ không phải là hàm riêng của PCA?


10

Tôi muốn hiểu làm thế nào tôi có thể nhận được tỷ lệ phần trăm phương sai của một tập dữ liệu, không phải trong không gian tọa độ do PCA cung cấp, mà dựa vào một tập các vectơ (xoay) hơi khác.

nhập mô tả hình ảnh ở đây

set.seed(1234)
xx <- rnorm(1000)
yy <- xx * 0.5 + rnorm(1000, sd = 0.6)
vecs <- cbind(xx, yy)
plot(vecs, xlim = c(-4, 4), ylim = c(-4, 4))
vv <- eigen(cov(vecs))$vectors
ee <- eigen(cov(vecs))$values
a1 <- vv[, 1]
a2 <- vv[, 2]
theta = pi/10
rotmat <- matrix(c(cos(theta), sin(theta), -sin(theta), cos(theta)), 2, 2)
a1r <- a1 %*% rotmat
a2r <- a2 %*% rotmat
arrows(0, 0, a1[1], a1[2], lwd = 2, col = "red")
arrows(0, 0, a2[1], a2[2], lwd = 2, col = "red")
arrows(0, 0, a1r[1], a1r[2], lwd = 2, col = "green3")
arrows(0, 0, a2r[1], a2r[2], lwd = 2, col = "green3")
legend("topleft", legend = c("eigenvectors", "rotated"), fill = c("red", "green3"))

Vì vậy, về cơ bản tôi biết rằng phương sai của bộ dữ liệu dọc theo mỗi trục màu đỏ, được đưa ra bởi PCA, được biểu thị bằng giá trị riêng. Nhưng làm thế nào tôi có thể có được các phương sai tương đương, tổng cộng cùng một lượng, nhưng chiếu hai trục khác nhau có màu xanh lục, đó là một phép quay bằng pi / 10 của các trục thành phần chính. IE đã đưa ra hai vectơ đơn vị trực giao từ gốc, làm thế nào tôi có thể lấy phương sai của một tập dữ liệu dọc theo mỗi trục tùy ý (nhưng trực giao), sao cho tất cả các phương sai được tính cho (ví dụ "giá trị riêng" tương đương với PCA).


Câu trả lời:


7

Nếu các vectơ là trực giao, bạn có thể lấy phương sai của hình chiếu vô hướng của dữ liệu lên mỗi vectơ. Giả sử chúng ta có ma trận dữ liệu ( điểm x kích thước) và một tập hợp các vectơ cột trực giao . Giả sử dữ liệu là trung tâm. Phương sai của dữ liệu theo hướng của mỗi vectơ được cho bởi .Xnd{v1,...,vk}viVar(Xvi)

Nếu có nhiều vectơ như kích thước ban đầu ( ), tổng phương sai của các hình chiếu sẽ bằng tổng phương sai dọc theo kích thước ban đầu. Nhưng, nếu có ít vectơ hơn kích thước ban đầu ( ), tổng phương sai thường sẽ ít hơn so với PCA. Một cách để nghĩ về PCA là nó tối đa hóa số lượng rất lớn này (tùy thuộc vào ràng buộc rằng các vectơ là trực giao).k=dk<d

Bạn cũng có thể muốn tính (phần phương sai được giải thích), thường được sử dụng để đo mức độ của một số kích thước PCA nhất định thể hiện dữ liệu. Đặt đại diện cho tổng phương sai dọc theo từng chiều ban đầu của dữ liệu. Sau đó:R2S

R2=1Si=1kVar(Xvi)

Đây chỉ là tỷ lệ của phương sai tổng của các hình chiếu và phương sai tổng hợp dọc theo kích thước ban đầu.

Một cách khác để suy nghĩ về là nó đo lường mức độ phù hợp nếu chúng ta cố gắng xây dựng lại dữ liệu từ các dự đoán. Sau đó, nó có dạng quen thuộc được sử dụng cho các mô hình khác (ví dụ hồi quy). Giả sử điểm dữ liệu thứ là một vectơ hàng . Lưu trữ mỗi vectơ cơ sở cùng các cột của ma trận . Chiếu của th điểm dữ liệu lên tất cả các vectơ trong được cho bởi . Khi có ít vectơ hơn kích thước ban đầu (R2ix(i)ViVp(i)=x(i)Vk<d), chúng ta có thể nghĩ về điều này như ánh xạ dữ liệu tuyến tính vào một không gian với kích thước giảm. Chúng tôi xấp xỉ có thể tái tạo lại các điểm dữ liệu từ các đại diện chiều thấp bằng cách lập bản đồ trở lại vào không gian dữ liệu gốc: . Lỗi tái tạo bình phương trung bình là khoảng cách Euclide bình phương trung bình giữa mỗi điểm dữ liệu gốc và tái tạo của nó:x^(i)=p(i)VT

E=1nx(i)x^(i)2

Mức độ phù hợp của được định nghĩa tương tự như đối với các mô hình khác (tức là trừ đi một phần của phương sai không giải thích được). Cho lỗi bình phương trung bình của mô hình ( ) và tổng phương sai của đại lượng được mô hình hóa ( ), . Trong bối cảnh tái cấu trúc dữ liệu của chúng tôi, lỗi bình phương trung bình là (lỗi tái cấu trúc). Tổng phương sai là (tổng phương sai dọc theo mỗi chiều của dữ liệu). Vì thế:R2MSEVartotalR2=1MSE/VartotalES

R2=1ES

S cũng bằng khoảng cách Euclide bình phương trung bình từ mỗi điểm dữ liệu đến giá trị trung bình của tất cả các điểm dữ liệu, vì vậy chúng ta cũng có thể nghĩ về khi so sánh lỗi tái tạo với 'mô hình trường hợp xấu nhất' luôn trả về có nghĩa là tái thiết.R2

Hai biểu thức cho là tương đương. Như trên, nếu có nhiều vectơ như kích thước ban đầu ( ) thì sẽ là một. Nhưng, nếu , thường sẽ ít hơn PCA. Một cách khác để suy nghĩ về PCA là nó giảm thiểu lỗi tái tạo bình phương.R2k=dR2k<dR2


+1, giải thích rất rõ ràng. Tôi chỉ muốn đề cập, về tính đầy đủ, là những gì bạn đã viết chỉ khi " " chúng tôi hiểu việc tái cấu trúc thông qua cùng một được sử dụng để chiếu. Nói chung, đối với một vectơ chiếu tùy ý , sẽ có sự tái tạo tốt hơn, mang lại cao hơn . Tôi có một câu trả lời mà tôi giải thích chi tiết . Tôi đồng ý rằng đối với câu hỏi cụ thể này, những gì bạn viết là chính xác những gì cần thiết. R2try[ing] to reconstruct the data from the projectionsVvR2
amip nói rằng Phục hồi lại

Vâng, đó là một điểm tốt và một lời giải thích hay
user20160

Điều gì xảy ra nếu tôi không có ma trận dữ liệu, nhưng chỉ là ma trận hiệp phương sai? Tổng đường chéo của ma trận hiệp phương sai cho tôi tổng phương sai và nếu tôi áp dụng PCA cho ma trận hiệp phương sai đó, các giá trị riêng sẽ đưa ra phương sai dọc theo mỗi hướng mới, do đó phương sai được giải thích là phương sai / tổng phương sai. Nhưng vectơ của tôi không phải là người bản địa là gì?
Bị bối rối

... Theo như tôi có thể nói, nếu chúng ta bắt đầu với ma trận hiệp phương sai C , thì trong trường hợp này, người ta cần phải lấy | Cv_i | / sum (diag ( C )) để giải thích% phương sai.
Bối rối
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.