กำหนดกลุ่มข้อมูล 1d ที่แตกต่างจากฐานข้อมูล


24

ฉันมีตารางฐานข้อมูลของการถ่ายโอนข้อมูลระหว่างโหนดที่แตกต่างกัน นี่เป็นฐานข้อมูลขนาดใหญ่ (มีการโอนเกือบ 40 ล้านครั้ง) หนึ่งในแอ็ตทริบิวต์คือจำนวนไบต์ (nbytes) ที่ถ่ายโอนซึ่งมีช่วงตั้งแต่ 0 ไบต์ถึง 2 tera ไบต์ ฉันต้องการคลัสเตอร์ nbytes เช่นนั้นที่ได้รับ k กลุ่มบางการถ่ายโอน x1 เป็นของคลัสเตอร์ k1, x2 transfters เพื่อ k2 ฯลฯ

จากคำศัพท์ที่ฉันใช้คุณอาจเดาได้ว่าฉันกำลังจะไปกับอะไร: K-mean นี่เป็นข้อมูล 1d เนื่องจาก nbytes เป็นคุณสมบัติเดียวที่ฉันสนใจ เมื่อฉันกำลังค้นหาวิธีการที่แตกต่างกันนี้ฉันเห็น EM ถูกพูดถึงสองสามครั้งพร้อมกับวิธีการไม่จัดกลุ่ม ฉันต้องการทราบเกี่ยวกับมุมมองของคุณเกี่ยวกับวิธีการแก้ไขปัญหานี้ (โดยเฉพาะอย่างยิ่งว่าจะจัดกลุ่มหรือไม่จัดกลุ่ม)

ขอบคุณ!


"การถ่ายโอน x1", "การถ่ายโอน x2" ฯลฯ คืออะไร? "transfer type" เป็นตัวแปรตัวที่สองหรือไม่?
Peter Flom - Reinstate Monica

การถ่ายโอน x1 เป็นวิธีที่ฉันจะบอกได้ว่าการถ่ายโอน 500 รายการนี้มีขนาดการโอนรอบค่าบางค่า (นี่จะเป็นค่าเฉลี่ยสำหรับคลัสเตอร์นั้นใน k-mean)
Shaun

5
ฉันไม่ใช่ผู้เชี่ยวชาญในการทำคลัสเตอร์ แต่มีข้อมูลมาก & มีเพียง 1 มิติฉันสงสัยว่าคุณสามารถสร้างความหนาแน่นของเคอร์เนลโดยใช้แบนด์วิดท์ที่แตกต่างกันและดูว่าคุณพบโหมด / ยอดเขามากแค่ไหน มันจะมีประโยชน์สำหรับคุณ
gung - Reinstate Monica

1
คุณถามว่าจะทำคลัสเตอร์หรือไม่ เป้าหมายของคุณคืออะไรจากการรวมกลุ่ม? คุณจะใช้กลุ่มเพื่อจุดประสงค์อื่นหรือไม่หรือนี่คือผลประโยชน์ทางทฤษฎี?
Peter Flom - Reinstate Monica

แอตทริบิวต์อื่น ๆ จากตารางคือชื่อผู้ใช้วันที่เริ่มต้นและวันที่สิ้นสุด ความหวังของฉันคือการจัดกลุ่มการถ่ายโอนตามขนาดการถ่ายโอนฉันสามารถอ้างอิงคุณลักษณะอื่น ๆ ของการถ่ายโอนแบบพิเศษเพื่อดูว่าใครกำลังถ่ายโอนจำนวนเท่าใดในเดือนใดของปี เราจะทำอย่างไรกับข้อสังเกตนี้ฉันยังไม่รู้ แต่นั่นเป็นสิ่งที่ฉันจะไป
Shaun

คำตอบ:


43

ในข้อมูลหนึ่งมิติอย่าใช้การวิเคราะห์กลุ่ม

การวิเคราะห์กลุ่มมักเป็นเทคนิคหลายตัวแปร หรือให้ฉันใช้วิธีอื่นดีกว่า: สำหรับข้อมูลมิติเดียว - ซึ่งจัดเรียงอย่างสมบูรณ์ - มีเทคนิคที่ดีกว่ามาก การใช้ k-mean และเทคนิคที่คล้ายคลึงกันที่นี่คือของเสียทั้งหมดยกเว้นว่าคุณใช้ความพยายามมากพอที่จะปรับให้เหมาะสมสำหรับกรณี 1-d

เพื่อให้คุณตัวอย่าง: สำหรับ k- หมายความว่าเป็นเรื่องปกติที่จะใช้วัตถุสุ่ม k เป็นเมล็ดเริ่มต้น สำหรับข้อมูลมิติเดียวการทำได้ดีกว่าทำได้ง่ายเพียงแค่ใช้ควอนไทล์ที่เหมาะสม (1 / 2k, 3 / 2k, 5 / 2k เป็นต้น) หลังจากเรียงลำดับข้อมูลหนึ่งครั้งแล้วปรับให้เหมาะสมจากจุดเริ่มต้นนี้ อย่างไรก็ตามข้อมูล 2D ไม่สามารถจัดเรียงได้อย่างสมบูรณ์ และในตารางจะมีเซลล์ว่างอยู่

