Biclustering via sparse singular value decomposition

Share:

Description

The function performs a biclustering of the data matrix by sparse singular value decomposition.

Usage

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
## S4 method for signature 'matrix,BCssvd'
biclust(x,method=BCssvd(),
	 K=10,
	 threu = 1,
	 threv = 1,
	 gamu = 0,
	 gamv =0,
	 u0 = svd(X)$u[,1],
	 v0 = svd(X)$v[,1],
	 merr = 10^(-4),
	 niter = 100)

Arguments

x

the matrix to be clustered

method

calls the BCssvd() method

K

number of SSVD-layers

threu

type of penalty (thresholding rule) for the left singular vector, 1 = (Adaptive) LASSO (default) 2 = hard thresholding

threv

type of penalty (thresholding rule) for the right singular vector, 1 = (Adaptive) LASSO (default) 2 = hard thresholding

gamu

weight parameter in Adaptive LASSO for the left singular vector, nonnegative constant (default = 0, LASSO)

gamv

weight parameter in Adaptive LASSO for the right singular vector, nonnegative constant (default = 0, LASSO)

u0

initial left singular vector

v0

initial right singular vector

merr

threshold to decide convergence

niter

maximum number of iterations

Value

Returns an Biclust object.

Author(s)

Adaptation of original code from Mihee Lee by Martin Sill \ m.sill@dkfz.de

References

Mihee Lee, Haipeng Shen, Jianhua Z. Huang and J. S. Marron1 "Biclustering via Sparse Singular Value Decomposition", Biometrics, 2010

See Also

biclust, Biclust

Examples

 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
# example data set according to the simulation study in Lee et al. 2010
# generate artifical data set and a correspondig biclust object
u <- c(10,9,8,7,6,5,4,3,rep(2,17),rep(0,75))
v <- c(10,-10,8,-8,5,-5,rep(3,5),rep(-3,5),rep(0,34))
u <- u/sqrt(sum(u^2)) 
v <- v/sqrt(sum(v^2))
d <- 50
set.seed(1)
X <- (d*u%*%t(v)) + matrix(rnorm(100*50),100,50)
params <- info <- list()
RowxNumber <- matrix(rep(FALSE,100),ncol=1)
NumberxCol <- matrix(rep(FALSE,50),nrow=1)
RowxNumber[u!=0,1] <- TRUE 
NumberxCol[1,v!=0] <- TRUE
Number <- 1
ressim <- BiclustResult(params,RowxNumber,NumberxCol,Number,info)

#perform s4vd biclustering 
ress4vd <- biclust(X,method=BCs4vd,pcerv=0.5,pceru=0.5,pointwise=FALSE,nbiclust=1,savepath=TRUE)
#perform s4vd biclustering with fast pointwise stability selection
ress4vdpw <- biclust(X,method=BCs4vd,pcerv=0.5,pceru=0.5,pointwise=TRUE,nbiclust=1)
#perform ssvd biclustering
resssvd <- biclust(X,BCssvd,K=1)
#agreement of the results with the simulated bicluster
jaccardind(ressim,ress4vd)
jaccardind(ressim,ress4vdpw)
jaccardind(ressim,resssvd)