ฉันพยายามรวบรวมรายการอัลกอริทึมการจัดกลุ่มที่:
- ดำเนินการใน R
- ดำเนินการกับเมทริกซ์การกระจัดกระจายข้อมูล (ไม่ใช่ (dis) เมทริกซ์ความเหมือนกัน) เช่นที่สร้างขึ้นโดยฟังก์ชันsparseMatrix
มีคำถามอื่น ๆ อีกมากมายเกี่ยวกับประวัติย่อที่กล่าวถึงแนวคิดนี้ แต่ไม่มีคำถามใดที่เชื่อมโยงกับแพ็คเกจ R ที่สามารถใช้งานได้โดยตรงกับการฝึกอบรมแบบกระจัดกระจาย:
- การทำคลัสเตอร์ชุดข้อมูลขนาดใหญ่และกระจัดกระจาย
- การทำคลัสเตอร์ข้อมูลไบนารีหร็อมแหร็มมิติสูง
- กำลังมองหาการใช้การจัดกลุ่มแบบกระจัดกระจายและมิติสูง
- การจัดกลุ่มที่ประหยัดพื้นที่
จนถึงตอนนี้ฉันพบฟังก์ชันหนึ่งฟังก์ชันใน 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
มีฟังก์ชั่นอื่น ๆ อีกบ้าง?