การแสดง PCA ด้วยเมทริกซ์ระยะทางเท่านั้น


12

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

มีวิธีในการใช้ PCA ที่รู้ระยะทางแบบคู่เท่านั้นหรือไม่


1
คุณมีเมทริกซ์จตุรัสขนาดใหญ่ของระยะทางระหว่างจุดที่คุณต้องการจัดกลุ่ม (BTW ระยะทางเท่าไหร่ยูคลิดมัน?) อะไรที่ทำให้คุณคิดว่ามันคือขนาดของมิติที่จุดเหล่านี้ขยายและไม่ใช่จำนวนของจุด (cardinality) ที่ขัดขวางการจัดกลุ่ม
ttnphns

1
จำนวนคะแนนไม่ได้ "ใหญ่มาก" (ไม่กี่พันคะแนน) ระยะทางที่ฉันใช้คือความสัมพันธ์แบบเพียร์สันระหว่างจุดเหล่านี้
bigTree

2
แต่คำถามของฉันคือคุณต้องการลดมิติข้อมูล (และถ้าใช่ทำไม?) หรือความรุนแรง (จำนวนคะแนน) จริงหรือไม่ เพราะคำถามของคุณไม่มีความชัดเจน
ttnphns

1
@ttnphns: โอ้เด็กชายแน่นอนฉันแค่พิมพ์ผิดความคิดเห็นก่อนหน้านี้ เพื่อลบความสับสนที่เป็นไปได้ตอนนี้ฉันจะลบความคิดเห็นนั้นและทำซ้ำสิ่งที่ฉันพูดที่นี่ด้วยถ้อยคำที่ถูกต้อง: "การลดภาวะเชิงการนับในกรณีนี้หมายถึงการทำให้ระยะทางเมทริกซ์เล็กลง (ลดลง ) ลดอันดับโดยไม่ต้องเปลี่ยน . PCA จำนวนเงินไปที่หลังและไม่ได้จริงๆช่วยกับอดีตเป้าหมาย" N NN×NNN
อะมีบา

1
ฉันคิดว่าวิธีที่ง่ายที่สุดสำหรับคุณคือการใช้ (a) วิธีการจัดกลุ่มหรือ (b) การใช้งานหรือ (c) คอมพิวเตอร์ที่แข็งแกร่ง (RAM เพียงพอ) ที่จะใช้และจำแนกวัตถุ 6,000 ชิ้น (ฉันไม่รู้ว่าทำไม โปรแกรม medoid พบว่ายาก 6000 มีขนาดใหญ่ แต่ไม่ใหญ่มาก) วิธีการบางอย่าง (เช่น K- หมายถึง) ต้องการข้อมูลคุณสมบัติ X วัตถุ คุณสามารถสร้างข้อมูลดังกล่าวจากเมทริกซ์ระยะทางวัตถุผ่านเมตริก MDS (หากอีกครั้งโปรแกรมคอมพิวเตอร์ / MDS ของคุณจะอนุญาตวัตถุ 6,000 ชิ้น)
ttnphns

คำตอบ:


8

อัปเดต: ฉันลบคำตอบดั้งเดิมของฉันออกทั้งหมดเนื่องจากมีความสับสนระหว่างระยะทางแบบยุคลิดและผลิตภัณฑ์สเกลา นี่เป็นคำตอบใหม่ของฉัน ขอโทษ.

ถ้าตามระยะทางแบบคู่คุณหมายถึงระยะทางแบบยุคลิดดังนั้นใช่มีวิธีดำเนินการ PCA และค้นหาส่วนประกอบหลัก ฉันอธิบายอัลกอริทึมในคำตอบของคำถามต่อไปนี้: อะไรคือความแตกต่างระหว่างการวิเคราะห์องค์ประกอบหลักและการปรับสเกลหลายมิติ

สรุปสั้น ๆ เมทริกซ์ของระยะทางแบบยุคลิดเดียนสามารถแปลงเป็นเมทริกซ์แกรมกึ่งกลางซึ่งสามารถนำมาใช้โดยตรงเพื่อทำการ PCA ผ่านทาง eigendecomposition ขั้นตอนนี้เป็นที่รู้จักกัน[คลาสสิค] หลายมิติการปรับ (MDS)

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


ระยะทางที่ฉันใช้คือความสัมพันธ์ (สหสัมพันธ์ของเพียร์สัน) และดังนั้นจึงไม่ใช่ระยะทางยุคลิด มันจะทำงานคล้ายกันไหม
bigTree

