ซ้ำ "แก้" สำหรับ


9

ฉันไม่สามารถจินตนาการได้ว่าฉันเป็นคนแรกที่คิดเกี่ยวกับปัญหาต่อไปนี้ดังนั้นฉันจะพอใจกับการอ้างอิง

สมมติว่าคุณมีผลบวกแน่นอนแบบสมมาตร Σ∈Rn×n. n มีขนาดใหญ่มากดังนั้นการถือครอง Σในความทรงจำเป็นไปไม่ได้ อย่างไรก็ตามคุณสามารถประเมินได้Σxสำหรับใด ๆ x∈Rn. ให้ไว้บ้างx∈Rnคุณต้องการที่จะหา xtΣ−1x.

ทางออกแรกที่นึกถึงคือการหา Σ−1xใช้ (พูด) การไล่ระดับสีผันคำกริยา อย่างไรก็ตามดูเหมือนว่าจะค่อนข้างสิ้นเปลือง - คุณต้องหาสเกลาร์และในกระบวนการที่คุณพบเวกเตอร์ขนาดมหึมาRn. มันดูเหมือนจะสมเหตุสมผลมากกว่าที่จะหาวิธีคำนวณสเกลาร์โดยตรง (เช่นโดยไม่ผ่านΣ−1x) ฉันกำลังมองหาวิธีการประเภทนี้


2
เมทริกซ์ของคุณนั้นมาจากไหน Σ=ATA สำหรับสี่เหลี่ยมบางส่วน "สั้นและกว้าง" A?
— GeoMatt22

@ GeoMatt22 น่าเสียดายที่ไม่ใช่ แต่สมมติว่าเป็นเช่นนั้น - คุณจะแนะนำอะไรในกรณีนั้น
— Yair Daon

1
ใช่ฉันแค่คิดว่าจะมีเมทริกซ์ตัวเล็ก ๆ ให้ทำงานด้วย ... ไม่แน่ใจว่ามันจะช่วยได้หรือไม่ คุณได้ลอง googling "matrix free mahalanobis distance" หรือคล้ายกัน? ขออภัยที่ไม่ช่วยเพิ่มเติม!
— GeoMatt22

ขอบคุณ @ GeoMatt22 ฉันไม่สามารถหาอะไรออนไลน์ได้
— Yair Daon

คำตอบ:


2

ฉันไม่คิดว่าฉันได้ยินเกี่ยวกับวิธีการใดที่ทำสิ่งที่คุณต้องการโดยไม่ต้องแก้ไข y=Σ−1x.

ทางเลือกเดียวที่ฉันสามารถนำเสนอคือถ้าคุณรู้บางอย่างเกี่ยวกับ eigenvectors และ - ค่าของ Σ. สมมติว่าคุณรู้ว่าพวกเขาเป็นλi,viจากนั้นคุณสามารถเป็นตัวแทน Σ=VTLV ที่คอลัมน์ของ V คือ viและ Lเป็นเมทริกซ์ทแยงมุมที่มีค่าลักษณะเฉพาะบนเส้นทแยงมุม ดังนั้นคุณมีสิ่งนั้นΣ−1=VTL−1V และคุณจะได้รับ

xTΣ−1x=xTVTL−1Vx=∑iλi−1(viTx)2.
แน่นอนว่าต้องให้คุณเก็บค่าลักษณะเฉพาะทั้งหมดนั่นคือเมทริกซ์แบบเต็มV. แต่ถ้าคุณบังเอิญรู้ว่ามีค่าลักษณะเฉพาะไม่กี่แห่งΣ มีขนาดเล็กพูดก่อน mและที่เหลือมีขนาดใหญ่มากจนคุณสามารถละเลยเงื่อนไขทั้งหมดได้ λi−1 สำหรับ i>mจากนั้นคุณสามารถประมาณ
xTΣ−1x=∑i=1nλi−1(viTx)2≈∑i=1mλi−1(viTx)2.
สิ่งนี้จะทำให้คุณต้องเก็บเท่านั้น ม. เวกเตอร์แทนทั้งหมด n eigenvectors

แน่นอนในทางปฏิบัติมันมักจะเท่ากันหรือยากกว่าในการคำนวณค่าลักษณะเฉพาะและค่าลักษณะเฉพาะ Y=Σ-1x หลายครั้ง.


แต่แล้วคุณก็ถูกทิ้งให้อยู่กับหน้าที่ในการค้นหา ม.ค่าลักษณะเฉพาะที่เล็กที่สุดของเมทริกซ์ซึ่งไม่ได้เป็นงานง่าย ...
— Yair Daon

แก้ไข. แต่อาจจะคุ้มค่าถ้าคุณต้องการประเมินxTΣ-1xหลายครั้ง.
— Wolfgang Bangerth

คุณสามารถแนะนำวิธีการได้หรือไม่?
— Yair Daon

มีตัวแก้ไอเคิลแวลูจำนวนมากหรือกระจัดกระจายอยู่รอบ ๆ ARPACK และ SLEPc ที่ใช้ PETC นั้นน่าจะเป็นที่นิยมใช้กันมากที่สุด
— Wolfgang Bangerth

Bangreth ขอบคุณสำหรับการอ้างอิง ฉันตรวจสอบ SLEPc (แม้ว่าจะไม่ละเอียดมากนัก) และดูเหมือนว่าวิธีการหาคู่ eigenpairs คือการทำซ้ำ (อาจแก้ไข) Lanczos ถ้าใครพยายามที่เล็กที่สุดม.eigenpairs เราต้องค้นหาและเก็บ eigenpairs ทั้งหมดไว้ในหน่วยความจำ โดยทั่วไปปัญหานี้จะไม่สามารถเกิดขึ้นได้กับเมทริกซ์ฟรี แต่ใช้หน่วยความจำมากพอ ๆn×nมดลูก หากมีความประสงค์ที่จะใช้การทำซ้ำแบบผกผัน - ไม่มีการรับประกันใด ๆ สำหรับคำสั่งของ eigenpair (s) ที่พบ ฉันพลาดอะไรไปรึเปล่า?
— Yair Daon
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.