View source: R/SZVD_kFold_cv.R
| SZVD_kFold_cv | R Documentation |
Applies alternating direction methods of multipliers to solve sparse zero variance discriminant analysis.
SZVD_kFold_cv(X, ...)
## Default S3 method:
SZVD_kFold_cv(
X,
Y,
folds,
gams,
beta,
D,
q,
maxits,
tol,
ztol,
feat,
penalty,
quiet,
...
)
X |
n by p data matrix, variables should be scaled to by sd |
... |
Parameters passed to SZVD.default. |
Y |
n by K indicator matrix. |
folds |
number of folds to use in K-fold cross-validation. |
gams |
Number of regularly spaced regularization parameters to try in [0,1]*max_gamma. See details for how max_gamma is computed in the function. |
beta |
Augmented Lagrangian parameter. Must be greater than zero. |
D |
Penalty dictionary basis matrix. |
q |
Desired number of discriminant vectors. |
maxits |
Number of iterations to run ADMM algorithm. |
tol |
Stopping tolerances for ADMM, must have tol$rel and tol$abs. |
ztol |
Rounding tolerance for truncating entries to 0. |
feat |
Maximum fraction of nonzero features desired in validation scheme. |
penalty |
Controls whether to apply reweighting of l1-penalty (using sigma = within-class std devs) |
quiet |
toggles between displaying intermediate statistics. |
Add how max_gamma is calculated from the ZVD solution. This function might require a wrapper similar to ASDA.
SZVDcv returns an object of class "SZVDcv"
including a list with the named components DVs and gambest.
Where DVs are the discriminant vectors for the best l1 regularization
parameter and gambest is the best regularization parameter found
in the cross-validation.
NULL
Used by: SZVDcv.
P <- 150 # Number of variables
N <- 20 # 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 <- cbind(c(rep(1,N),rep(0,2*N)),
c(rep(0,N),rep(1,N),rep(0,N)),
c(rep(0,2*N),rep(1,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_kFold_cv(Xtrain,Ytrain,folds=2,gams=2,beta=2.5,q=1, D=diag(P),
maxits=50,tol=list(abs=1e-2,rel=1e-2),
ztol=1e-3,feat=0.3,quiet=FALSE,penalty=TRUE)
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.