อัลกอริธึมการทำคลัสเตอร์ที่ทำงานกับข้อมูลที่กระจัดกระจาย [ปิด]


18

ฉันพยายามรวบรวมรายการอัลกอริทึมการจัดกลุ่มที่:

  1. ดำเนินการใน R
  2. ดำเนินการกับเมทริกซ์การกระจัดกระจายข้อมูล (ไม่ใช่ (dis) เมทริกซ์ความเหมือนกัน) เช่นที่สร้างขึ้นโดยฟังก์ชันsparseMatrix

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

  1. การทำคลัสเตอร์ชุดข้อมูลขนาดใหญ่และกระจัดกระจาย
  2. การทำคลัสเตอร์ข้อมูลไบนารีหร็อมแหร็มมิติสูง
  3. กำลังมองหาการใช้การจัดกลุ่มแบบกระจัดกระจายและมิติสูง
  4. การจัดกลุ่มที่ประหยัดพื้นที่

จนถึงตอนนี้ฉันพบฟังก์ชันหนึ่งฟังก์ชันใน R ที่สามารถจัดกลุ่มเมทริกซ์กระจัดกระจาย:

skmeans : kmeans ทรงกลม

จากแพคเกจ skmeans kmeans ใช้ระยะโคไซน์ ทำงานบนวัตถุ dgTMatrix จัดเตรียมอินเตอร์เฟสกับอัลกอริทึม k-mean, pclust, CLUTO, gmeans และ kmndirs

ตัวอย่าง:

library(Matrix)
set.seed(42)

nrow <- 1000
ncol <- 10000
i <- rep(1:nrow, sample(5:100, nrow, replace=TRUE))
nnz <- length(i)
M1 <- sparseMatrix(i = i,
                   j = sample(ncol, nnz, replace = TRUE),
                   x = sample(0:1 , nnz, replace = TRUE), 
                   dims = c(nrow, ncol))
M1 <- M1[rowSums(M1) != 0, colSums(M1) != 0]

library(skmeans)
library(cluster)
clust_sk <- skmeans(M1, 10, method='pclust', control=list(verbose=TRUE))
summary(silhouette(clust_sk))

อัลกอริทึมต่อไปนี้ได้รับการกล่าวถึงที่น่ายกย่อง: พวกเขาไม่ได้ค่อนข้างอัลกอริทึมการจัดกลุ่ม แต่ทำงานกับเมทริกซ์กระจัดกระจาย

apriori : การเชื่อมโยงกฎการขุด

จากแพคเกจ arules ดำเนินการกับ "การทำธุรกรรม" วัตถุซึ่งสามารถ coerced จากวัตถุ ngCMatrix สามารถใช้เพื่อให้คำแนะนำ

ตัวอย่าง:

library(arules)
M1_trans <- as(as(t(M1), 'ngCMatrix'), 'transactions')
rules <- apriori(M1_trans, parameter = 
list(supp = 0.01, conf = 0.01, target = "rules"))
summary(rules)

irlba : sparse SVD

จากแพคเกจ irlba SVD เกี่ยวกับเมทริกซ์แบบกระจาย สามารถใช้เพื่อลดมิติของเมทริกซ์กระจัดกระจายก่อนที่จะจัดกลุ่มด้วยแพ็คเกจ R แบบดั้งเดิม

ตัวอย่าง:

library(irlba)
s <- irlba(M1, nu = 0, nv=10)
M1_reduced <- as.matrix(M1 %*% s$v)
clust_kmeans <- kmeans(M1, 10)
summary(silhouette(clust_kmeans$cluster, dist(M1_reduced)))

apcluster : การจัดกลุ่ม Affinity การจัดกลุ่ม

library(apcluster)
sim <- crossprod(M1)
sim <- sim / sqrt(sim)
clust_ap <- apcluster(sim) #Takes a while

มีฟังก์ชั่นอื่น ๆ อีกบ้าง?


