การจัดกลุ่มที่ประหยัดพื้นที่


9

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

อัลกอริทึมการจัดกลุ่ม / การใช้งานใดที่ใช้พื้นที่น้อยกว่า O (n ^ 2)

มีรายการอัลกอริทึมและข้อกำหนดด้านเวลาและสถานที่อยู่หรือไม่?


2
บางทีการย้ายการจัดกลุ่มประเภทหน้าต่าง (เช่น SaTScan, satscan.org ) อาจตรงตามความต้องการของคุณ โปรแกรมเฉพาะนั้นมีไว้สำหรับข้อมูลเชิงพื้นที่ / ข้อมูลชั่วคราวดังนั้นไม่ได้มีความหมายสำหรับมิติที่สูงขึ้น แต่อาจจะให้แนวคิดหรือสถานที่เริ่มต้น
Andy W

คำตอบ:


5

K-Means และ Mean-Shift ใช้ตัวบอกตัวอย่างแบบ raw (ไม่จำเป็นต้องคำนวณเมทริกซ์ความสัมพันธ์ล่วงหน้า)

มิฉะนั้นสำหรับการจัดกลุ่มสเปกตรัมหรือการจัดกลุ่มการทำซ้ำพลังงานคุณสามารถใช้การแสดงเมทริกซ์แบบเบาบาง (เช่นการบีบอัดแบบกระจัดกระจายแถว) ของเมทริกซ์ความใกล้เคียง k- เพื่อนบ้านที่ใกล้เคียงที่สุด ถ้า k มีขนาดเล็ก (สมมติว่า 5 หรือ 10) คุณจะได้รับการแทนพื้นที่อย่างมีประสิทธิภาพ (2 * n_samples * k * 8 ไบต์สำหรับค่าทศนิยมที่มีความแม่นยำสองเท่า)


2

อัลกอริทึมการจัดกลุ่มบางอย่างสามารถใช้โครงสร้างดัชนีเชิงพื้นที่ สิ่งนี้ทำให้ตัวอย่าง DBSCAN และ OPTICS ทำงานในเวลา (ตราบใดที่ดัชนีอนุญาตให้แบบสอบถาม )O(nlogn)O(logn)

เห็นได้ชัดว่าอัลกอริทึมที่ทำงานในความซับซ้อนนี้ไม่ได้สร้างเมทริกซ์ระยะทางO(n2)

สำหรับอัลกอริทึมบางอย่างเช่นการจัดกลุ่มแบบลำดับชั้นที่มีการเชื่อมโยงเดี่ยวและการเชื่อมโยงแบบสมบูรณ์จะมีอัลกอริทึมที่ได้รับการปรับให้เหมาะสมที่สุด (SLINK, CLINK) เป็นเพียงว่าคนส่วนใหญ่ใช้สิ่งที่พวกเขาสามารถได้รับและสิ่งที่ใช้งานง่าย และการจัดกลุ่มแบบลำดับชั้นนั้นง่ายต่อการใช้งานอย่างไร้เดียงสาโดยใช้การทำซ้ำผ่านเมทริกซ์ระยะทาง (ทำให้อัลกอริทึม ... )nn2O(n3)

ฉันไม่ทราบถึงรายการทั้งหมดเปรียบเทียบอัลกอริทึมการจัดกลุ่ม อาจมีอัลกอริทึมการจัดกลุ่มมากกว่า 100 รายการ มีอย่างน้อยหนึ่งโหลตัวแปร k-mean ตัวอย่างเช่น นอกจากนี้ยังมีความซับซ้อนในเวลาทำงานเช่นเดียวกับความซับซ้อนของหน่วยความจำ มีกรณีเฉลี่ยและกรณีที่เลวร้ายที่สุด มีความแตกต่างของการใช้งานขนาดใหญ่ (เช่นลิงก์เดียวที่กล่าวถึงข้างต้นและการใช้งาน DBSCAN ที่ไม่ได้ใช้ดัชนีและดังนั้นจึงอยู่ในและในขณะที่พวกเขาไม่จำเป็นต้องเก็บเมทริกซ์ระยะทางเต็มจากนั้นพวกเขายังคงต้องคำนวณระยะทางตามจำนวนคู่ทั้งหมด) นอกจากนี้ยังมีพารามิเตอร์มากมาย สำหรับ k-mean,O(n2)n×nkเป็นสิ่งสำคัญ สำหรับอัลกอริทึมใด ๆ ฟังก์ชั่นระยะทางสร้างความแตกต่างอย่างมาก (การใช้งานจำนวนมากอนุญาตให้ระยะทางแบบยุคลิดเท่านั้น ... ) และเมื่อคุณได้รับฟังก์ชั่นทางไกลที่มีราคาแพง (นอกเหนือจากเรื่องเล็กน้อยเช่น Euclidean) จำนวนการคำนวณระยะทางอาจเป็นส่วนหลักอย่างรวดเร็ว ดังนั้นคุณต้องแยกความแตกต่างระหว่างจำนวนการดำเนินการทั้งหมดและจำนวนการคำนวณระยะทางที่จำเป็น ดังนั้นอัลกอริทึมที่อยู่ในการดำเนินการแต่การคำนวณระยะทางอาจทำได้ดีกว่าอัลกอริทึมที่ทั้งคู่เมื่อฟังก์ชันระยะทางมีราคาแพงมาก (พูดระยะทาง ฟังก์ชั่นตัวเองคือ )O(n2)O(n)O(nlogn)O(n)


คำตอบที่ดีมาก
MonsterMMORPG

1

คำถามที่ดี. วิธีฟางคนพูด 3 เพื่อนบ้านที่ใกล้ที่สุดคือตัวอย่างเพื่อนบ้าน Nsample ของแต่ละจุดข้อมูลการรักษาที่ใกล้ที่สุด 3 ในขณะที่เล็กน้อยการรันสิ่งนี้สำหรับค่า Nsample สองสามค่าจะทำให้คุณมีความคิดเกี่ยวกับอัตราส่วนสัญญาณ / เสียงรบกวน วางแผนได้อย่างง่ายดายสำหรับข้อมูลของคุณ เคล็ดลับเพิ่มเติมคือจากนั้นตรวจสอบเพื่อนบ้านของเพื่อนบ้านเพื่อดูว่ามีสิ่งใดที่ใกล้กว่าเพื่อนบ้านโดยตรงหรือไม่ นอกจากนี้หากข้อมูลอินพุตมีการสับอย่างดีอยู่แล้วให้สุ่มตัวอย่างในบล็อก

(เพิ่มเติม): ดูfastcluster ใน R และฉันเชื่อใน SciPy v0.11
สำหรับข้อความดู google ทุกคู่คล้ายคลึงกันค้นหา

ซ้ำ "มาตรการความแตกต่างกันตามความเหมาะสมอยู่ไกลความสำคัญมากขึ้นในการได้รับความสำเร็จกับการจัดกลุ่มกว่าทางเลือกของการจัดกลุ่มอัลกอริทึม" - เลือก-การจัดกลุ่ม-วิธี

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