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


9

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

สมมติว่าคุณมีผลบวกแน่นอนแบบสมมาตร ΣRn×n. n มีขนาดใหญ่มากดังนั้นการถือครอง Σในความทรงจำเป็นไปไม่ได้ อย่างไรก็ตามคุณสามารถประเมินได้Σxสำหรับใด ๆ xRn. ให้ไว้บ้างxRnคุณต้องการที่จะหา 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=VTL1V และคุณจะได้รับ

xTΣ1x=xTVTL1Vx=iλi1(viTx)2.
แน่นอนว่าต้องให้คุณเก็บค่าลักษณะเฉพาะทั้งหมดนั่นคือเมทริกซ์แบบเต็มV. แต่ถ้าคุณบังเอิญรู้ว่ามีค่าลักษณะเฉพาะไม่กี่แห่งΣ มีขนาดเล็กพูดก่อน mและที่เหลือมีขนาดใหญ่มากจนคุณสามารถละเลยเงื่อนไขทั้งหมดได้ λi1 สำหรับ i>mจากนั้นคุณสามารถประมาณ
xTΣ1x=i=1nλi1(viTx)2i=1mλi1(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.