Description Usage Arguments Value References Examples
View source: R/subspace_EKSS.R
Ensembles of K-Subspaces method exploits multiple runs of K-Subspace Clustering and
uses consensus framework to aggregate multiple clustering results
to mitigate the effect of random initializations. When the results are merged,
it zeros out n-q number of values in a co-occurrence matrix. The paper
suggests to use large number of runs (B
) where each run may not require
large number of iterations (iter
) since the main assumption of the
algorithm is to utilize multiple partially-correct information. At the extreme case,
iteration iter
may be set to 0 for which the paper denotes it as EKSS-0.
1 |
data |
an (n\times p) matrix of row-stacked observations. |
k |
the number of clusters (default: 2). |
d |
candidate dimension for each subspace (default: 2). |
q |
threshold; the number of smaller values to be zeroed out (default: 0.75*n). |
B |
the number of ensembles/runs (default: 500). |
iter |
the number of iteration for each run (default: 0). |
a named list of S3 class T4cluster
containing
a length-n vector of class labels (from 1:k).
name of the algorithm.
Lipor J, Hong D, Tan YS, Balzano L (2021). “Subspace Clustering Using Ensembles of K-Subspaces.” arXiv:1709.04744.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 | ## generate a toy example
set.seed(10)
tester = genLP(n=100, nl=2, np=1, iso.var=0.1)
data = tester$data
label = tester$class
## do PCA for data reduction
proj = base::eigen(stats::cov(data))$vectors[,1:2]
dat2 = data%*%proj
## run EKSS algorithm with k=2,3,4 with EKSS-0 and 5 iterations
out2zero = EKSS(data, k=2)
out3zero = EKSS(data, k=3)
out4zero = EKSS(data, k=4)
out2iter = EKSS(data, k=2, iter=5)
out3iter = EKSS(data, k=3, iter=5)
out4iter = EKSS(data, k=4, iter=5)
## extract label information
lab2zero = out2zero$cluster
lab3zero = out3zero$cluster
lab4zero = out4zero$cluster
lab2iter = out2iter$cluster
lab3iter = out3iter$cluster
lab4iter = out4iter$cluster
## visualize
opar <- par(no.readonly=TRUE)
par(mfrow=c(2,3))
plot(dat2, pch=19, cex=0.9, col=lab2zero, main="EKSS-0:K=2")
plot(dat2, pch=19, cex=0.9, col=lab3zero, main="EKSS-0:K=3")
plot(dat2, pch=19, cex=0.9, col=lab4zero, main="EKSS-0:K=4")
plot(dat2, pch=19, cex=0.9, col=lab2iter, main="EKSS iter:K=2")
plot(dat2, pch=19, cex=0.9, col=lab3iter, main="EKSS iter:K=3")
plot(dat2, pch=19, cex=0.9, col=lab4iter, main="EKSS iter:K=4")
par(opar)
|
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.