การทำคลัสเตอร์แบบกระจาย


10

ฉันมีหลายดิสทริบิวชัน (10 ดิสทริบิวชั่นในรูปด้านล่าง) การกระจาย

ในความเป็นจริงเหล่านี้คือฮิสโทแกรม: มี 70 ค่าในแกน x ซึ่งเป็นขนาดของอนุภาคบางอย่างในสารละลายและสำหรับแต่ละค่าของ x ค่าที่สอดคล้องกันของ y คือสัดส่วนของอนุภาคที่มีขนาดประมาณค่าของ x

ฉันต้องการจัดกลุ่มการกระจายเหล่านี้ ขณะนี้ฉันใช้การจัดกลุ่มแบบลำดับชั้นกับระยะทางแบบยุคลิดเช่น ฉันไม่พอใจกับการเลือกระยะทาง ฉันได้ลองระยะทางข้อมูลเชิงทฤษฎีเช่น Kullback-Leibler แต่มีศูนย์อยู่ในข้อมูลจำนวนมากและสิ่งนี้ทำให้เกิดปัญหา คุณมีข้อเสนอระยะทางที่เหมาะสมและ / หรือวิธีการจัดกลุ่มอื่นหรือไม่

คำตอบ:


16

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

ดังนั้นการเตรียมข้อมูลในรูปแบบเช่น (A, B, ... ฯลฯ คือการแจกแจง)

Value CumProp_A CumProp_B ...
1       .01       .05
2       .12       .14
...     ...       ...
70      1.00      1.00

และคำนวณเมทริกซ์ระยะทางระหว่างการแจกแจง ส่งไปยังการจัดกลุ่มตามลำดับชั้น (ฉันขอแนะนำวิธีการลิงก์ที่สมบูรณ์) ระยะทางเท่าไหร่ ถ้าคุณคิดว่าเส้นโค้งสะสมสองเส้นนั้นแตกต่างกันมากถ้าอยู่ห่างกันเพียงหนึ่งค่า ( b ) ให้ใช้ระยะทาง Chebyshev หากคุณคิดว่าเส้นโค้งสะสมสองเส้นนั้นมีความแตกต่างกันมากหากมีความมั่นคงเหนือเส้นโค้งอื่นตามค่าช่วงกว้าง ( c ) ให้ใช้ระยะห่างแบบออโตคอร์เรทีฟ ในกรณีที่ความแตกต่างในท้องถิ่นระหว่างเส้นโค้งสำคัญ ( a ) ให้ใช้ระยะทางแมนฮัตตัน

ป้อนคำอธิบายรูปภาพที่นี่

PS Autocorrelative ระยะทางเป็นเพียงค่าสัมประสิทธิ์ที่ไม่ปกติของความสัมพันธ์อัตโนมัติของความแตกต่างระหว่างเส้นโค้งสะสม X และ Y:

Σผม=2ยังไม่มีข้อความ(X-Y)ผม* * * *(X-Y)ผม-1


ยอดเยี่ยม - ขอบคุณมาก! พรุ่งนี้ฉันจะทำอย่างนี้
Stéphane Laurent

ระยะ autocorrelative อาจเป็นลบ มันเป็นคำจำกัดความที่ดีหรือไม่?
Stéphane Laurent

ฉันลืมถามคำถามอื่น: ทำไมคุณถึงแนะนำการเชื่อมโยงที่สมบูรณ์?
Stéphane Laurent

คุณสามารถตั้งค่าเป็นศูนย์ผลิตภัณฑ์แง่ลบถ้ามี ฉันไม่ได้ยืนยันในการเชื่อมโยงที่สมบูรณ์ แต่ฉันจะเตือนวิธี "เรขาคณิต" เช่น Ward หรือ centroid เพราะระยะทางไม่ใช่แบบยุคลิด ฉันยังคิดว่าวิธี "dilatative" เช่นการเชื่อมโยงที่สมบูรณ์จะเป็นที่ชื่นชอบของคุณ
ttnphns

4

หากข้อมูลของคุณเป็นฮิสโตแกรมคุณอาจต้องการดูฟังก์ชันระยะทางที่เหมาะสมสำหรับสิ่งนั้นเช่น "ระยะทางแยกฮิสโทแกรม"

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


ขอบคุณ แต่ฉันกำลังมองหาเครื่องมือที่มีอยู่ใน R หรือ SAS จากนั้นการแจกแจงสิบรายการข้างบนเป็นเพียงตัวอย่างเดียวฉันมีชุดการแจกแจงแบบกลุ่มจำนวนมาก
Stéphane Laurent

2

คุณอาจต้องการใช้เทคนิคการดึงคุณสมบัติบางอย่างเพื่อให้ได้ descriptor สำหรับ k-mean หรือการทำคลัสเตอร์ชนิดอื่น

วิธีการขั้นพื้นฐานคือเพื่อให้เหมาะสมกับการแจกแจงบางอย่างกับฮิสโตแกรมของคุณและใช้พารามิเตอร์ของมันเป็นคำอธิบาย ตัวอย่างเช่นคุณดูเหมือนจะมีการแจกแจงแบบ bimodal ที่คุณสามารถอธิบายด้วย 2 วิธีและ 2 ส่วนเบี่ยงเบนมาตรฐาน

ความเป็นไปได้อีกอย่างคือการจัดกลุ่มองค์ประกอบหลักสองหรือสามชิ้นแรกของการนับฮิสโตแกรม

อีกวิธีหนึ่งคือการใช้เวฟเล็ต

หน้านี้จะอธิบายวิธีการทำเช่นนั้นเมื่อต้องรับมือกับ spikes นอกเซลล์ ข้อมูลแตกต่างกันไป แต่ความคิดควรจะเหมาะสมกับกรณีของคุณ คุณจะพบการอ้างอิงจำนวนมากที่ด้านล่าง

http://www.scholarpedia.org/article/Spike_sorting

ใน R คุณสามารถคำนวณส่วนประกอบหลักของยอดเขาโดยใช้ฟังก์ชันprincompหรือ ที่นี่คุณจะพบการสอนเกี่ยวกับ PCA ใน Rprcomp

สำหรับเวฟเล็ตคุณสามารถดูwaveletsแพ็คเกจได้

k-หมายถึงการจัดกลุ่มสามารถทำได้โดยใช้kmeansฟังก์ชั่น


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