J'essaie de compiler une liste d'algorithmes de clustering qui sont:
- Mis en œuvre dans R
- Opérer sur des matrices de données éparses (pas des matrices de (dis) similitude), telles que celles créées par la fonction sparseMatrix .
Il y a plusieurs autres questions sur CV qui discutent de ce concept, mais aucune d'entre elles n'est liée à des packages R qui peuvent fonctionner directement sur des matrices clairsemées:
- Regroupement de jeux de données volumineux et clairsemés
- Regroupement de données binaires clairsemées de grande dimension
- Recherche d'implémentation de clustering clairsemée et de grande dimension
- Cluster efficace dans l'espace
Jusqu'à présent, j'ai trouvé exactement une fonction dans R qui peut regrouper des matrices clairsemées:
skmeans : kmeans sphériques
Du paquet skmeans . kmeans utilisant la distance cosinus . Fonctionne sur les objets dgTMatrix. Fournit une interface à un algorithme génétique k-means, pclust, CLUTO, gmeans et kmndirs.
Exemple:
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))
Les algorithmes suivants obtiennent des mentions honorables: ils ne sont pas tout à fait des algorithmes de clustering, mais fonctionnent sur des matrices clairsemées.
apriori : l'association règle l'exploitation minière
Du paquet arules . Fonctionne sur les objets "transactions", qui peuvent être forcés à partir d'objets ngCMatrix. Peut être utilisé pour faire des recommandations.
exemple:
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 : SVD clairsemée
Du forfait irlba . Est-ce que SVD sur des matrices clairsemées. Peut être utilisé pour réduire la dimensionnalité des matrices clairsemées avant le regroupement avec les packages R traditionnels.
exemple:
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 : Clustering de propagation d'affinité
library(apcluster)
sim <- crossprod(M1)
sim <- sim / sqrt(sim)
clust_ap <- apcluster(sim) #Takes a while
Quelles sont les autres fonctions disponibles?