Làm thế nào để tính toán ma trận hiệp phương sai gần đúng ba biến, cho sự phân rã nhanh?


8

Đưa ra một ma trận dữ liệu X nói 1000000 quan sát × 100 tính năng, có một cách nhanh chóng để xây dựng một xấp xỉ ba cực Mộtcov(X)?
Sau đó, một yếu tố có thểMột= =LLT, L tất cả 0 ngoại trừ Li i1Liivà làm tan nhanh (làm trắng) bằng cách giải quyết Lx=xwhite. (Ý tôi là "nhanh"Ôi(STôize X).)

(Đã thêm, cố gắng làm rõ): Tôi đang tìm kiếm một chất làm trắng nhanh và bẩn nhanh hơn đầy đủ cov(X)nhưng tốt hơn đường chéo. Nói rằngXN điểm dữ liệu ×Nf tính năng, ví dụ 1000000× 100, với các tính năng 0 có nghĩa.

1) xây dựng Fbạntôitôicov= =XTX, Cholesky yếu tố đó là LLT, gỡ rối Lx= =xwhTôite để làm trắng mới xS. Đây là bậc hai về số lượng các tính năng.

2) đường chéo: xwhTôite= =x/σ(x) bỏ qua các mối tương quan chéo hoàn toàn.

Người ta có thể có được một ma trận ba cực từFbạntôitôicov chỉ bằng cách loại bỏ tất cả các mục bên ngoài bộ ba, hoặc không tích lũy chúng ở vị trí đầu tiên. Và ở đây tôi bắt đầu chìm: phải có một xấp xỉ tốt hơn, có lẽ là phân cấp, khối chéo → tridia chéo?


(Đã thêm ngày 11 tháng 5): Hãy để tôi chia câu hỏi thành hai:

1) có gần đúng nhanh không cov(X)?
Không (whuber), người ta phải nhìn vào tất cả(N2) cặp (hoặc có cấu trúc, hoặc mẫu).

2) đưa ra một cov(X), người ta có thể làm trắng nhanh như thế nào xs?
Vâng, bao thanh toáncov= =LLT, L tam giác dưới, một lần, sau đó giải Lx= =xwhTôite là khá nhanh; scipy.linalg.solve_triangular, ví dụ, sử dụng Lapack.
Tôi đang tìm kiếm một whiten nhanh hơn (), vẫn đang tìm kiếm.


Các cột có một trật tự tự nhiên cho họ? Hoặc bạn có muốn tìm một xấp xỉ ba cực theo một số hoán vị ("tối ưu") của các cột không? Tôi cho rằng khi bạn nóiMột= =Cov(X)bạn đang nói về cấu trúc hiệp phương sai của các tính năng. Bạn có thể xác nhận điều này?
Đức hồng y

Không, không có thứ tự tự nhiên, và vâng, hiệp phương sai của 100 tính năng. Các phương thức cộng một ma trận hiệp phương sai đầy đủ, sau đó xấp xỉ nó, sẽ là >> O (kích thước X); Tôi đang tìm kiếm một xấp xỉ đơn giản nhanh chóng, mà sẽ nhất thiết phải là thô.
chối

Vì vậy, bạn muốn một phép tính gần đúng theo ba chiều theo một số hoán vị (được xác định bởi dữ liệu), vâng?
Đức hồng y

thêm vào, cố gắng làm rõ. Nếu một hoán vị tốt (thỏa mãn) có thể được tìm thấy trong O (Nfeatures), vâng, điều đó sẽ làm.
chối

Có các xấp xỉ khi các biến có cấu trúc bổ sung, chẳng hạn như khi chúng tạo thành chuỗi thời gian hoặc thực hiện quy trình ngẫu nhiên không gian tại các địa điểm khác nhau. Chúng dựa trên các giả định một cách hiệu quả cho phép chúng ta liên hệ hiệp phương sai giữa một cặp biến số với các cặp biến khác, chẳng hạn như giữa các cặp được phân tách bằng độ trễ cùng thời gian. Tính toán có thể đượcÔi(Nfđăng nhập(Nf)trong trường hợp này. Không có mô hình như vậy, tôi không thấy làm thế nào bạn có thể tránh tính toán tất cả các hiệp phương sai theo cặp.
whuber

Câu trả lời:


2

Chỉ tính toán ma trận hiệp phương sai - mà bạn sẽ cần bắt đầu trong bất kỳ sự kiện nào - làÔi((Nf)2) vì vậy, không có triệu chứng trong N, không có gì đạt được bằng cách chọn một Ôi(Nf) thuật toán làm trắng.

Có các xấp xỉ khi các biến có cấu trúc bổ sung, chẳng hạn như khi chúng tạo thành chuỗi thời gian hoặc thực hiện quy trình ngẫu nhiên không gian tại các địa điểm khác nhau. Chúng dựa trên các giả định một cách hiệu quả cho phép chúng ta liên hệ hiệp phương sai giữa một cặp biến số với các cặp biến khác, chẳng hạn như giữa các cặp được phân tách bằng độ trễ cùng thời gian. Đây là lý do thông thường để giả sử một quá trình là ổn định hoặc cố định , chẳng hạn. Tính toán có thể đượcÔi(Nftôiog(Nf)trong những trường hợp như vậy ( ví dụ: sử dụng Biến đổi Fourier nhanh như trong Yao & Journel 1998 ). Không có mô hình như vậy, tôi không thấy làm thế nào bạn có thể tránh tính toán tất cả các hiệp phương sai theo cặp.


2

Trong một ý thích bất chợt, tôi quyết định thử tính toán (tính bằng R) ma trận hiệp phương sai cho một tập dữ liệu có kích thước được đề cập trong OP:

z <- rnorm(1e8)
dim(z) <- c(1e6, 100)
vcv <- cov(z)

Điều này chỉ mất chưa đầy một phút, trên một máy tính xách tay khá chung chạy Windows XP 32 bit. Có thể mất nhiều thời gian hơn để tạo zở vị trí đầu tiên hơn là tính toán ma trận vcv. Và R không được tối ưu hóa đặc biệt cho các hoạt động ma trận ra khỏi hộp.

Cho kết quả này, tốc độ có quan trọng không? Nếu N >> p, thời gian tính toán xấp xỉ của bạn có lẽ sẽ không ít hơn nhiều để có được ma trận hiệp phương sai thực tế.

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.