1
@bigTree: หากไม่ใช่ระยะทางแบบยุคลิดก็ไม่มีทางที่คุณจะสามารถเรียกใช้ PCA ได้ อย่างไรก็ตามคุณสามารถใช้การปรับขนาดแบบหลายมิติซึ่งเป็นเทคนิคการลดขนาดที่ใช้เมทริกซ์ของระยะทางแบบคู่ที่แม่นยำ (สามารถเป็นระยะทางใดก็ได้) หมายเหตุอื่น: ภายใต้สมมติฐานบางประการเกี่ยวกับจุดข้อมูลดั้งเดิม (ซึ่งคุณไม่มี) ความสัมพันธ์สามารถเปลี่ยนเป็นระยะทางแบบยุคลิด สมมติฐานคือ: (1) มีค่าเฉลี่ยเป็นศูนย์ (2) มีค่าคงที่เช่นหน่วยความยาว เป็นไปได้หรือไม่ที่ข้อมูลของคุณจะเป็นจริง
อะมีบา

สิ่งเหล่านี้ไม่จริงหรือข้อมูลของฉัน แต่ฉันจะลอง MDS ขอบคุณ
bigTree

1
คุณไม่สามารถใช้ kernel PCA ได้หรือไม่ ฉันคิดว่าจะต้องมีเพียงจุด pairwise ผลิตภัณฑ์ แต่ผมไม่ทราบว่ามากเกี่ยวกับปัญหาได้ดังนั้นผมจึงไม่ทราบว่ามันทำให้รู้สึก
rep_ho

4

PCA ที่มีเมทริกซ์ระยะทางอยู่และเรียกว่า Multi-dimensional scaling (MDS) คุณสามารถเรียนรู้เพิ่มเติมเกี่ยวกับวิกิพีเดียหรือในหนังสือเล่มนี้

คุณสามารถทำมันในที่มีฟังก์ชั่นR MDS cmdscaleสำหรับตัวอย่างxคุณสามารถตรวจสอบprcomp(x)และcmdscale(dist(x))ให้ผลลัพธ์เดียวกัน ( prcompPCA และdistเพียงแค่คำนวณระยะทาง euclidian ระหว่างองค์ประกอบของ x)


3

ดูเหมือนว่าปัญหาที่สามารถใช้การจัดกลุ่มสเปกตรัมได้ เนื่องจากคุณมีเมทริกซ์ระยะทางคู่ตามลำดับคุณสามารถกำหนดกราฟที่เชื่อมต่ออย่างสมบูรณ์โดยที่แต่ละโหนดมีการเชื่อมต่อ N ซึ่งสอดคล้องกับระยะทางจากโหนดอื่น ๆ ในกราฟ จากนี้คุณสามารถคำนวณกราฟ Laplacian (ถ้าฟังดูน่ากลัวไม่ต้องกังวล - มันเป็นการคำนวณง่าย ๆ ) จากนั้นนำค่า eigenvector ที่เล็กที่สุดค่าลักษณะเฉพาะ (นี่คือที่ที่แตกต่างจาก PCA) ตัวอย่างเช่นถ้าคุณใช้ 3 eigenvectors คุณจะมีเมทริกซ์ Nx3 ในพื้นที่นี้จุดที่ควร (หวังว่า) ควรจะแยกออกจากกันเพราะมีทฤษฎีกราฟที่เรียบร้อยซึ่งแสดงให้เห็นว่านี่เป็นการตัดที่เหมาะสมที่สุดสำหรับการเพิ่มการไหล (หรือระยะทางในกรณีนี้) ระหว่างกลุ่ม จากตรงนั้นคุณสามารถใช้ k-mean หรืออัลกอริทึมที่คล้ายกันเพื่อทำคลัสเตอร์ใน 3-space ฉันขอแนะนำให้ตรวจสอบคำแนะนำแบบนี้เพื่อรับข้อมูลเชิงลึกเพิ่มเติม

http://arxiv.org/abs/0711.0189


0

ระยะทางในแนวนอนยังเป็นเมทริกซ์จตุรัสเช่นเดียวกับเมทริกซ์ความแปรปรวนร่วม PCA เป็นเพียง SVD ( http://en.wikipedia.org/wiki/Singular_value_decomposition ) ที่ใช้กับเมทริกซ์ความแปรปรวนร่วม คุณควรจะสามารถลดขนาดได้โดยใช้ SVD กับข้อมูลของคุณ ฉันไม่แน่ใจว่าจะตีความผลลัพธ์ของคุณอย่างไร แต่ก็เป็นสิ่งที่ต้องลอง คุณสามารถใช้วิธีการจัดกลุ่มเช่น k-mean หรือการจัดกลุ่มแบบลำดับชั้น ดูเทคนิคการลดขนาดอื่น ๆ เช่นการปรับสเกลหลายมิติ คุณกำลังพยายามออกอะไรจากกลุ่มของคุณ


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