Ich versuche, eine Liste von Clustering-Algorithmen zu erstellen, die Folgendes umfassen:
- Implementiert in R
- Arbeiten Sie mit Datenmatrizen mit geringer Dichte (keine (Nicht-) Ähnlichkeitsmatrizen), wie sie mit der Funktion sparseMatrix erstellt wurden .
Es gibt mehrere andere Fragen im Lebenslauf, die dieses Konzept behandeln, aber keine davon ist mit R-Paketen verknüpft, die direkt mit dünnen Matrizen arbeiten können:
- Clustering von großen und spärlichen Datensätzen
- Clustering von hochdimensionalen, spärlichen Binärdaten
- Auf der Suche nach einer spärlichen und hochdimensionalen Clustering-Implementierung
- Platzsparendes Clustering
Bisher habe ich in R genau eine Funktion gefunden, die spärliche Matrizen gruppieren kann:
Skmeans : sphärische kmeans
Aus dem skmeans-Paket . KMeans Verwendung Cosinus Abstand . Funktioniert mit dgTMatrix-Objekten. Bietet eine Schnittstelle zu einem genetischen k-means-Algorithmus, pclust, CLUTO, gmeans und kmndirs.
Beispiel:
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))
Die folgenden Algorithmen werden lobend erwähnt: Sie sind keine reinen Cluster-Algorithmen, sondern arbeiten mit spärlichen Matrizen.
apriori : Verbandsregeln Bergbau
Aus dem Paket arules . Funktioniert mit "Transaktionen" -Objekten, die aus ngCMatrix-Objekten erzwungen werden können. Kann verwendet werden, um Empfehlungen abzugeben.
Beispiel:
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 : spärliche SVD
Aus dem irlba-Paket . Führt SVD auf spärlichen Matrizen durch. Kann verwendet werden, um die Dimensionalität von dünnen Matrizen vor dem Clustering mit herkömmlichen R-Paketen zu reduzieren.
Beispiel:
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 der Affinitätsausbreitung
library(apcluster)
sim <- crossprod(M1)
sim <- sim / sqrt(sim)
clust_ap <- apcluster(sim) #Takes a while
Welche anderen Funktionen gibt es da draußen?