Learn R Programming

sparseLDA (version 0.1-7)

smda: Sparse mixture discriminant analysis

Description

Performs sparse linear discriminant analysis for mixture of gaussians models.

Usage

smda(x, ...)
"smda"(x, y, Z = NULL, Rj = NULL, lambda = 1e-6, stop, maxIte = 50, Q=R-1, trace = FALSE, tol = 1e-4, ...)

Arguments

x
A matrix of the training data with observations down the rows and variables in the columns.
y
A matrix initializing the dummy variables representing the groups.
Z
Am optional matrix initializing the probabilities representing the groups.
Rj
K length vector containing the number of subclasses in each of the K classes.
lambda
The weight on the L2-norm for elastic net regression. Default: 1e-6.
stop
If STOP is negative, its absolute value corresponds to the desired number of variables. If STOP is positive, it corresponds to an upper bound on the L1-norm of the b coefficients. There is a one to one correspondence between stop and t.
maxIte
Maximum number of iterations. Default: 50.
Q
The number of components to include. Maximum and default is R-1 (total number of subclasses less one).
trace
If TRUE, prints out its progress. Default: FALSE.
tol
Tolerance for the stopping criterion (change in RSS). Default: 1e-4
...
additional arguments

Value

call
The call
beta
The loadings of the sparse discriminative directions.
theta
The optimal scores.
Z
Updated subclass probabilities.
Rj
a vector of the number of ssubclasses per class
rss
A vector of the Residual Sum of Squares at each iteration.

Details

The function finds sparse directions for linear classification of mixture og gaussians models.

References

Clemmensen, L., Hastie, T., Witten, D. and Ersboell, K. (2007) "Sparse discriminant analysis", Technometrics, To appear.

See Also

normalize, normalizetest, sda

Examples

Run this code
# load data
data(penicilliumYES)
X <- penicilliumYES$X
Y <- penicilliumYES$Y
Z <- penicilliumYES$Z

## test samples
Iout <- c(3, 6, 9, 12)
Iout <- c(Iout, Iout+12, Iout+24)

## training data
Xtr <- X[-Iout,]
k <- 3
n <- dim(Xtr)[1]
Rj <- rep(4, 3)

## Normalize data
Xc <- normalize(Xtr)
Xn <- Xc$Xc
p <- dim(Xn)[2]

## perform SMDA with one non-zero loading for each discriminative
## direction
## Not run: 
# smdaFit <- smda(x = Xn,
#                 y = Y, 
#                 Z = Z, 
#                 Rj = Rj,
#                 lambda = 1e-6,
#                 stop = -5,
#                 maxIte = 10,
#                 tol = 1e-2)
# 
# # testing
# Xtst <- X[Iout,]
# Xtst <- normalizetest(Xtst, Xc)
# 
# test <- predict(smdaFit, Xtst)
# ## End(Not run)

Run the code above in your browser using DataLab