lda_thomaz {sparsediscrim} | R Documentation |
Linear Discriminant Analysis using the Thomaz-Kitani-Gillies Covariance Matrix Estimator
Description
Given a set of training data, this function builds the Linear Discriminant Analysis (LDA) classifier, where the distributions of each class are assumed to be multivariate normal and share a common covariance matrix. When the pooled sample covariance matrix is singular, the linear discriminant function is incalculable. This function replaces the pooled sample covariance matrix with a regularized estimator from Thomaz et al. (2006), where the smallest eigenvalues are replaced with the average eigenvalue. Specifically, small eigenvalues here means that the eigenvalues are less than the average eigenvalue.
Given a set of training data, this function builds the Linear Discriminant Analysis (LDA) classifier, where the distributions of each class are assumed to be multivariate normal and share a common covariance matrix. When the pooled sample covariance matrix is singular, the linear discriminant function is incalculable. This function replaces the pooled sample covariance matrix with a regularized estimator from Thomaz et al. (2006), where the smallest eigenvalues are replaced with the average eigenvalue. Specifically, small eigenvalues here means that the eigenvalues are less than the average eigenvalue.
Usage
lda_thomaz(x, ...)
## Default S3 method:
lda_thomaz(x, y, prior = NULL, ...)
## S3 method for class 'formula'
lda_thomaz(formula, data, prior = NULL, ...)
## S3 method for class 'lda_thomaz'
predict(object, newdata, type = c("class", "prob", "score"), ...)
Arguments
x |
Matrix or data frame containing the training data. The rows are the sample observations, and the columns are the features. Only complete data are retained. |
... |
additional arguments (not currently used). |
y |
Vector of class labels for each training observation. Only complete data are retained. |
prior |
Vector with prior probabilities for each class. If NULL (default), then equal probabilities are used. See details. |
formula |
A formula of the form |
data |
data frame from which variables specified in |
object |
Fitted model object |
newdata |
Matrix or data frame of observations to predict. Each row corresponds to a new observation. |
type |
Prediction type: either |
Details
The matrix of training observations are given in x
. The rows of x
contain the sample observations, and the columns contain the features for each
training observation.
The vector of class labels given in y
are coerced to a factor
.
The length of y
should match the number of rows in x
.
An error is thrown if a given class has less than 2 observations because the variance for each feature within a class cannot be estimated with less than 2 observations.
The vector, prior
, contains the a priori class membership for
each class. If prior
is NULL (default), the class membership
probabilities are estimated as the sample proportion of observations belonging
to each class. Otherwise, prior
should be a vector with the same length
as the number of classes in y
. The prior
probabilities should be
nonnegative and sum to one.
Value
lda_thomaz
object that contains the trained classifier
References
Thomaz, C. E., Kitani, E. C., and Gillies, D. F. (2006). "A maximum uncertainty LDA-based approach for limited sample size problems with application to face recognition," J. Braz. Comp. Soc., 12, 2, 7-18.
Examples
library(modeldata)
data(penguins)
pred_rows <- seq(1, 344, by = 20)
penguins <- penguins[, c("species", "body_mass_g", "flipper_length_mm")]
lda_thomaz_out <- lda_thomaz(species ~ ., data = penguins[-pred_rows, ])
predicted <- predict(lda_thomaz_out, penguins[pred_rows, -1], type = "class")
lda_thomaz_out2 <- lda_thomaz(x = penguins[-pred_rows, -1], y = penguins$species[-pred_rows])
predicted2 <- predict(lda_thomaz_out2, penguins[pred_rows, -1], type = "class")
all.equal(predicted, predicted2)