PCA ขนาดใหญ่เป็นไปได้หรือไม่


10

การวิเคราะห์องค์ประกอบหลัก (PCA) แบบคลาสสิกคือการทำบนเมทริกซ์ข้อมูลอินพุตซึ่งคอลัมน์มีค่าเฉลี่ยเป็นศูนย์ (จากนั้น PCA สามารถ "เพิ่มความแปรปรวนสูงสุด") สามารถทำได้อย่างง่ายดายโดยการจัดคอลัมน์ให้อยู่ตรงกลาง Howenver เมื่อเมทริกซ์การป้อนข้อมูลเบาบางเมทริกซ์กึ่งกลางตอนนี้จะเบาบางอีกต่อไปและ - ถ้าเมทริกซ์มีขนาดใหญ่มาก - ดังนั้นจะไม่พอดีกับหน่วยความจำอีกต่อไป มีวิธีแก้ปัญหาอัลกอริทึมสำหรับปัญหาการจัดเก็บหรือไม่?


5
แม้ว่าเมทริกซ์ข้อมูลแบบเต็มจะไม่พอดีกับหน่วยความจำ แต่ก็เป็นไปได้มากที่ความแปรปรวนร่วมหรือเมทริกซ์แกรมเข้ากับหน่วยความจำ สิ่งเหล่านี้เพียงพอที่จะทำ PCA คุณกำลังคิดถึงเมทริกซ์ข้อมูลอินพุทขนาดใด? ดูเพิ่มเติมstats.stackexchange.com/questions/35185
อะมีบา

1
@amoeba: ฉันกำลังมองหาที่ 500K ตัวอย่าง (แถว) และ 300K คุณลักษณะ (คอลัมน์)
รอย

เกี่ยวกับซอฟต์แวร์ Apache Spark มีมันspark.apache.org/docs/latest/ …เพื่อให้แน่ใจว่าการดำเนินการเกี่ยวข้องกับข้อมูลที่ไม่อยู่ในหน่วยความจำ
Tim

คำตอบ:


11

ใช่มันเป็นไปได้

หากเมทริกซ์ข้อมูลไม่พอดีกับ RAM แสดงว่ายังไม่สิ้นสุดของโลก: มีอัลกอริธึมที่มีประสิทธิภาพที่สามารถทำงานกับข้อมูลที่เก็บไว้ในฮาร์ดไดรฟ์ ดูเช่นสุ่ม PCA ที่อธิบายไว้ใน Halko et al., 2010 อัลกอริทึมสำหรับการวิเคราะห์องค์ประกอบหลักของชุดข้อมูลขนาดใหญ่

ในส่วนที่ 6.2 ผู้เขียนกล่าวว่าพวกเขาได้ลองอัลกอริทึมของพวกเขาใน 400k คูณ 100k data matrix และที่

อัลกอริทึมของกระดาษปัจจุบันต้องใช้ 12.3 ชั่วโมงในการประมวลผลชุดข้อมูลทั้งหมด 150 GB ที่เก็บไว้ในดิสก์โดยใช้คอมพิวเตอร์แล็ปท็อปที่มี RAM 1.5 GB [... ]

โปรดทราบว่านี่คือในอดีตของฮาร์ดไดรฟ์แม่เหล็ก; วันนี้มีไดรฟ์โซลิดสเตตที่เร็วกว่ามากที่มีอยู่ดังนั้นฉันเดาว่าอัลกอริทึมเดียวกันจะทำงานเร็วกว่ามาก

ดูเพิ่มเติมที่เธรดเก่านี้สำหรับการสนทนาเพิ่มเติมเกี่ยวกับ PCA แบบสุ่ม: อัลกอริธึม PCA ที่ดีที่สุดสำหรับฟีเจอร์จำนวนมาก (> 10K)? และขนาดใหญ่ 2011 ตรวจสอบโดย Halko et al .: หาโครงสร้างที่มี Randomness: น่าจะเป็นอัลกอริทึมสำหรับการสร้างประมาณเมทริกซ์ decompositions

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