Eigenvector ของการปรับบรรทัดฐานขนาดเล็ก


10

ฉันมีชุดข้อมูลที่มีการเปลี่ยนแปลงอย่างช้าๆและฉันต้องติดตาม eigenvector / eigenvalues ​​ของเมทริกซ์ความแปรปรวนร่วม

ฉันใช้scipy.linalg.eighแต่มันแพงเกินไปและไม่ได้ใช้ความจริงที่ว่าฉันมีการสลายตัวที่ไม่ถูกต้องเพียงเล็กน้อยเท่านั้น

ใครช่วยแนะนำวิธีที่ดีกว่าในการจัดการกับปัญหานี้ได้หรือไม่?


1
ข้อมูลของคุณมีขนาดใหญ่แค่ไหน? คุณต้องการระบบ eigensystem ที่สมบูรณ์หรือมีค่าลักษณะเฉพาะที่ใหญ่ที่สุดหรือไม่? คุณต้องการมันอย่างแน่นอนหรือการประมาณจะทำเช่นนั้น?
cfh

ฉันต้องการระบบ eigensystem ที่สมบูรณ์ ฉันพบอัลกอริทึมสำหรับการปรับปรุงค่าผกผันของเมทริกซ์หลังจากการอัพเดทปกติเล็กน้อยโดยใช้การตีความการถดถอยของเมทริกซ์ความแปรปรวนร่วมดังนั้นฉันจึงสันนิษฐานว่ามีสิ่งที่คล้ายกันสำหรับ eigenvectors
Yaroslav Bulatov

คุณทำอะไรกับ eigendecomposition แบบเต็ม? อาจมีทางลัดที่ดีกว่าที่ไม่ผ่านมัน ... และฉันขอย้ำคำถามของ cfh: "ใหญ่แค่ไหน"?
Federico Poloni

ฉันมีคุณสมบัติ 8k และดาต้าพอยน์นับล้านรายการดังนั้นความแปรปรวนร่วมจึงเป็นค่าโดยประมาณ นี้คือการดำเนินการนี้อัลกอริทึม การไล่ระดับสีขึ้นอยู่กับค่าลักษณะเฉพาะของเมทริกซ์ความแปรปรวนร่วมบางอย่างและเมทริกซ์ความแปรปรวนร่วมนี้จะเปลี่ยนไปในแต่ละขั้นตอน
Yaroslav Bulatov

คำตอบ:


5

A(t)A(t+δt)

วิธีการติดตามสเปซเห็นได้ชัดว่ามีประโยชน์มากขึ้น(3) ข้อความที่ตัดตอนมาจาก(4) :

การคำนวณซ้ำของคู่ eigen สุดขั้ว (สูงสุดหรือต่ำสุด) (eigenvalue และ eigenvector) สามารถย้อนกลับไปได้ในปี 1966 [72] ในปี 1980 ทอมป์สันเสนออัลกอริทึมการปรับตัวแบบ LMS สำหรับการประเมินค่าไอเกนเวคเตอร์ซึ่งสอดคล้องกับค่าลักษณะเฉพาะน้อยที่สุดของเมทริกซ์ความแปรปรวนร่วมตัวอย่างและให้อัลกอริทึมการติดตามแบบปรับตัวของมุม / ความถี่ ซาร์การ์และคณะ [73] ใช้อัลกอริธึมการไล่ระดับสีแบบคอนจูเกตเพื่อติดตามความแปรปรวนของไอเก็นเวกเตอร์สุดขั้วซึ่งสอดคล้องกับค่าลักษณะเฉพาะที่เล็กที่สุดของเมทริกซ์ความแปรปรวนร่วมของสัญญาณที่เปลี่ยนแปลงอย่างช้าๆและพิสูจน์การลู่เข้าที่รวดเร็วกว่า วิธีการเหล่านี้ใช้เพื่อติดตามค่าสุดขั้วเดี่ยวและไอเกนนิคเตอร์ด้วยแอพพลิเคชั่นที่ จำกัด แต่หลังจากนั้นพวกเขาก็ถูกขยายสำหรับวิธีการติดตามและอัพเดท eigen-subspace ในปี 1990, Comon และ Golub [6] เสนอวิธีการ Lanczos สำหรับการติดตามค่าเอกพจน์สุดขั้วและเวกเตอร์เอกพจน์ซึ่งเป็นวิธีการทั่วไปที่ออกแบบมาเพื่อกำหนดปัญหา eigen ขนาดใหญ่และกระจัดกระจายAx=kx

