SVD สำหรับการหาค่าลักษณะเฉพาะที่ใหญ่ที่สุดของเมทริกซ์ 50x50 - ฉันต้องเสียเวลาอย่างมากหรือไม่?


13

ฉันมีโปรแกรมที่คำนวณค่าลักษณะเฉพาะที่ใหญ่ที่สุดของเมทริกซ์ 50x50 ที่สมมาตรจริงหลายตัวด้วยการสลายตัวแบบเอกฐานกับพวกมันทั้งหมด SVD เป็นคอขวดในโปรแกรม

มีอัลกอริทึมที่เร็วกว่ามากในการค้นหาค่าลักษณะเฉพาะที่ใหญ่ที่สุดหรือการเพิ่มประสิทธิภาพส่วนนี้จะไม่ให้ผลตอบแทนจากการลงทุนมากหรือไม่?


คุณสามารถให้ข้อมูลเพิ่มเติมเกี่ยวกับเมทริกซ์ของคุณเช่นหากมีอะไรที่รู้เกี่ยวกับโครงสร้างช่วงของค่าลักษณะเฉพาะหรือความคล้ายคลึงกัน
Pedro

มันเป็นเมทริกซ์ความแปรปรวนร่วม ( ) จากการทดสอบแสดงให้เห็นว่าค่าลักษณะเฉพาะที่ใหญ่ที่สุด 5 ค่าหรือมากกว่านั้นอยู่ใกล้กับศูนย์และค่าลักษณะเฉพาะที่ใหญ่ที่สุดนั้นใหญ่กว่าค่าที่ใหญ่กว่าอันดับสองอย่างน้อยประมาณ 20% เนื่องจากมีค่าลักษณะเฉพาะจำนวนมากใกล้กับศูนย์ฉันจึงคิดว่าช่วงนั้นไม่สำคัญ มันสามารถลดขนาดลงในช่วงใดก็ได้ ขนาดที่ฉันใช้อยู่ในขณะนี้ให้ช่วง 150 ~ 200 XXT
แอนนา

นอกจากนี้เมทริกซ์ยังไม่ได้เป็นเอกเทศอย่างใกล้ชิดดังนั้นปัญหา SVD จึงมีสภาพดี
แอนนา

เนื่องจากมีความสมมาตรและเป็นบวก (กึ่ง) แน่นอนคุณสามารถใช้การแยกตัวประกอบแบบ Cholesky แทน SVD Cholesky ตีนเป็ดใช้เวลามากน้อย flops การคำนวณกว่า SVD แต่เป็นวิธีการที่แน่นอนยังคงใช้เวลาO ( n 3 ) flops XXTO(n3)
Ken

@Anna: คุณลองใช้วิธีการมากมายที่เสนอที่นี่หรือไม่? ฉันจะค่อนข้างอยากรู้รู้สิ่งที่ทำงานที่ดีที่สุดในการปฏิบัติสำหรับคุณ ...
เปโดร

คำตอบ:


12

ทั้งนี้ขึ้นอยู่กับความแม่นยำที่คุณต้องการสำหรับค่าเฉพาะที่ใหญ่ที่สุดที่คุณสามารถลองใช้พลังงานซ้ำ

สำหรับตัวอย่างที่เฉพาะเจาะจงของคุณฉันจะไปไกลถึงแบบฟอร์มอย่างชัดเจน แต่คำนวณx X ( X T x )ในการทำซ้ำแต่ละครั้ง คอมพิวเตอร์จะต้องO ( n 3 )การดำเนินงานในขณะที่ผลิตภัณฑ์แมทริกซ์เวกเตอร์ต้องใช้เพียงO ( n 2 )A=XXTxX(XTx)AO(n3)O(n2)

อัตราการบรรจบกันขึ้นอยู่กับการแยกระหว่างค่าลักษณะเฉพาะสองค่าที่ใหญ่ที่สุดดังนั้นนี่อาจไม่ใช่วิธีแก้ปัญหาที่ดีในทุกกรณี


1
ถ้าที่ใหญ่ที่สุด eigenvalue เป็น 20% มีขนาดใหญ่กว่าต่อไปย้ำอำนาจที่ควรจะมาบรรจบกันอย่างรวดเร็วสวย (ค่าลักษณะเฉพาะอื่น ๆ ทั้งหมดได้รับการชุบโดยปัจจัยที่ 5/6 ในแต่ละซ้ำเพื่อให้คุณได้รับหนึ่งบาทสำหรับทุก 13 ซ้ำ.
โวล์ฟกัง Bangerth

2
วิธีการย่อย Krylov นั้นดีกว่าวิธีการใช้พลังงานอย่างเคร่งครัดเนื่องจากประกอบด้วยเวกเตอร์จากการวนซ้ำของพลังงานที่มีจำนวนการทำซ้ำเท่ากัน
Jack Poulson

1
@ JackPoulson: ใช่ แต่การคำนวณซ้ำแต่ละครั้งจะมีราคาแพงกว่าในการคำนวณ ... มันจะคุ้มค่ากับปัญหาเล็ก ๆ นี้จริงหรือ?
Pedro

@ เปโดร: แน่นอน matvecs ต้องใช้กำลังสองและ eigensolve เรย์เลย์เชียรและการขยายตัวที่ตามมามีความสำคัญในการเปรียบเทียบ
Jack Poulson

1
รหัสค่าใช้จ่าย? เนื่องจาก @JackPoulson เจาะลึกปัญหาB. Parlett et al (1982) ("ในการประมาณค่าลักษณะเฉพาะที่ใหญ่ที่สุดด้วย Lanczos Algorithm") เปรียบเทียบวิธีการใช้พลังงานวิธีการเร่ง + Aitken และแอปพลิเคชันของ Lanczos กำหนดเป้าหมายค่าลักษณะเฉพาะที่ใหญ่ที่สุดของจริง สมมาตร (หรือ Hermitian) pos def มดลูก พวกเขาสรุปว่าวิธี Lanczos นั้นมีประสิทธิภาพมากกว่าหากจำเป็นต้องใช้ความแม่นยำระดับปานกลาง (จากค่า eigenvalue อันดับที่สอง) และหลีกเลี่ยงการเข้าใจผิด
hardmath


4

A=XXTμAμIA

||Ax||/||x||λ1[0,56λ1]A512λ1I712λ1[512λ1,512λ1]

AμIλ1μ

AμI(AμI)x=X(XTx)μxO(n2)


สิ่งนี้ดูเหมือนจะต้องการความคิดที่ดีว่าขนาดของค่าลักษณะเฉพาะที่ใหญ่เป็นอันดับสองคืออะไร คุณจะประมาณมันอย่างไรในกรณีเช่นนี้?
Pedro

λ1|λ2|/|λ1||λ2|/|λ1|λ2λ1ถ้าต้องการ. ฉันแนะนำว่าคุณจะเห็นประโยชน์อะไรบ้างในกรณีเช่น Anna อธิบายไว้ในความคิดเห็นของเธอด้านล่างคำถาม
hardmath
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.