ad: anomaly detection with normal probability density functions.
ad(x, ...) # S3 method for formula ad(formula, data, na.action = na.omit, ...) # S3 method for default ad(x, y, univariate = TRUE, score = "f1", steps = 1000, ...) # S3 method for ad print(x, ...)
x | A matrix of numeric features. |
---|---|
... | Optional parameters to be passed to ad.default. |
formula | An object of class "formula": a symbolic description of the model to be fitted. |
data | A data frame containing the features (predictors) and target. |
na.action | A function specifying the action to be taken if NAs are found. |
y | A vector of numeric target values, either 0 or 1, with 1 assumed to be anomalous. |
univariate | Logical indicating whether the univariate pdf should be used. |
score | String indicating which score to use in optimization:
|
steps | Integer number of steps to take during epsilon optimization, default 1e3. |
An object of class ad
:
The original call to ad
.
Logical indicating which pdf was computed.
The score that was used for optimization.
The threshold value.
Means of features in the training set.
Variances of features in the training set. If univariate=FALSE
The score obtained on the validation data set. 0 to 1 for F1 score, -1 to 1 for Matthews correlation coefficient
amelie
implements anomaly detection with normal probability
functions and maximum likelihood estimates.
Features are assumed to be continuous, and the target is assumed to take
on values of 0
(negative case, no anomaly) or 1
(positive
case, anomaly).
The threshold epsilon
is optimized using the either the Matthews
correlation coefficient or F1 score.
Variance and covariance are computed using var
and cov
, where
denominator n-1
is used.
Algorithm details are described in the Introduction vignette.
The package follows the anomaly detection approach in Andrew Ng's course on machine learning.
Machine learning course Confusion matrix Matthews correlation coefficient
x1 <- c(1,.2,3,1,1,.7,-2,-1) x2 <- c(0,.5,0,.4,0,1,-.3,-.1) x <- do.call(cbind,list(x1,x2)) y <- c(0,0,0,0,0,0,1,1) dframe <- data.frame(x,y) df_fit <- ad(y ~ x1 + x2, dframe) mat_fit <- ad(x = x, y = y)