อัลกอริธึมที่มีประสิทธิภาพในการคำนวณการแยกค่าเอกเทศ (SVD) คืออะไร


17

บทความ Wikipedia เกี่ยวกับการวิเคราะห์องค์ประกอบหลักระบุว่า

อัลกอริธึมที่มีประสิทธิภาพมีอยู่ในการคำนวณ SVD ของโดยไม่ต้องสร้างเมทริกซ์ดังนั้นการคำนวณ SVD จึงเป็นวิธีมาตรฐานในการคำนวณการวิเคราะห์องค์ประกอบหลักจากเมทริกซ์ข้อมูลXXTX

มีคนบอกฉันว่าอัลกอริทึมที่มีประสิทธิภาพซึ่งบทความกำลังพูดถึงคืออะไร ไม่มีการอ้างอิงที่ได้รับ (URL หรือการอ้างอิงถึงบทความที่เสนอวิธีการคำนวณแบบนี้น่าจะดี)


4
การค้นหาโดย Google เกี่ยวกับอัลกอริธึมการสลายตัวของค่าเอกพจน์ทำหน้าที่ได้ดีในการเน้นข้อมูลที่เกี่ยวข้อง
whuber

1
อย่าลืมลบค่าเฉลี่ยก่อน SVD สำหรับ PCA!
Memming

ลอง Lanczos SVD!
ciri

คำตอบ:


12

หลักทำงานม้าที่อยู่เบื้องหลังการคำนวณ SVD เป็นอัลกอริทึม QR ต้องบอกว่ามีขั้นตอนวิธีการที่แตกต่างกันในการคำนวณมูลค่าการสลายตัวเอกพจน์ทั่วไป -by-เมทริกซ์ แผนผังที่ยอดเยี่ยมเกี่ยวกับปัญหาที่มีอยู่ที่นี่ (จากเอกสารของMKLของ Intel ) มีดังต่อไปนี้:Mยังไม่มีข้อความAป้อนคำอธิบายรูปภาพที่นี่

ตามที่คุณเห็นขึ้นอยู่กับกรณีการใช้งานของคุณมีวิธีการที่แตกต่างกัน (การตั้งชื่อประจำสามารถพบได้ที่นี่ ) นั่นเป็นเพราะตัวอย่างเช่นมีรูปแบบเมทริกซ์ที่การลดเจ้าของบ้านอาจมีราคาแพงกว่าการหมุนของ Givens (เพื่อตั้งชื่อวิธีที่ชัดเจน "สอง" ในการรับ QR) การอ้างอิงมาตรฐานในเรื่องนี้คือการคำนวณเมทริกซ์ของ Golub และ Van Loan (ฉันขอแนะนำให้ใช้อย่างน้อยรุ่นที่ 3) ฉันยังได้พบÅ วิธีเชิงตัวเลขของBjörck สำหรับกำลังสองน้อยที่สุดปัญหาทรัพยากรที่ดีมากในเรื่องนั้น ในขณะที่ SVD ไม่ใช่จุดสนใจหลักของหนังสือเล่มนี้จะช่วยให้สามารถใช้งานได้ตามบริบท

ถ้าฉันมีให้คุณหนึ่งคำแนะนำทั่วไปเกี่ยวกับเรื่องนี้ก็คือไม่พยายามที่จะเขียนขั้นตอนวิธี SVD ของคุณเองจนกว่าคุณจะมีการดำเนินการประสบความสำเร็จในคู่ของชั้นเรียนในเชิงตัวเลขพีชคณิตเชิงเส้นอยู่แล้วและคุณรู้ว่าสิ่งที่คุณทำ ฉันรู้ว่ามันฟังดูขัดขืน แต่จริงๆแล้วมันมีสิ่งต่าง ๆ มากมายที่สามารถผิดไปได้และคุณก็จบลงด้วยการใช้งานย่อยที่ดีที่สุด (ถ้าไม่ผิด) มีบางห้องสวีทฟรีที่ดีมากในเรื่อง (เช่นEigen , ArmadilloและTrilinosเพื่อชื่อไม่กี่)


XA

1
Mยังไม่มีข้อความAXTX

2
ใช่ฉันผิด: QR ไม่ได้ จำกัด เฉพาะเมทริกซ์จตุรัส +1 ตามวิธี คำถามนี้เป็นหนึ่งในคำถามที่ไม่ได้รับการโหวตสูงสุดด้วยแท็กpcaดังนั้นจึงเป็นเรื่องดีที่ได้เห็นคำตอบนั้นในที่สุด
อะมีบาพูดว่า Reinstate Monica

คำตอบของคุณไม่ได้กล่าวถึงอัลกอริธึมซ้ำ ๆ ทั้งหมด มันตั้งใจหรือไม่ มีคนถามคำถามเกี่ยวกับอัลกอริธึม SVD ซ้ำแล้วเห็นว่ามีอัลกอริธึมที่รวดเร็วสำหรับการคำนวณ SVD ที่ถูกตัดทอนหรือไม่ และฉันโพสต์คำตอบนั่นพยายามให้ภาพรวมบางอย่าง บางทีอย่างน้อยเราก็ควรเชื่อมโยงคำตอบของเรา และมันคงจะดีมากถ้าคุณสามารถขยายการสนทนาของคุณด้วยอัลกอริทึม QR กับอัลกอริทึมซ้ำ
อะมีบาพูดว่า Reinstate Monica

ไม่มันเป็นอุบัติเหตุ คุณตอบคำถามของคุณเองในโพสต์ของคุณ; SVD ที่ถูกตัดทอนส่วนใหญ่เป็นการตัดทอน eigendecompositions (ดูตัวอย่างARPACK ) มีความแตกต่างที่ดีมี แต่พวกเขาจะดี ; ซอฟต์แวร์บางตัว (เช่น MATLAB's svds) ใช้เท่าที่จะทำได้โดยใช้ฟังก์ชัน SVD ที่ถูกตัดทอนเป็น wrapper สำหรับกิจวัตร eigendecomposition ( eigs) ที่ถูกตัดทอน
usεr11852พูดว่า Reinstate Monic
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.