[6]: Comon, P. , & Golub, GH (1990) ติดตามค่าเอกพจน์และเวกเตอร์สุดขีดสองสามตัวในการประมวลผลสัญญาณ ในการประมวลผลของ IEEE (pp. 1327–1343)

[14]: Thompson, PA (1980) เทคนิคการวิเคราะห์สเปกตรัมแบบปรับตัวสำหรับความถี่ที่ไม่เอนเอียง

[72]: Bradbury, WW, & Fletcher, R. (1966) วิธีการวนซ้ำใหม่สำหรับการแก้ปัญหาของ eigenproblem คณิตศาสตร์เชิงตัวเลข, 9 (9), 259–266

[73]: Sarkar, TK, Dianat, SA, Chen, H. , & Brule, JD (1986) การประมาณค่าสเปกตรัมที่ปรับได้ด้วยวิธีการไล่ระดับสีแบบคอนจูเกต ธุรกรรม IEEE เกี่ยวกับการประมวลผลเสียงพูดและสัญญาณ, 34 (2), 272–284

[74]: โหลด Golub, GH และ Van, CF (1989) การคำนวณเมทริกซ์ (2nd ed.) บัลติมอร์: สำนักพิมพ์มหาวิทยาลัยจอห์นฮอปกิ้นส์

ฉันควรพูดถึงว่าวิธีแก้สมมาตรเมทริกซ์เช่นสิ่งที่คุณต้องแก้ไขเมื่อคุณใช้งานscipy.linalg.eighนั้นค่อนข้างถูก หากคุณสนใจค่าลักษณะเฉพาะเพียงไม่กี่ค่าคุณอาจพบการปรับปรุงความเร็วในวิธีการของคุณเช่นกัน วิธี Arnoldi มักใช้ในสถานการณ์เช่นนี้


1
ขอบคุณสำหรับตัวชี้, อัลกอริทึม QR ดูเหมือนว่าเป็นจุดเริ่มต้นที่ดี
Yaroslav Bulatov

AA+λI

ps: linalg.eigh บนเมทริกซ์ 4k-by-4k ใช้เวลาประมาณ 20 วินาที (ใช้เพียงแกนเดียวด้วยเหตุผลบางประการ) ฉันต้องการประมาณ 0.25 วินาทีต่อการอัปเดต
Yaroslav Bulatov

7

น่าเสียดายที่ฉันไม่มีอัปเดตอันดับเล็ก ๆ ฉันมีอัปเดตบรรทัดฐานขนาดเล็กเต็มรูปแบบ
Yaroslav Bulatov

@ YaroslavBulatov ฉันไม่ได้ตระหนักถึงอัลกอริธึมที่มีประสิทธิภาพที่สามารถจัดการกับการอัปเดตอันดับสมบูรณ์แบบเล็ก ๆ น้อย ๆ ได้ดีที่สุดที่ฉันสามารถหาได้คือการอ้างอิงนี้แต่ไม่ได้ดูมีแนวโน้มมาก แน่นอนว่ามีงานวรรณกรรมขนาดใหญ่เกี่ยวกับการรบกวนค่านิยมเฉพาะที่คุณอาจต้องการดู (ดูคำตอบอื่น ๆ )
GoHokies
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.