PCA quy mô lớn thậm chí có thể?


10

Cách cổ điển của phân tích thành phần chính (PCA) là thực hiện nó trên ma trận dữ liệu đầu vào mà các cột có giá trị trung bình bằng 0 (sau đó PCA có thể "tối đa hóa phương sai"). Điều này có thể đạt được một cách dễ dàng bằng cách tập trung vào các cột. Tuy nhiên, khi ma trận đầu vào thưa thớt, ma trận trung tâm bây giờ sẽ dài hơn và - nếu ma trận rất lớn - do đó sẽ không phù hợp với bộ nhớ nữa. Có một giải pháp thuật toán cho vấn đề lưu trữ?


5
Ngay cả khi ma trận dữ liệu đầy đủ không phù hợp với bộ nhớ, rất có thể là ma trận hiệp phương sai hoặc ma trận Gram phù hợp với bộ nhớ. Những người đó là đủ để thực hiện PCA. Kích thước của ma trận dữ liệu đầu vào mà bạn đang nghĩ về? Xem thêm số liệu thống kê.stackexchange.com / questions / 35185 .
amip nói rằng Phục hồi lại

1
@amoeba: Tôi đang xem các mẫu 500K (hàng) và 300K tính năng (cột)
Roy

Về phần mềm, Apache Spark có nó spark.apache.org/docs/latest/ cấp để đảm bảo việc triển khai xử lý dữ liệu hết bộ nhớ
Tim

Câu trả lời:


11

Vâng, nó là có thể.

Nếu ma trận dữ liệu không phù hợp với RAM, thì đó vẫn chưa phải là ngày tận thế: có những thuật toán hiệu quả có thể hoạt động với dữ liệu được lưu trữ trên ổ cứng. Xem ví dụ PCA ngẫu nhiên như được mô tả trong Halko và cộng sự, 2010, Một thuật toán để phân tích thành phần chính của các tập dữ liệu lớn .

Trong phần 6.2, các tác giả đã đề cập rằng họ đã thử thuật toán của họ trên 400 nghìn lần ma trận dữ liệu 100 nghìn lần và đó

Thuật toán của bài báo hiện tại cần 12,3 giờ để xử lý tất cả 150 GB bộ dữ liệu này được lưu trên đĩa, sử dụng máy tính xách tay có 1,5 GB RAM [...].

Lưu ý rằng đây là thời xưa của ổ cứng từ tính; ngày nay có sẵn các ổ đĩa trạng thái rắn nhanh hơn nhiều, vì vậy tôi đoán thuật toán tương tự sẽ thực hiện nhanh hơn đáng kể.

Xem thêm chủ đề cũ này để biết thêm thảo luận về PCA ngẫu nhiên: Thuật toán PCA tốt nhất cho số lượng lớn các tính năng (> 10K)? và đánh giá lớn năm 2011 này của Halko et al.: Tìm cấu trúc với tính ngẫu nhiên: Các thuật toán xác suất để xây dựng các phân tách ma trận gần đúng .

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.