다음과 같은 클러스터링 알고리즘 목록을 컴파일하려고합니다.
- R로 구현
- sparseMatrix 함수에 의해 생성 된 것과 같이 희소 데이터 행렬 (유사 행렬이 아님)에서 작동합니다.
CV에는이 개념을 설명하는 몇 가지 다른 질문이 있지만 희소 행렬에서 직접 작동 할 수있는 R 패키지에 대한 링크는 없습니다.
지금까지 R에서 희소 행렬을 군집화 할 수있는 정확히 하나의 함수를 찾았습니다.
skmeans : 구형 kmeans
로부터 skmeans 패키지 . 코사인 거리를 사용하는 kmeans . dgTMatrix 객체에서 작동합니다. 유전자 k- 평균 알고리즘, 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 패키지 . 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 : 스파 스 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 : 선호도 전파 클러스터링
library(apcluster)
sim <- crossprod(M1)
sim <- sim / sqrt(sim)
clust_ap <- apcluster(sim) #Takes a while
다른 기능은 무엇입니까?