อัลกอริทึมใดที่ฉันควรใช้เพื่อจัดกลุ่มชุดข้อมูลไบนารีขนาดใหญ่เป็นไม่กี่หมวดหมู่


11

ฉันมีเมทริกซ์ขนาดใหญ่ (650K แถว * 62 คอลัมน์) ของข้อมูลไบนารี (รายการ 0-1 เท่านั้น) เมทริกซ์ส่วนใหญ่จะกระจัดกระจาย: เติมประมาณ 8%

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

กรุณาช่วย.


ฉันไม่สามารถแสดงความคิดเห็น b / c ของตัวแทน 1 คนของฉันดังนั้นฉันจึงต้องพิมพ์คำตอบนี้ คุณอาจมอง Jaccard คล้ายคลึงกัน ฉันคิดว่าหลาม scipy มีการใช้งานของมัน Jaccard ...
gobrewers14

มีเหตุผลใดที่จะสมมติว่าข้อมูลตกอยู่ในกลุ่มห้าอย่างน้อยที่สุด? คุณสนใจการจัดกลุ่มแถวจริง ๆ หรือคุณสนใจในความสัมพันธ์ระหว่าง 62 ลักษณะที่เข้ารหัสในบิตเวคเตอร์? หากหลังแล้วเทคนิคอื่น ๆ มีความเหมาะสมมากขึ้น
micans

คำตอบ:


4

คุณกำลังถามคำถามผิด

แทนที่จะถามว่า "อัลกอริธึมอะไร" คุณควรถามว่า " หมวดหมู่ / คลัสเตอร์ที่มีความหมายในแอปพลิเคชันของคุณคืออะไร"

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

คุณอาจต้องการลองใช้โหมด k แทน IIRC นี่เป็นตัวแปรที่หมายถึงการใช้งานจริงกับข้อมูล categorial และข้อมูลไบนารี่เป็น categorial บ้าง (แต่ Sparsity อาจฆ่าคุณ)

แต่ก่อนอื่นคุณลบรายการที่ซ้ำกันเพื่อทำให้ข้อมูลของคุณง่ายขึ้นและนำคอลัมน์ที่ไม่ซ้ำกัน / ว่างออกหรือไม่

APRIORI หรือแนวทางที่คล้ายกันอาจมีความหมายมากกว่าสำหรับปัญหาของคุณ

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


คุณช่วยอธิบายได้ไหมว่าทำไม "อย่าใช้กับระยะทางแฮมมิง" มันอาจสมเหตุสมผลหลังจากที่มีอยู่ใน Matlab ฉันไม่รังเกียจที่จะเปิดคำถามใหม่ถ้ามันสมเหตุสมผล
Dror Atariah

เพราะค่าเฉลี่ย ค่าเฉลี่ยเลขคณิตนั้นไม่มีความหมายกับระยะการแฮ็กหรือข้อมูลไบนารี ใช้โหมดหรือmedoidแทน
เลิกเล่น - Anony-Mousse

เพียงเพื่อให้แน่ใจว่าฉันเข้าใจถูกต้อง: matlab ใช้ค่าเฉลี่ยเลขคณิตเมื่ออัปเดตเซนทรอยด์เมื่อใช้ k-mean พร้อมกับ hamming metric นั่นถูกต้องใช่ไหม? วิธีที่ถูกต้องในการใช้ตัวชี้วัดนี้ใน MATLAB คืออะไร?
Dror Atariah

k- หมายถึงเรียกว่า k- หมายถึงเพราะมันใช้ค่าเฉลี่ย มิฉะนั้นจะเรียกว่า k-medoids, k-modes ฯลฯ ค่าเฉลี่ยนั้นดีสำหรับ L2 - ผลรวมของการเบี่ยงเบนกำลังสอง
จบแล้ว - Anony-Mousse

ดังนั้น MATLAB จึงใช้ k- หมายถึงร่วมกับตัวชี้วัดการแฮ็ก มันไม่สมเหตุสมผลเลย
Dror Atariah

3

บางทีฉันอาจจะสายไปนิดหน่อย แต่อาจเป็นประโยชน์สำหรับบางคนในอนาคต

Adonate Resonance Theory เป็นอัลกอริทึมที่ดีสำหรับปัญหาการจำแนกเลขฐานสอง ตรวจสอบเกี่ยวกับ ART 1. ข้อมูลเพิ่มเติมสามารถดูได้ที่หนังสือNeural Network Designฟรีในบทที่ 19

เครือข่ายนี้รวมความคิดทางชีวภาพที่ดีและการใช้คณิตศาสตร์ที่ดี อัลกอริทึมนี้ใช้งานง่ายและในหนังสือเล่มนี้คุณยังสามารถหาคำแนะนำทีละขั้นตอนเกี่ยวกับวิธีสร้างลักษณนามนี้


2

อัลกอริทึมแบบคลาสสิกสำหรับการจัดกลุ่มข้อมูลแบบไบนารีคือโมเดล Bernoulli Mixture แบบจำลองสามารถใช้วิธีการแบบเบย์และสามารถใช้แบบจำลอง EM ได้ด้วย (ความคาดหวังสูงสุด) คุณสามารถค้นหารหัสไพ ธ อนตัวอย่างทั่ว GitHub ในขณะที่เก่ามีประสิทธิภาพมากขึ้น แต่ก็ยากขึ้น ฉันใช้โมเดล C # ใน GitHub (ใช้ Infer.NET ซึ่งมีใบอนุญาตที่ จำกัด !)

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

ในการตั้งค่าแบบเบย์การมอบหมายก่อนหน้าของคลัสเตอร์มากกว่านั้นคือการกระจาย Dirichlet นี่คือสถานที่ที่จะใส่นักบวชหากคุณเชื่อว่ากลุ่มบางกลุ่มมีขนาดใหญ่กว่ากลุ่มอื่น สำหรับแต่ละคลัสเตอร์คุณต้องระบุก่อนหน้านี้คือการแจกแจงแบบเบต้าสำหรับการกระจายแต่ละครั้งของ Bernoulli โดยทั่วไปสิ่งนี้ก่อนหน้าคือเบต้า (1,1) หรือชุดเครื่องแบบ สุดท้ายอย่าลืมเริ่มต้นการกำหนดคลัสเตอร์แบบสุ่มเมื่อได้รับข้อมูล สิ่งนี้จะทำลายความสมมาตรและตัวอย่างจะไม่ติด

มีคุณสมบัติเจ๋ง ๆ หลายอย่างของรุ่น BMM ในการตั้งค่าแบบเบย์:

  1. การจัดกลุ่มออนไลน์ (ข้อมูลสามารถมาเป็นสตรีมได้)

  2. โมเดลสามารถใช้เพื่ออนุมานมิติที่หายไป

วิธีแรกมีประโยชน์มากเมื่อชุดข้อมูลมีขนาดใหญ่มากและไม่เหมาะกับ RAM ของเครื่อง สามารถใช้งานที่สองในงานการใส่ข้อมูลที่ขาดหายไปทุกประเภทเช่น การกำหนดครึ่งที่ขาดหายไปของภาพ MNIST ไบนารี

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