คำถามนี้เกี่ยวกับวิธีที่มีประสิทธิภาพในการคำนวณส่วนประกอบหลัก
ตำราจำนวนมากในการสนับสนุน PCA เชิงเส้นโดยใช้การสลายตัวเอกพจน์มูลค่าของข้อมูล Casewise นั่นคือถ้าเรามี dataและต้องการแทนที่ตัวแปร ( คอลัมน์ของมัน) ด้วยองค์ประกอบหลักเราจะทำ SVD: , ค่าเอกพจน์ (sq. รากของค่าลักษณะเฉพาะ) ครอบครองเส้นทแยงมุมหลักของ , ขวา eigenvectorเป็นเมทริกซ์การหมุนแบบมุมฉากของแกน - ตัวแปรเป็นแกน - องค์ประกอบ, ซ้าย eigenvectorเป็นเช่น , เฉพาะสำหรับกรณี จากนั้นเราสามารถคำนวณค่าองค์ประกอบเป็นC S V U V C = X V = U S
อีกวิธีหนึ่งในการทำ PCA ของตัวแปรก็คือการสลายตัวของ square matrix (เช่นRสามารถเป็นสหสัมพันธ์หรือความแปรปรวนร่วมเป็นต้นระหว่างตัวแปร) การสลายตัวอาจจะเป็นการสลายตัวของไอเกนหรือการสลายตัวเอกฐาน: ด้วยเมทริกซ์เชิงบวกแบบกึ่งสมมาตรแบบสมมาตรแบบสี่เหลี่ยมจัตุรัสพวกเขาจะให้ผลลัพธ์แบบเดียวกันR = V L V ′กับค่าลักษณะเฉพาะตามแนวทแยงมุมของLและVตามที่อธิบายไว้ก่อนหน้า ค่าตัวแทนจะเป็นC = X V
ตอนนี้คำถามของฉัน: ถ้าข้อมูลเป็นเมทริกซ์ขนาดใหญ่และจำนวนของกรณีคือ (ซึ่งมักจะเป็นกรณี) มากกว่าจำนวนของตัวแปรแล้ววิธี (1) คาดว่าจะช้ากว่าทางมาก (2) เพราะวิธี (1) ใช้อัลกอริธึมที่ค่อนข้างแพง (เช่น SVD) กับเมทริกซ์ขนาดใหญ่ มันคำนวณและเก็บเมทริกซ์จำนวนมากซึ่งเราไม่ต้องการในกรณีของเรา (PCA ของตัวแปร) ถ้าเป็นเช่นนั้นเหตุใดจึงมีหนังสือหลายเล่มปรากฏขึ้นเพื่อสนับสนุนหรือพูดถึงเพียงวิธีเดียว (1) อาจจะมีประสิทธิภาพและฉันขาดอะไรไป?
Joliffe, Principal component analysis, 2nd ed.
จริงๆแล้ว Joliffe อธิบายทั้งสองวิธี แต่ในบทหลักของ PCA เขาพูดถึงวิธีที่ 1 เท่าที่ฉันจำได้
R
svd