21 votos

Algoritmos que operan sobre datos escasos matricies de clustering

Estoy tratando de compilar una lista de los algoritmos de agrupamiento que son:

  1. Implementado en R
  2. 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:

  1. La agrupación grandes y dispersas de los conjuntos de datos
  2. La agrupación de alta dimensión escasos datos binarios
  3. Buscando dispersas y de grandes dimensiones agrupación de aplicación
  4. 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?

1voto

Amadiere Puntos 5606

Yo no uso R. es a menudo muy lento y tiene casi nada de la indización. Pero el software de recomendaciones sean tomadas en cuenta con el tema de todos modos.

Tenga en cuenta que un montón de algoritmos no se preocupan de cómo almacenar los datos. Si usted prefiere tener una matriz dispersa, que debe ser su elección, no la de los algoritmos de elección.

Las personas que usan demasiado R tienden a atascarse en el pensamiento en operaciones de matriz (porque esa es la única manera de escribir un código rápido en R). Pero que es una forma limitada de pensar. Por ejemplo k-means: no importa. En particular, no utiliza pares de distancias. Sólo se necesita una manera de calcular la varianza de la contribución; que es equivalente a calcular la distancia Euclídea al cuadrado.

O DBSCAN. Todo lo que necesita es un "vecino" del predicado. Puede trabajar con grafos arbitrarios; es sólo que la distancia Euclidiana y el Epsilon umbral es la forma más común de calcular el barrio gráfico que utiliza.

P. S. Tu pregunta no es muy precisa. ¿Te refieres a los datos dispersos matrices o escasa matrices de similitud?

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X