SVD để tìm giá trị riêng lớn nhất của ma trận 50x50 - tôi có lãng phí thời gian đáng kể không?


13

Tôi đã có một chương trình tính giá trị riêng lớn nhất của nhiều ma trận 50x50 đối xứng thực bằng cách thực hiện phân tách giá trị số ít trên tất cả chúng. SVD là một nút cổ chai trong chương trình.

Có thuật toán nào nhanh hơn nhiều trong việc tìm ra giá trị riêng lớn nhất, hoặc sẽ tối ưu hóa phần này không mang lại nhiều lợi tức đầu tư?


Bạn có thể cung cấp thêm một số thông tin về ma trận của bạn, ví dụ nếu có bất cứ điều gì được biết về cấu trúc của chúng, phạm vi của giá trị bản địa hoặc sự tương đồng của chúng với nhau?
Pedro

Đó là một ma trận hiệp phương sai ( ). Thử nghiệm cho thấy tất cả ngoại trừ 5 giá trị riêng lớn nhất gần bằng 0 và giá trị riêng lớn nhất lớn hơn ít nhất ~ 20% so với giá trị lớn thứ hai. Vì có rất nhiều giá trị riêng gần bằng 0, tôi cho rằng phạm vi không quan trọng? Nó có thể được định cỡ lại cho bất kỳ phạm vi. Thang đo tôi đang sử dụng hiện mang lại cho tôi phạm vi từ 150 ~ 200. XXT
Anna

Ngoài ra, ma trận không phải là rất đơn lẻ, vì vậy vấn đề SVD được điều hòa tốt.
Anna

Vì là đối xứng và dương (bán) xác định, bạn có thể sử dụng hệ số Cholesky thay vì SVD. Hệ số Cholesky cần ít flops hơn để tính toán so với SVD nhưng là một phương thức chính xác vẫn cần flops . O ( n 3 )XXTO(n3)
Ken

@Anna: Bạn đã thử bất kỳ phương pháp tiếp cận nào được đề xuất ở đây chưa? Tôi khá tò mò muốn biết điều gì làm việc tốt nhất trong thực tế cho bạn ...
Pedro

Câu trả lời:


12

Tùy thuộc vào độ chính xác mà bạn yêu cầu cho giá trị riêng lớn nhất, bạn có thể thử sử dụng Power Iteration .

Đối với ví dụ cụ thể của bạn, tôi sẽ đi xa hơn để không tạo thành một cách rõ ràng, nhưng tính x X ( X T x ) trong mỗi lần lặp. Tính toán A sẽ yêu cầu các hoạt động O ( n 3 ) trong khi sản phẩm vectơ ma trận chỉ yêu cầu O ( n 2 ) .A=XXTxX(XTx)AO(n3)O(n2)

Tốc độ hội tụ phụ thuộc vào sự tách biệt giữa hai giá trị riêng lớn nhất, vì vậy đây có thể không phải là một giải pháp tốt trong mọi trường hợp,


