Có phải PCA vẫn được thực hiện thông qua việc xuất tinh của ma trận hiệp phương sai khi kích thước lớn hơn số lượng quan sát?


10

Tôi có ma trận , chứa mẫu trong không gian hai chiều . Bây giờ tôi muốn mã hóa phân tích thành phần chính của mình (PCA) trong Matlab. Tôi hạ xuống trước.X N = 20 D = 100 X X 020×100XN=20D=100XX0

Tôi đã đọc từ mã của ai đó rằng trong các tình huống như vậy trong đó chúng ta có nhiều chiều hơn các quan sát, chúng ta không còn phân tách ma trận hiệp phương sai của . Thay vào đó, chúng tôi Eigen-phân hủy . Tại sao nó đúng?1X01N1X0X0T

Ma trận hiệp phương sai thông thường có kích thước , mỗi phần tử cho chúng ta biết hiệp phương sai giữa hai chiều. Đối với tôi, thậm chí không có kích thước chính xác! Đó là ma trận , vậy nó sẽ cho chúng ta biết điều gì? Hiệp phương sai giữa hai quan sát?!1D×D N×N1N1X0X0TN×N


Câu trả lời cho câu hỏi của bạn là trong trường hợp - như sau khi bạn đặt ra nhiệm vụ của mình - bạn không cần ma trận hiệp phương sai của các cột cho chính nó. Bạn chỉ muốn nó là một con đường để có được PC. Đúng? Nhưng kết quả PCA tương tự có thể thu được thông qua eigen của X'XXX'(cũng như svd của XX'). Cái được gọi là "tải" trong một trường hợp sẽ được gọi là "điểm số pc" trong trường hợp khác và ngược lại. Bởi vì cả hai chỉ là tọa độ ( xem, ví dụ ) và các trục, "kích thước chính" là như nhau.
ttnphns

1
(tt) Nếu vậy và bạn có thể tự do lựa chọn phân hủy cái nào - thật khôn ngoan khi phân tách cái nào cần làm nhanh hơn / hiệu quả hơn. Khi n<pnó cần ít RAM hơn và ít thời gian hơn để phân hủy XX'vì nó có kích thước nhỏ hơn.
ttnphns

@ttnphns Giải thích tuyệt vời. Tôi thấy quan điểm bây giờ. Tuy nhiên, tôi vẫn gặp sự cố khi chuyển từ bản địa XX'sang PC. Bạn có thể vui lòng chỉ cho tôi một cách ngắn gọn như thế nào? Cho rằng PC chỉ là người bản địa của ma trận hiệp phương sai, tôi đã cố gắng chuyển từ bản địa XX'sang bản địa của ma trận hiệp phương sai X'X, nhưng không thành công.
Đánh bạc Sibbs

1
Tôi phải đi. Có lẽ @amoeba (người nhanh nhẹn hơn trong đại số hơn tôi) hoặc một người đọc khác sẽ sớm tìm đến đây và giúp bạn. Chúc mừng.
ttnphns

1
@ttnphns: Xong :)
amoeba nói Phục hồi lại

Câu trả lời:


22

Ma trận hiệp phương sai có kích thước và được đưa ra bởiC = 1D×D

C=1N1X0X0.

Ma trận mà bạn đang nói đến dĩ nhiên không phải là ma trận hiệp phương sai; nó được gọi là ma trận Gram và có kích thước :G = 1N×N

G=1N1X0X0.

Phân tích thành phần chính (PCA) có thể được thực hiện thông qua việc xuất tinh của một trong hai ma trận này. Đây chỉ là hai cách khác nhau để tính toán cùng một thứ.

Cách dễ nhất và hữu ích nhất để thấy điều này là sử dụng phân tách giá trị số ít của ma trận dữ liệu . Cắm biểu thức này vào biểu thức cho và , chúng tôi nhận được:C G CX=USVCG

C=VS2N1VG=US2N1U.

Eigenvector của ma trận hiệp phương sai là các hướng chính. Các dự báo của dữ liệu về các hàm riêng này là các thành phần chính; các phép chiếu này được đưa ra bởi . Thành phần chủ yếu có quy mô theo chiều dài đơn vị được xác định bởi . Như bạn thấy, các hàm riêng của ma trận Gram chính xác là các thành phần chính được chia tỷ lệ này. Và giá trị riêng của và trùng khớp.U S U C GVUSUCG

Lý do tại sao bạn có thể thấy nên sử dụng ma trận Gram nếu là vì nó sẽ có kích thước nhỏ hơn so với ma trận hiệp phương sai và do đó nhanh hơn để tính toán và nhanh hơn để eigendecompose. Trong thực tế, nếu chiều của bạn quá cao, không có cách nào bạn thậm chí có thể lưu trữ ma trận hiệp phương sai trong bộ nhớ, do đó, hoạt động trên ma trận Gram là cách duy nhất để thực hiện PCA. Nhưng đối với có thể quản lý, bạn vẫn có thể sử dụng phép phân tích ma trận hiệp phương sai nếu bạn thích ngay cả khi .D D N < DN<DDDN<D



1
Câu trả lời chính xác! Tôi không biết nó có tên! Cảm ơn rất nhiều! Bây giờ tôi tự tin sử dụng nó để tăng tốc tính toán của mình.
Đánh bạc Sibbs

3
Câu trả lời của tôi giả định rằng những gì bạn muốn nhận là , và có lẽ cả . Nếu bạn cũng muốn có được , sau đó bạn có thể tính toán nó thông qua sau khi bạn nhận được . Trong thực tế, nếu kích thước của bạn quá cao, không có cách nào bạn thậm chí có thể lưu trữ ma trận hiệp phương sai trong bộ nhớ, do đó, hoạt động trên ma trận Gram là cách duy nhất để thực hiện PCA. S / ( n - 1 ) V U X UUS/(n1)VUXU
amip nói rằng Phục hồi lại

Câu trả lời này rõ ràng hơn rất nhiều giải trình mà tôi đã thấy trong sách. Cảm ơn.
usεr11852

Đối với mục đích tham khảo thuần túy: Tôi nghĩ rằng bài báo Kỹ thuật năm 1969 của IJ Tốt " Một số ứng dụng phân tách đơn lẻ của ma trận " là một trong những tài liệu đầu tiên tham khảo đầy đủ về điều này.
usεr11852

1
@Matt Wenham Chính xác.
amip nói rằng Phục hồi lạ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.