การทำคลัสเตอร์เมทริกซ์ไบนารี


22

ฉันมีเมทริกซ์กึ่งกึ่งกลางของคุณสมบัติไบนารีของมิติ 250k x 100 แต่ละแถวเป็นผู้ใช้และคอลัมน์เป็น "แท็ก" แบบไบนารีของพฤติกรรมผู้ใช้บางอย่างเช่น "Likes_cats"

user  1   2   3   4   5  ...
-------------------------
A     1   0   1   0   1
B     0   1   0   1   0
C     1   0   0   1   0

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

  • PCA

  • การสร้างเมทริกซ์ความคล้ายคลึงกันของ Jaccardติดตั้งคลัสเตอร์แบบลำดับขั้นจากนั้นใช้ "โหนด" ด้านบน

  • K-มีเดีย

  • K-medoids

  • พร็อกซิมัส ?

  • แอกเนส

จนถึงตอนนี้ฉันประสบความสำเร็จในการใช้การจัดกลุ่มแบบลำดับชั้น แต่ฉันไม่แน่ใจว่าเป็นวิธีที่ดีที่สุดที่จะไป ..

tags = read.csv("~/tags.csv")
d = dist(tags, method = "binary")
hc = hclust(d, method="ward")
plot(hc)
cluster.means = aggregate(tags,by=list(cutree(hc, k = 6)), mean)

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


1
สำหรับโหนดขนาดใหญ่ (หลายโหนด) และข้อมูลมิติสูงมันก็คุ้มค่าที่จะลองอัลกอริทึมการจัดกลุ่มกราฟ (โดยใช้ความคล้ายคลึงกันของ tanimoto และวิธีการเช่นการจัดกลุ่ม Louvain, RNSC, mcl) ฉันมีข้อสงสัยว่าประเภทข้อมูลของคุณจะสร้างกลุ่มที่มีความหมายหรือไม่ (แน่นอนว่ามันอาจจะดี) แต่ข้อสงสัยเหล่านั้นเกี่ยวข้องกับการจัดกลุ่มโดยทั่วไปไม่ใช่เฉพาะการจัดกลุ่มประเภทใดประเภทหนึ่งโดยเฉพาะ PCA เป็นสิ่งที่ต้องลองอย่างแน่นอน
micans

6
พูดตามตรงฉันประหลาดใจที่คำถามนี้ดึงดูดความสนใจเล็กน้อย ทำไมถึงเป็นเช่นนั้น? สำหรับฉันแล้วดูเหมือนคำถามที่น่าสนใจอย่างยิ่ง
Dror Atariah

คำตอบ:


9

การวิเคราะห์ระดับแฝงเป็นวิธีหนึ่งที่เป็นไปได้

รับการแจกแจงความน่าจะเป็นดังต่อไปนี้โดยที่ A, B และ C สามารถใช้กับค่า 1 หรือ 0

P(Ai,Bj,Ck)

หากสิ่งเหล่านี้เป็นอิสระจากกันเราก็คาดหวังที่จะเห็น:

P(Ai,Bj,Ck)=P(Ai)P(Bj)P(Ck)

เมื่อความเป็นไปได้นี้ถูกกำจัดไปแล้วเราอาจตั้งสมมติฐานว่าการพึ่งพาใด ๆ ที่สังเกตได้นั้นเกิดจากการจัดกลุ่มค่าภายในกลุ่มย่อยที่ไม่ได้สังเกตเห็น เพื่อทดสอบแนวคิดนี้เราสามารถประเมินโมเดลต่อไปนี้:

P(Ai,Bj,Ck)=P(Xn)P(Ai|Xn)P(Bj|Xn)P(Ck|Xn)

Xnn

5n10และ "เลือก" แบบจำลองที่ดีที่สุดตามทฤษฎีความน่าจะเป็นแบบดัชนีและคุณภาพการจัดหมวดหมู่ (ซึ่งสามารถประเมินได้โดยการคำนวณความน่าจะเป็นด้านหลังของสมาชิกชั้นเรียน )

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


เยี่ยมมากน่าสนใจ คุณจะพูดว่าอะไรคือประโยชน์ของการใช้เทคนิคนั้นกับผู้อื่น
wije

ข้อดีอย่างหนึ่งคือการทำคลัสเตอร์นั้นคลุมเครือทำให้คุณสามารถพิจารณาความไม่แน่นอนในการมอบหมายชั้นเรียนในภายหลัง อีกประการหนึ่งนั่นเป็นเพราะมันเป็นวิธีการตามแบบ คุณจะได้รับดัชนีความน่าจะเป็นตามแบบที่สามารถช่วยเลือกรูปแบบได้ หลักสูตรนี้มีค่าใช้จ่ายในการตั้งสมมติฐานการกระจายสินค้า ... ฉันแน่ใจว่าวิธีการที่ถูกต้องอื่น ๆ จะมีการแลกเปลี่ยนของตัวเอง
DL Dahly

5

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

ชุดอัลกอริทึมที่เน้นเวกเตอร์ตามปกติไม่สมเหตุสมผล ยกตัวอย่างเช่นค่า K จะสร้างค่าเฉลี่ยที่ไม่ใช่เลขฐานสองอีกต่อไป


ไม่เหมาะสมที่จะใช้รายการที่ใช้บ่อยแม้ว่าฉันต้องการที่จะจัดกลุ่มผู้ใช้มากกว่าแท็ก (คอลัมน์)?
wije

1
IMHO ใช่ แต่ด้วยเหตุผลที่ชัดเจนกฎการเชื่อมโยงไม่ใช่การแบ่งพาร์ติชันที่เข้มงวดของชุดข้อมูล ผู้ใช้อาจเป็นสมาชิกของ "ชุดรายการที่พบบ่อย" มากกว่าหนึ่งรายการ เช่นผู้ใช้อาจเป็นแฟนแมวและแฟนสุนัข ทั้งสองกลุ่มไม่ได้ถูกบังคับให้ต้องแยกออกจากกัน
Anony-Mousse

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