Learn R Programming

DAP (version 1.0)

apply_DAP: Apply DAP for binary classification

Description

Applies Discriminant Analysis via Projections to perform binary classification on the test dataset based on the training data.

Usage

apply_DAP(xtrain, ytrain, xtest, ytest = NULL, lambda_seq = NULL,
  n_lambda = 50, maxmin_ratio = 0.1, nfolds = 5, eps = 1e-04,
  maxiter = 10000, myseed = 1001, prior = TRUE)

Arguments

xtrain

A n x p training dataset; n observations on the rows and p features on the columns.

ytrain

A n vector of training group labels, either 1 or 2.

xtest

A m x p testing dataset; m observations on the rows and p features on the columns.

ytest

An optional m vector of testing group labels, either 1 or 2. If supplied, the function returns misclassification error rate; if NULL, the function returns predicted labels for xtest. Default is NULL.

lambda_seq

An optional sequence of tunning parameters lambda. Default is NULL, and the function generates its own sequence.

n_lambda

Number of lambda values, the default is 50.

maxmin_ratio

Smallest value for lambda, as a fraction of maximal value for which all coefficients are zero. The default is 0.1.

nfolds

Number of folds for cross-validation, the default is 5.

eps

Convergence threshold for the block-coordinate decent algorithm based on the maximum element-wise change in \(V\). The default is 1e-4.

maxiter

Maximum number of iterations, the default is 10000.

myseed

Optional specification of random seed for generating the folds, the default value is 1001.

prior

A logical indicating whether to put larger weights to the groups of larger size; the default value is TRUE.

Value

A list of

error

Misclassification error rate (if ytest is provided).

ypred

Predicted labels on the test set (if ytest is NULL).

features

Number of selected features.

feature_id

Index of selected features.

Details

If no feature is selected by DAP, the function will return error of 0.5 and no ypred, indicating that the classifier is no better than random guessing.

Examples

Run this code
# NOT RUN {
## This is an example for apply_DAP

## Generate data
n_train = 50
n_test = 50
p = 100
mu1 = rep(0, p)
mu2 = rep(3, p)
Sigma1 = diag(p)
Sigma2 = 0.5* diag(p)

## Build training data and test data
x1 = MASS::mvrnorm(n = n_train, mu = mu1, Sigma = Sigma1)
x2 = MASS::mvrnorm(n = n_train, mu = mu2, Sigma = Sigma2)
xtrain = rbind(x1, x2)
x1_test = MASS::mvrnorm(n = n_test, mu = mu1, Sigma = Sigma1)
x2_test = MASS::mvrnorm(n = n_test, mu = mu2, Sigma = Sigma2)
xtest = rbind(x1_test, x2_test)
ytrain = c(rep(1, n_train), rep(2, n_train))
ytest = c(rep(1, n_test), rep(2, n_test))

## Apply DAP

# Given ytest, the function will return a miclassification error rate.
ClassificationError = apply_DAP(xtrain, ytrain, xtest, ytest)

# Without ytest, the function will return predictions.
Ypredict = apply_DAP(xtrain, ytrain, xtest)
# }

Run the code above in your browser using DataLab