คุณหมายถึงกระจัดกระจายใน "ศูนย์จำนวนมาก" หรือใน "ค่าที่หายไปจำนวนมาก"?
cbeleites รองรับโมนิก้า

คำถามนี้ดูเหมือนจะไม่เป็นไปตามเกณฑ์หลายข้อที่stats.stackexchange.com/help/dont-ask : ทุกคำตอบจะถูกต้องเท่ากันคุณคาดหวังคำตอบเพิ่มเติมนอกเหนือจากที่มีให้และไม่มีปัญหาจริงที่จะเป็น แก้ไข
whuber

ฉันรู้นี้ได้ปิด แต่ฉันได้รับการสะดุดคำถามของคุณทั้งหมดเกี่ยวกับเรื่องนี้เท่าที่ผมเรียกดูเพื่อที่ผมมีปัญหาที่คล้ายกัน;) ผมพบว่าห้องสมุดนี้ซึ่งใช้นิสัยชอบความสัมพันธ์ที่สามารถทำงานร่วมกับการฝึกอบรมเบาบาง: bioinf.jku.at / software / apcluster
MarkeD

1
@ MarkeD ขอบคุณมาก! มันเป็นคำแนะนำซอฟต์แวร์ที่แย่มาก ๆ ที่ไม่ได้อยู่ที่นี่เพราะฉันพบว่าไม่มีที่ไหนออนไลน์ที่จะถามพวกเขา
Zach

3
อีกครั้งคำถามที่มีประโยชน์มากถูกปิด :( ถ้าคุณไม่รู้คำตอบก็อย่าโหวตให้ปิด!
MonsterMMORPG

คำตอบ:


1

ฉันไม่ได้ใช้ R บ่อยครั้งมากช้าและไม่มีการสนับสนุนการทำดัชนี แต่คำแนะนำซอฟต์แวร์จะถูกพิจารณานอกหัวข้ออยู่ดี

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

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

หรือ DBSCAN สิ่งที่ต้องการคือ "คำว่า" เพื่อนบ้าน " สามารถทำงานกับกราฟโดยพลการ เป็นเพียงว่าระยะทางแบบยุคลิดและเกณฑ์ Epsilon เป็นวิธีที่ใช้กันมากที่สุดในการคำนวณกราฟย่านที่ใช้

ป.ล. คำถามของคุณไม่แม่นยำมาก คุณอ้างถึงเมทริกซ์ข้อมูลเบาบางหรือเมทริกซ์ความคล้ายคลึงกันเบาบาง ?


1
matrixes ข้อมูลเบาบาง
ซัค

อัลกอริทึมส่วนใหญ่สามารถทำงานกับเมทริกซ์ข้อมูลที่กระจัดกระจาย เช่น AGNES, PAM, DBSCAN, OPTICS, CLARA, ...
Anony-Mousse - Reinstate Monica

ไม่แน่ใจว่าทำไมคุณถึงตอบถ้าคุณไม่รู้ด้วยซ้ำว่า R.
user3932000

ฉันรู้ว่าอาร์น่าจะดีกว่าผู้ใช้ R โดยเฉลี่ย ฉันรู้ว่าการประเมินที่ไม่ได้มาตรฐานใน R และฉันรู้ว่าโมดูลส่วนใหญ่เขียนด้วยภาษา C ดังนั้นเมื่อคุณผ่านเมทริกซ์แบบเบาบางมันจะถูกคัดลอกไปยังเมทริกซ์แบบสัมผัสก่อนส่งผ่านไปยังโค้ดจริง และทุกแพ็คเกจใช้วิธีที่แตกต่างในการทำเช่นนั้น ... มันไม่ได้มีประสิทธิภาพ คุณไม่ได้เลือก R หากคุณต้องการประสิทธิภาพหรือการรวมที่ดีหรือความเข้ากันได้ย้อนหลังหรือการพัฒนาที่มีการประสานงาน
Anony-Mousse - Reinstate Monica
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.