One-class SVM for anomaly detection.
This is a stochastic implementation of the one-class SVM algorithm, and will not exactly match its batch formulation.
It is encouraged to scale the data upstream with
preprocessing.StandardScaler, as well as use
feature_extraction.RBFSampler to capture non-linearities.
nu – defaults to
An upper bound on the fraction of training errors and a lower bound of the fraction of support vectors. You can think of it as the expected fraction of anomalies.
optimizer (optim.base.Optimizer) – defaults to
The sequential optimizer used for updating the weights.
intercept_lr (Union[optim.base.Scheduler, float]) – defaults to
Learning rate scheduler used for updating the intercept. A
optim.schedulers.Constantis used if a
floatis provided. The intercept is not updated when this is set to 0.
clip_gradient – defaults to
Clips the absolute value of each gradient value.
initializer (optim.base.Initializer) – defaults to
Weights initialization scheme.
>>> from river import anomaly >>> from river import compose >>> from river import datasets >>> from river import metrics >>> from river import preprocessing >>> model = anomaly.QuantileFilter( ... anomaly.OneClassSVM(nu=0.2), ... q=0.995 ... ) >>> auc = metrics.ROCAUC() >>> for x, y in datasets.CreditCard().take(2500): ... score = model.score_one(x) ... is_anomaly = model.classify(score) ... model = model.learn_one(x) ... auc = auc.update(y, is_anomaly) >>> auc ROCAUC: 74.68%
Update the model.
- x (dict)
Return an outlier score.
A high score is indicative of an anomaly. A low score corresponds to a normal observation.
An anomaly score. A high score is indicative of an anomaly. A low score corresponds a