1
Nếu giá trị riêng lớn nhất lớn hơn 20% so với giá trị tiếp theo, phép lặp công suất sẽ hội tụ khá nhanh (tất cả các giá trị riêng khác bị giảm đi bởi hệ số 5/6 trong mỗi lần lặp, do đó bạn nhận được một chữ số cho mỗi 13 lần lặp.
Wolfgang Bangerth

2
Các phương thức không gian con Krylov hoàn toàn tốt hơn các phương thức lũy thừa, vì chúng chứa vectơ từ phép lặp công suất với cùng số lần lặp.
Jack Poulson

1
@JackPoulson: Vâng, nhưng mỗi lần lặp lại tốn kém hơn để tính toán ... Liệu nó có thực sự đáng giá cho một vấn đề nhỏ như vậy không?
Pedro

@Pedro: tất nhiên, các matvec yêu cầu công việc bậc hai và eigensolve thương số Rayleigh và mở rộng tiếp theo là không đáng kể so với.
Jack Poulson

1
Mã chi phí? Kể từ khi @JackPoulson nói về vấn đề này, B. Parlett et al (1982) ("Ước tính Eigenvalue lớn nhất với Thuật toán Lanczos") so sánh phương pháp sức mạnh, phương pháp sức mạnh + gia tốc Aitken và ứng dụng Lanczos nhắm mục tiêu vào giá trị thực lớn nhất đối xứng (hoặc Hermiti) pos. def. ma trận. Họ kết luận phương pháp Lanczos hiệu quả hơn nếu độ chính xác thậm chí khiêm tốn (của giá trị bản địa thứ nhất so với thứ hai) là cần thiết, và tốt hơn trong việc tránh hiểu sai.
hardmath

5

Nếu chỉ có 5 giá trị riêng là rất có ý nghĩa, thuật toán Lanczsos với là phép nhân vectơ ma trận sẽ cho phép hội tụ tuyến tính nhanh sau 5 bước ban đầu, do đó, một giá trị riêng lớn nhất khá chính xác với vài lần lặp.X(XTx)


Bạn (@ArnoldNeumaier) có nghĩ về điều gì đó như thế này , được đơn giản hóa phù hợp ( ) không? Thật thú vị khi nó đưa ra một xấp xỉ khác với Lanczos nếu một vectơ thứ ba được giữ lại, trên cùng một không gian con Krylov. B=T=I
hardmath

Không; Tôi có nghĩa là thuật toán Lanczsos tiêu chuẩn nhưng đã vội vàng viết CG. Bây giờ sửa lại.
Arnold Neumaier

4

Đối với một ma trận bán xác định dương như , có thể đáng nỗ lực để tăng tốc độ hội tụ với sự dịch chuyển phổ . Đó là, một vô hướng phù hợp μ được chọn và phương pháp điện được áp dụng cho Một - μ tôi thay vì một .Một= =XXTμMột-μTôiMột

Một vài lần lặp lại của phương pháp sức mạnh cơ bản sẽ cho bạn một ước tính sơ bộ của eigenvalue lớn nhất λ 1 . Giả sử giá trị riêng chiếm ưu thế có bội số 1 và tất cả các giá trị khác nằm trong [ 0 , 5||Mộtx||/||x||λ1, sau đóA-5[0,56λ1]sẽ có một lớn nhất eigenvalue7Một-512λ1Tôivà phần còn lại trong[-5712λ1.[512λ1,512λ1]

Nói cách khác, bạn sẽ tăng sự thống trị của giá trị riêng lớn nhất từ ​​20% so với lớn nhất tiếp theo lên 40% so với giá trị riêng lớn nhất (giá trị tuyệt đối của một). Sự hội tụ hình học của phương pháp sức mạnh sẽ tăng tốc tương ứng. Một khi giá trị riêng lớn nhất của được tìm thấy đầy đủ chính xác, λ 1 ước tính bằng cách thêm lại sự thay đổi μ đã bị lấy đi.AμIλ1μ

Lưu ý rằng bạn không cần phải tạo ra một cách rõ ràng ( A - μ tôi ) x = X ( X T x ) -AμI vẫn có thể được tính với O ( n 2 ) nỗ lực.(AμI)x=X(XTx)μxO(n2)


Điều này dường như đòi hỏi phải có một ý tưởng tốt về mức độ của giá trị bản địa lớn thứ hai. Làm thế nào bạn sẽ ước chừng nó trong trường hợp như vậy?
Pedro

@Pedro: Áp dụng lặp điện chuyển chỉ đòi hỏi một ước lượng lớn nhất eigenvalue , nhưng như với unshifted phương pháp điện, phân tích chương trình các tốc độ hội tụ phụ thuộc vào | λ 2 | / | λ 1 | (ném vào abs. các giá trị không cần thiết cho trường hợp bán xác định trong tầm tay). Lần lượt quan sát tỷ lệ hội tụ có thể được sử dụng để ước tính | λ 2 | / | λ 1 | , Và do đó kích thước của λ 2 tương ứng với bước sóng 1λ1|λ2|/|λ1||λ2|/|λ1|λ2λ1nếu muốn. Tôi đã gợi ý những lợi ích mà bạn nhìn thấy trong một trường hợp như Anna mô tả trong các bình luận của cô ấy bên dưới Câu hỏi.
hardmath
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.