การจัดการกับค่าผกผันของเมทริกซ์สมการเชิงบวกที่แน่นอน (ความแปรปรวนร่วม)?


27

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

อะไรคือสิ่งที่ดีที่สุดในแง่ของความมั่นคงเชิงตัวเลขวิธีที่จะคำนวณหรือใช้ (สมมติว่ารูปแบบสมการกำลังสองหรือการคูณเมทริกซ์ - เวกเตอร์โดยทั่วไป) ผกผันนี้? การแยกตัวประกอบบางอย่างที่สามารถมีประโยชน์ได้บ้าง?

คำตอบ:


14

Cholesky ตีนเป็ดนำไปสู่การ Cholesky เหมือนตัวประกอบของผกผันC - 1 = S S Tกับบนสามเหลี่ยมเมทริกซ์S = R - 1C=RTRC1=SSTS=R1

ในทางปฏิบัติดีที่สุดคือให้ปัจจัยอินเวอร์ส ถ้าจะเบาบางแล้วก็มักจะดียิ่งขึ้นเพื่อให้Sนัยเป็นผลิตภัณฑ์แมทริกซ์เวกเตอร์Y = C - 1 xสามารถคำนวณได้โดยการแก้ทั้งสองระบบสามเหลี่ยมR T Z = xและR Y = ZRSy=C1xRTz=xRy=z


25

การแยกตัวประกอบแบบ Cholesky เหมาะสมที่สุดสำหรับความเสถียรและความเร็วที่ดีที่สุดเมื่อคุณทำงานกับเมทริกซ์ความแปรปรวนร่วมเนื่องจากเมทริกซ์ความแปรปรวนร่วมจะเป็นเมทริกซ์สมมาตรกึ่งบวกแน่นอน Cholesky เป็นธรรมชาติที่นี่ แต่...

หากคุณตั้งใจจะคำนวณการแยกตัวประกอบแบบ Cholesky ก่อนที่คุณจะคำนวณเมทริกซ์ความแปรปรวนร่วมได้ ทำให้ปัญหามีเสถียรภาพมากที่สุดโดยการคำนวณ QR factor ของเมทริกซ์ของคุณ (QR ก็เร็วเกินไป) นั่นคือถ้าคุณจะคำนวณเมทริกซ์ความแปรปรวนร่วมเป็น

C=ATA

โดยที่มีคอลัมน์หมายความว่าถูกลบออกจากนั้นดูว่าเมื่อคุณสร้างCมันจะยกกำลังสองจำนวนเงื่อนไข ดังนั้นดีกว่าคือการสร้างปัจจัย QR ของAมากกว่าการคำนวณการแยกตัวประกอบ Cholesky ของA T Aอย่างชัดเจนACAATA

A=QR

เนื่องจาก Q เป็นมุมฉาก

C=(QR)TQR=RTQTQR=RTIR=RTR

ดังนั้นเราจึงได้รับปัจจัย Cholesky โดยตรงจากตัวประกอบ QR ในรูปแบบของ T ถ้าQ -LESS ตัวประกอบ QR ใช้ได้นี้จะดียิ่งขึ้นเนื่องจากคุณไม่จำเป็นต้องถาม Q -LESS QR เป็นสิ่งที่รวดเร็วในการคำนวณตั้งแต่Qไม่เคยสร้าง มันกลายเป็นเพียงลำดับของการเปลี่ยนเจ้าของบ้าน (คอลัมน์หมุนไปมาคิวคิวคิว - ลอจิกจะมีความเสถียรมากกว่าเดิมโดยมีค่าใช้จ่ายเพิ่มเติมในการเลือกเดือย)RTQQQQQ

ข้อดีของการใช้ QR ที่นี่ก็คือมันมีความเสถียรเชิงตัวเลขเกี่ยวกับปัญหาที่น่ารังเกียจ อีกครั้งนี่เป็นเพราะเราไม่เคยสร้างเมทริกซ์ความแปรปรวนร่วมโดยตรงเพื่อคำนวณปัจจัย Cholesky ทันทีที่คุณสร้างผลิตภัณฑ์คุณจะต้องใส่จำนวนเงื่อนไขของเมทริกซ์ อย่างมีประสิทธิภาพคุณสูญเสียข้อมูลลงในส่วนของเมทริกซ์ที่คุณมีข้อมูลน้อยมากที่จะเริ่มต้นATA

ในที่สุดเมื่อมีการตอบสนองอื่นชี้ให้เห็นคุณไม่จำเป็นต้องคำนวณและเก็บค่าผกผันเลย แต่ใช้มันในรูปของ backsolves บนระบบสามเหลี่ยม


5
และถ้าคุณต้องการประเมินรูปแบบสมการกำลังสองตามคุณสามารถทำได้โดยการคำนวณx , C - 1 x = x , ( R T R ) - 1 x = R - T x 2คือทำการทดแทนไปข้างหน้าหนึ่งครั้งและรับบรรทัดฐาน C1x,C1x=x,(RTR)1x=RTx2
Christian Clason

3

ฉันทำสิ่งนี้เป็นครั้งแรกเมื่อเร็ว ๆ นี้โดยใช้คำแนะนำจาก mathSE

SVD ถูกแนะนำโดยส่วนใหญ่ฉันคิดว่า แต่ฉันเลือกที่จะใช้ความเรียบง่ายของ Cholesky:

หากเมทริกซ์แล้วฉันสลายMไปยังสามเหลี่ยมเมทริกซ์Lใช้ Cholesky เช่นว่าM = L L จากนั้นผมก็ใช้ backsubstitution หรือ forwardsubstitution (ขึ้นอยู่กับว่าฉันเลือก L จะเป็นรูปสามเหลี่ยมบนหรือล่าง) เพื่อสลับLเช่นที่ฉันมีL - 1 จากนี้ฉันสามารถคำนวณM - 1 = ( L L ) - 1 = L - L - 1 ได้อย่างรวดเร็วM=AAMLM=LLLL1M1=(LL)1=LL1ได้อย่างรวดเร็ว


เริ่มกับ:

ที่เอ็มเป็นที่รู้จักและมีความสมมาตรโดยปริยายและยังเป็นบวกแน่นอนM=AAM

Cholesky factorisation:

โดยที่ Lเป็นรูปสี่เหลี่ยมและไม่เป็นเอกพจน์MLLL

กลับเปลี่ยนตัว:

อาจเป็นวิธีที่เร็วที่สุดในการกลับด้าน L (อย่าอ้างว่าเป็นแบบนั้น)LL1L

คูณ:

M1=(LL)1=LL1

LL1


อัลกอริทึมของฉัน Cholesky (อาจมาจากสูตรตัวเลขหรือวิกิพีเดีย)

Lij=MijMiMjMiiMiMi

This can almost be done in-place (you only need temporary storage for the diagonal elements, an accumulator and some integer iterators).


My back-substitution algorithm (from Numerical Recipes, check their version as I may have made a mistake with the LaTeX markup)

(L1)ij={1/Liiif i=j(Li(LT)j)/Liiotherwise

As LT appears in the expression, the order that you iterate over the matrix is important (some parts of the result matrix depend on other parts of it that must be calculated beforehand). Check the Numerical Recipes code for a complete example in code. [Edit]: Actually, just check the Numerical Recipes example. I've over-simplified too much by using dot-products, to the point that the above equation has a cyclic dependency no matter what order you iterate...


2

If you know that the matrix has an inverse (i.e., if it is indeed positive definite) and if it isn't too large, then the Cholesky decomposition gives an appropriate means to characterize the inverse of a matrix.

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