Eigenvector của một điều chỉnh định mức nhỏ


10

Tôi có một bộ dữ liệu đang dần thay đổi và tôi cần theo dõi các hàm riêng / giá trị riêng của ma trận hiệp phương sai của nó.

Tôi đã sử dụng scipy.linalg.eigh, nhưng nó quá đắt, và nó không sử dụng thực tế là tôi đã có một phân tách chỉ hơi sai.

Bất cứ ai có thể đề nghị một cách tiếp cận tốt hơn để đối phó với vấn đề này?


1
Dữ liệu của bạn lớn đến mức nào? Bạn có cần hệ thống eigensystem hoàn chỉnh, hoặc chỉ một số giá trị riêng lớn nhất? Bạn có cần chúng chính xác, hoặc một xấp xỉ sẽ làm gì?
cfh

Tôi cần hệ thống eigens hoàn chỉnh. Tôi đã tìm thấy một thuật toán để cập nhật nghịch đảo của ma trận sau khi cập nhật định mức nhỏ bằng cách sử dụng giải thích hồi quy nghịch đảo của ma trận hiệp phương sai, vì vậy tôi giả sử một cái gì đó tương tự nên tồn tại cho các hàm riêng.
Yaroslav Bulatov

Bạn sẽ làm gì với sự xuất tinh đầy đủ đó? Có thể có một lối tắt tốt hơn mà không đi qua nó ... Và tôi nhắc lại câu hỏi của cfh: "lớn như thế nào"?
Federico Poloni

Tôi có 8k tính năng và hàng triệu datapoint, vì vậy hiệp phương sai là gần đúng. Đây là để thực hiện thuật toán này . Cập nhật độ dốc phụ thuộc vào giá trị riêng của ma trận hiệp phương sai nhất định và ma trận hiệp phương sai này thay đổi theo từng bước
Yaroslav Bulatov

Câu trả lời:


5

Một cách tiếp cận ngây thơ là sử dụng giải pháp eigenvalue của ma trận của bạn như đoán ban đầu của một lặp eigensolver cho ma trận A ( t + δ t ) . Bạn có thể sử dụng QR nếu bạn cần toàn bộ phổ hoặc phương thức nguồn khác. Tuy nhiên, đây không phải là một cách tiếp cận hoàn toàn mạnh mẽ, vì các giá trị riêng của ma trận không nhất thiết phải gần với ma trận gần kề (1) , đặc biệt là nếu nó bị điều hòa kém (2) .Một(t)Một(t+δt)

Một phương pháp theo dõi không gian con rõ ràng là hữu ích hơn (3) . Một đoạn trích từ (4) :

Tính toán lặp của một cặp eigen cực đại (tối đa hoặc tối thiểu) (eigenvalue và eigenvector) có thể có từ năm 1966 [72]. Năm 1980, Thompson đã đề xuất một thuật toán thích ứng loại LMS để ước tính hàm riêng, tương ứng với giá trị riêng nhỏ nhất của ma trận hiệp phương sai mẫu và cung cấp thuật toán theo dõi thích nghi của kết hợp góc / tần số với công cụ ước lượng hài của Pisarenko [14]. Sarkar và cộng sự. [73] đã sử dụng thuật toán gradient liên hợp để theo dõi sự biến đổi của hàm riêng cực trị tương ứng với giá trị riêng nhỏ nhất của ma trận hiệp phương sai của tín hiệu thay đổi chậm và chứng minh sự hội tụ nhanh hơn nhiều so với thuật toán LMS của Thompson. Các phương thức này chỉ được sử dụng để theo dõi giá trị cực trị và hàm riêng với ứng dụng hạn chế, nhưng sau đó chúng được mở rộng cho các phương pháp theo dõi và cập nhật không gian con eigen. Năm 1990, Comon và Golub [6] đã đề xuất phương pháp Lanczos để theo dõi giá trị số ít và vectơ số ít, đây là phương pháp phổ biến được thiết kế ban đầu để xác định một số vấn đề eigen đối xứng lớn và thưa thớt [74].Mộtx= =kx

[6]: Comon, P., & Golub, GH (1990). Theo dõi một vài giá trị cực nhỏ và vectơ trong xử lý tín hiệu. Đang xử lý của IEEE (trang 1327 Từ1343).

[14]: Thompson, PA (1980). Một kỹ thuật phân tích phổ thích ứng cho tần số không thiên vị

[72]: Bradbury, WW, & Fletcher, R. (1966). Phương pháp lặp mới cho các giải pháp của bản địa. Toán số, 9 (9), 259 trừ266.

[73]: Sarkar, TK, Dianat, SA, Chen, H., & Brule, JD (1986). Ước lượng phổ thích nghi bằng phương pháp gradient liên hợp. Giao dịch của IEEE về Xử lý âm thanh, lời nói và xử lý tín hiệu, 34 (2), 272 Tắt284.

[74]: Tải Golub, GH, & Van, CF (1989). Tính toán ma trận (tái bản lần 2). Baltimore: Nhà xuất bản Đại học John Hopkins.

Tôi cũng nên đề cập rằng các giải pháp cho ma trận đối xứng, chẳng hạn như những gì bạn phải giải quyết khi sử dụng scipy.linalg.eigh, có phần rẻ tiền. Nếu bạn chỉ quan tâm đến một vài giá trị riêng, bạn cũng có thể tìm thấy sự cải thiện tốc độ trong phương pháp của mình. Phương pháp Arnoldi thường được sử dụng trong các tình huống như vậy.


1
cảm ơn về con trỏ, thuật toán QR có vẻ như là một điểm khởi đầu tốt
Yaroslav Bulatov

MộtMột+λTôi

ps: linalg.eigh trên ma trận 4k x 4k mất khoảng 20 giây (nó chỉ sử dụng lõi đơn vì một số lý do). Tôi cần khoảng 0,25 giây cho mỗi lần cập nhật
Yaroslav Bulatov

7

Thật không may, tôi không có các cập nhật thứ hạng nhỏ, tôi có các cập nhật định mức nhỏ về thứ hạng đầy đủ
Yaroslav Bulatov

@YaroslavBulatov Tôi không biết về một thuật toán hiệu quả có thể xử lý các cập nhật xếp hạng đầy đủ theo tiêu chuẩn nhỏ - tốt nhất tôi có thể tìm thấy là tài liệu tham khảo này , nhưng nó không có vẻ rất hứa hẹn. Tất nhiên có một khối lượng lớn tài liệu về nhiễu loạn eigenvalue mà bạn có thể muốn xem xét (xem câu trả lời khác).
GoHokies
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.