ฉันจะไม่เรียกมันว่าเป็นคลัสเตอร์ ฉันจะเรียกมันว่าช่วงเวลา สิ่งที่คุณต้องการทำจริงๆคือการปรับขอบเขตของช่วงเวลาให้เหมาะสม หากคุณใช้วิธี k ก็จะทดสอบแต่ละวัตถุถ้ามันควรจะย้ายไปยังกลุ่มอื่น ที่ไม่สมเหตุสมผลใน 1D: ต้องตรวจสอบเฉพาะวัตถุที่เส้นขอบช่วงเวลา เห็นได้ชัดว่าเร็วกว่ามากเนื่องจากมีเพียงวัตถุ 2k เท่านั้น หากพวกเขาไม่ได้ต้องการช่วงเวลาอื่น ๆ วัตถุกลางมากขึ้นจะไม่อย่างใดอย่างหนึ่ง

คุณอาจต้องการที่จะดูเป็นเทคนิคเช่นการเพิ่มประสิทธิภาพของเที่ยวบินไปเจงส์ธรรมชาติเช่น

หรือคุณสามารถทำการประมาณค่าความหนาแน่นของเคอร์เนลและมองหา local minima ของความหนาแน่นเพื่อแยก สิ่งที่ดีคือคุณไม่จำเป็นต้องระบุ k สำหรับสิ่งนี้!

PS โปรดใช้ฟังก์ชั่นการค้นหา ต่อไปนี้เป็นคำถามเกี่ยวกับการจัดกลุ่มข้อมูลแบบ 1 มิติที่คุณพลาด


Quantiles ไม่จำเป็นต้องเห็นด้วยกับกลุ่ม การกระจายแบบ 1d สามารถมี 3 กลุ่มธรรมชาติที่สองเก็บ 10% ของข้อมูลแต่ละรายการและสุดท้ายมี 80% ของข้อมูล ดังนั้นฉันคิดว่ามันเป็นไปได้ที่จะจัดกลุ่มที่นี่แม้ว่าฉันจะเห็นว่ามันเหมาะสมที่จะดำเนินการโดยการเลือกเมล็ดอย่างชาญฉลาด ฯลฯ หรือใช้แนวคิดอื่น
Bitwise

ควอนไทล์อาจเป็นจุดเริ่มต้นที่ดีสำหรับการปรับให้เหมาะสมนั่นคือสิ่งที่ฉันพูดถึง และเพื่อให้เป็นตัวอย่างของสิ่งที่คุณสามารถทำได้ใน 1D ที่ใช้งานไม่ได้ใน 2 มิติ
Anony-Mousse

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

3
Jenks เป็นวิธี k ใน 1D
whuber

1
@ โฮเบอร์แม้ว่ามันจะเป็นเรื่องเชิงคณิตศาสตร์ก็ตามฉันหวังว่าเขาฉลาดพอที่จะใช้ประโยชน์จากข้อมูลที่สามารถสั่งซื้อได้ หากคุณใช้วิธี Lloyd ในการทำข้อมูล k-1 คุณจะโง่เพราะคุณทำการคำนวณจำนวนมากที่คุณสามารถข้ามได้ และสำหรับคนส่วนใหญ่ k-mean คือ Lloyd และบางคนสนใจที่จะหลีกเลี่ยงการคำนวณซ้ำโดยไม่จำเป็น
Anony-Mousse

1

เป็นคำถามของคุณหรือไม่ว่าคุณควรทำคลัสเตอร์หรือวิธีใดที่คุณควรใช้เพื่อทำคลัสเตอร์

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

เกี่ยวกับประเภทของการจัดกลุ่ม k-mean ควรใช้ได้ถ้ามีกลุ่ม "ของจริง" ในข้อมูล หากคุณไม่เห็นกลุ่มใด ๆ ในฮิสโตแกรมก็ไม่ได้ทำการจัดกลุ่มอย่างเหมาะสมเนื่องจากการแบ่งช่วงข้อมูลของคุณจะให้กลุ่มที่ถูกต้อง (หรือในกรณีที่มีการเริ่มต้นแบบสุ่มของ kmeans คุณจะได้รับกลุ่มที่แตกต่างกัน การวิ่งแต่ละครั้ง)


0

คุณสามารถลอง:

  1. KMeans, GMM หรือวิธีการอื่นโดยระบุ n_clusters = no ของพีคในพล็อตความหนาแน่นเคอร์เนล

  2. KMeans, GMM หรือวิธีการอื่นโดยกำหนดหมายเลขที่เหมาะสมที่สุด ของกลุ่มตามตัวชี้วัดบางอย่าง ข้อมูลเพิ่มเติม: [ที่นี่] https://en.wikipedia.org/wiki/Determining_the_number_of_clusters_in_a_data_set

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