SZVD | R Documentation |
Applies SZVD heuristic for sparse zero-variance discriminant analysis to given training set.
SZVD(train, ...) ## Default S3 method: SZVD( train, gamma, D, penalty = TRUE, scaling = TRUE, tol = list(abs = 1e-04, rel = 1e-04), maxits = 2000, beta = 1, quiet = TRUE )
train |
Data matrix where first column is the response class. |
... |
Parameters passed to SZVD.default. |
gamma |
Set of regularization parameters controlling l1-penalty. |
D |
dictionary/basis matrix. |
penalty |
Controls whether to apply reweighting of l1-penalty (using sigma = within-class std devs). |
scaling |
Logical indicating whether to scale data such that each feature has variance 1. |
tol |
Stopping tolerances for ADMM algorithm, must include tol$rel and tol$abs. |
maxits |
Maximum number of iterations used in the ADMM algorithm. |
beta |
penalty term controlling the splitting constraint. |
quiet |
Print intermediate outpur or not. |
This function will currently solve as a standalone function in accSDA for time comparison. A wrapper function like ASDA will be created to use the functionality of plots and such. Maybe call it ASZDA. For that purpose the individual ZVD function will need to be implemented.
SZVD
returns an object of class
"SZVD
" including a list
with the following named components:
DVs
Discriminant vectors.
its
Number of iterations required to find DVs.
pen_scal
Weights used in reweighted l1-penalty.
N
Basis for the null-space of the sample within-class covariance.
means
Training class-means.
mus
Training meand and variance scaling/centering terms.
w0
unpenalized zero-variance discriminants (initial solutions) plus B and W, etc.
NULL
Used by: SZVDcv
.
set.seed(123) P <- 300 # Number of variables N <- 50 # Number of samples per class # Mean for classes, they are zero everywhere except the first 3 coordinates m1 <- rep(0,P) m1[1] <- 3 m2 <- rep(0,P) m2[2] <- 3 m3 <- rep(0,P) m3[3] <- 3 # Sample dummy data Xtrain <- rbind(MASS::mvrnorm(n=N,mu = m1, Sigma = diag(P)), MASS::mvrnorm(n=N,mu = m2, Sigma = diag(P)), MASS::mvrnorm(n=N,mu = m3, Sigma = diag(P))) # Generate the labels Ytrain <- rep(1:3,each=N) # Normalize the data Xt <- accSDA::normalize(Xtrain) Xtrain <- Xt$Xc # Train the classifier and increase the sparsity parameter from the default # so we penalize more for non-sparse solutions. res <- accSDA::SZVD(cbind(Ytrain,Xtrain),beta=2.5, maxits=1000,tol = list(abs = 1e-04, rel = 1e-04))
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.