Estoy tratando de compilar una lista de los algoritmos de agrupamiento que son:
- Implementado en R
- Operar en los escasos datos de las matrices (no (dis)matrices de similitud), tales como los creados por el sparseMatrix función.
Hay varias otras preguntas en CV que hablar de este concepto, pero ninguno de ellos enlace a R paquetes que pueden operar directamente sobre matrices dispersas:
- La agrupación grandes y dispersas de los conjuntos de datos
- La agrupación de alta dimensión escasos datos binarios
- Buscando dispersas y de grandes dimensiones agrupación de aplicación
- Espacio-eficiente de la agrupación
Hasta ahora, he encontrado exactamente una función en R que puede clúster de matrices dispersas:
skmeans: esférica kmeans
Desde el skmeans paquete. kmeans el uso de coseno de distancia. Opera en dgTMatrix objetos. Proporciona una interfaz para un genéticos k-means el algoritmo, pclust, CLUTO, gmeans, y kmndirs.
Ejemplo:
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))
Los siguientes algoritmos de obtener honerable menciona: el que no está muy algoritmos de clustering, pero que operan en matrices dispersas.
apriori: las reglas de la asociación de minería de datos
Desde el arules paquete. Opera en "transacciones" de los objetos, que puede ser coaccionado de ngCMatrix objetos. Puede ser utilizado para hacer recomendaciones.
ejemplo:
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: escasa SVD
Desde el irlba paquete. ¿SVD en matrices dispersas. Puede ser utilizado a la reducción de la dimensionalidad de las matrices dispersas antes de agrupación con la tradicional R paquetes.
ejemplo:
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: la Afinidad de la Propagación de la Agrupación
library(apcluster)
sim <- crossprod(M1)
sim <- sim / sqrt(sim)
clust_ap <- apcluster(sim) #Takes a while
¿Qué otras funciones están ahí fuera?