anomaly
¶
This module contains the anomaly detection algorithms for the deep_river package.
Modules:
| Name | Description |
|---|---|
ae |
|
probability_weighted_ae |
|
rolling_ae |
|
scaler |
|
Classes:
| Name | Description |
|---|---|
AnomalyMeanScaler |
Wrapper around an anomaly detector that scales the model's output |
AnomalyMinMaxScaler |
Wrapper around an anomaly detector that scales the model's output to |
AnomalyStandardScaler |
Wrapper around an anomaly detector that standardizes the model's output |
Autoencoder |
Represents an initialized autoencoder for anomaly detection and feature learning. |
ProbabilityWeightedAutoencoder |
|
RollingAutoencoder |
Rolling window autoencoder for streaming anomaly detection. |
AnomalyMeanScaler
¶
Bases: AnomalyScaler
Wrapper around an anomaly detector that scales the model's output by the incremental mean of previous scores.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
anomaly_detector
|
AnomalyDetector
|
The anomaly detector to wrap. |
required |
metric_type
|
The type of metric to use. |
required | |
rolling
|
bool
|
Choose whether the metrics are rolling metrics or not. |
True
|
window_size
|
The window size used for mean computation if rolling==True. |
250
|
Methods:
| Name | Description |
|---|---|
learn_one |
Update the scaler and the underlying anomaly scaler. |
score_many |
Return scaled anomaly scores based on raw score provided by |
score_one |
Return a scaled anomaly score based on raw score provided by the |
Source code in deep_river/anomaly/scaler.py
learn_one
¶
Update the scaler and the underlying anomaly scaler.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
*args
|
Depends on whether the underlying anomaly detector is supervised or not. |
()
|
Returns:
| Type | Description |
|---|---|
AnomalyScaler
|
The model itself. |
Source code in deep_river/anomaly/scaler.py
score_many
abstractmethod
¶
Return scaled anomaly scores based on raw score provided by the wrapped anomaly detector.
A high score is indicative of an anomaly. A low score corresponds to a normal observation.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
*args
|
Depends on whether the underlying anomaly detector is supervised or not. |
()
|
Returns:
| Type | Description |
|---|---|
Scaled anomaly scores. Larger values indicate more anomalous examples.
|
|
Source code in deep_river/anomaly/scaler.py
score_one
¶
Return a scaled anomaly score based on raw score provided by the wrapped anomaly detector. Larger values indicate more anomalous examples.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
*args
|
Depends on whether the underlying anomaly detector is supervised or not. |
()
|
Returns:
| Type | Description |
|---|---|
An scaled anomaly score. Larger values indicate more
|
|
anomalous examples.
|
|
Source code in deep_river/anomaly/scaler.py
AnomalyMinMaxScaler
¶
AnomalyMinMaxScaler(
anomaly_detector: AnomalyDetector,
rolling: bool = True,
window_size: int = 250,
)
Bases: AnomalyScaler
Wrapper around an anomaly detector that scales the model's output to \([0, 1]\) using rolling min and max metrics.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
anomaly_detector
|
AnomalyDetector
|
The anomaly detector to wrap. |
required |
rolling
|
bool
|
Choose whether the metrics are rolling metrics or not. |
True
|
window_size
|
int
|
The window size used for the metrics if rolling==True |
250
|
Methods:
| Name | Description |
|---|---|
learn_one |
Update the scaler and the underlying anomaly scaler. |
score_many |
Return scaled anomaly scores based on raw score provided by |
score_one |
Return a scaled anomaly score based on raw score provided by the |
Source code in deep_river/anomaly/scaler.py
learn_one
¶
Update the scaler and the underlying anomaly scaler.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
*args
|
Depends on whether the underlying anomaly detector is supervised or not. |
()
|
Returns:
| Type | Description |
|---|---|
AnomalyScaler
|
The model itself. |
Source code in deep_river/anomaly/scaler.py
score_many
abstractmethod
¶
Return scaled anomaly scores based on raw score provided by the wrapped anomaly detector.
A high score is indicative of an anomaly. A low score corresponds to a normal observation.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
*args
|
Depends on whether the underlying anomaly detector is supervised or not. |
()
|
Returns:
| Type | Description |
|---|---|
Scaled anomaly scores. Larger values indicate more anomalous examples.
|
|
Source code in deep_river/anomaly/scaler.py
score_one
¶
Return a scaled anomaly score based on raw score provided by the wrapped anomaly detector. Larger values indicate more anomalous examples.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
*args
|
Depends on whether the underlying anomaly detector is supervised or not. |
()
|
Returns:
| Type | Description |
|---|---|
An scaled anomaly score. Larger values indicate more
|
|
anomalous examples.
|
|
Source code in deep_river/anomaly/scaler.py
AnomalyStandardScaler
¶
AnomalyStandardScaler(
anomaly_detector: AnomalyDetector,
with_std: bool = True,
rolling: bool = True,
window_size: int = 250,
)
Bases: AnomalyScaler
Wrapper around an anomaly detector that standardizes the model's output using incremental mean and variance metrics.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
anomaly_detector
|
AnomalyDetector
|
The anomaly detector to wrap. |
required |
with_std
|
bool
|
Whether to use standard deviation for scaling. |
True
|
rolling
|
bool
|
Choose whether the metrics are rolling metrics or not. |
True
|
window_size
|
int
|
The window size used for the metrics if rolling==True. |
250
|
Methods:
| Name | Description |
|---|---|
learn_one |
Update the scaler and the underlying anomaly scaler. |
score_many |
Return scaled anomaly scores based on raw score provided by |
score_one |
Return a scaled anomaly score based on raw score provided by the |
Source code in deep_river/anomaly/scaler.py
learn_one
¶
Update the scaler and the underlying anomaly scaler.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
*args
|
Depends on whether the underlying anomaly detector is supervised or not. |
()
|
Returns:
| Type | Description |
|---|---|
AnomalyScaler
|
The model itself. |
Source code in deep_river/anomaly/scaler.py
score_many
abstractmethod
¶
Return scaled anomaly scores based on raw score provided by the wrapped anomaly detector.
A high score is indicative of an anomaly. A low score corresponds to a normal observation.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
*args
|
Depends on whether the underlying anomaly detector is supervised or not. |
()
|
Returns:
| Type | Description |
|---|---|
Scaled anomaly scores. Larger values indicate more anomalous examples.
|
|
Source code in deep_river/anomaly/scaler.py
score_one
¶
Return a scaled anomaly score based on raw score provided by the wrapped anomaly detector. Larger values indicate more anomalous examples.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
*args
|
Depends on whether the underlying anomaly detector is supervised or not. |
()
|
Returns:
| Type | Description |
|---|---|
An scaled anomaly score. Larger values indicate more
|
|
anomalous examples.
|
|
Source code in deep_river/anomaly/scaler.py
Autoencoder
¶
Autoencoder(
module: Module,
loss_fn: Union[str, Callable] = "mse",
optimizer_fn: Union[str, Callable] = "sgd",
lr: float = 0.001,
is_feature_incremental: bool = False,
device: str = "cpu",
seed: int = 42,
**kwargs
)
Bases: DeepEstimator, AnomalyDetector
Represents an initialized autoencoder for anomaly detection and feature learning.
This class is built upon the DeepEstimatorInitialized and AnomalyDetector base classes. It provides methods for performing unsupervised learning through an autoencoder mechanism. The primary objective of the class is to train the autoencoder on input data and compute anomaly scores based on the reconstruction error. It supports learning on individual examples or entire batches of data.
Attributes:
| Name | Type | Description |
|---|---|---|
is_feature_incremental |
bool
|
Indicates whether the model is designed to increment features dynamically. |
module |
Module
|
The PyTorch model representing the autoencoder architecture. |
loss_fn |
Union[str, Callable]
|
Specifies the loss function to compute the reconstruction error. |
optimizer_fn |
Union[str, Callable]
|
Specifies the optimizer to be used for training the autoencoder. |
lr |
float
|
The learning rate for optimization. |
device |
str
|
The device on which the model is loaded and trained (e.g., "cpu", "cuda"). |
seed |
int
|
Random seed for ensuring reproducibility. |
Methods:
| Name | Description |
|---|---|
clone |
Return a fresh estimator instance with (optionally) copied state. |
draw |
Render a (partial) computational graph of the wrapped model. |
learn_many |
Performs one step of training with a batch of examples. |
learn_one |
Performs one step of training with a single example. |
load |
Load a previously saved estimator. |
save |
Persist the estimator (architecture, weights, optimiser & runtime state). |
score_many |
Returns an anomaly score for the provided batch of examples in |
score_one |
Returns an anomaly score for the provided example in the form of |
Source code in deep_river/anomaly/ae.py
clone
¶
Return a fresh estimator instance with (optionally) copied state.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
new_params
|
dict | None
|
Parameter overrides for the cloned instance. |
None
|
include_attributes
|
bool
|
If True, runtime state (observed features, buffers) is also copied. |
False
|
copy_weights
|
bool
|
If True, model weights are copied (otherwise the module is re‑initialised). |
False
|
Source code in deep_river/base.py
draw
¶
Render a (partial) computational graph of the wrapped model.
Imports graphviz and torchviz lazily. Raises an informative
ImportError if the optional dependencies are not installed.
Source code in deep_river/base.py
learn_many
¶
Performs one step of training with a batch of examples.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
X
|
DataFrame
|
Input batch of examples. |
required |
Source code in deep_river/anomaly/ae.py
learn_one
¶
Performs one step of training with a single example.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
x
|
dict
|
Input example. |
required |
Source code in deep_river/anomaly/ae.py
load
classmethod
¶
Load a previously saved estimator.
The method reconstructs the estimator class, its wrapped module, optimiser state and runtime information (feature names, buffers, etc.).
Source code in deep_river/base.py
save
¶
Persist the estimator (architecture, weights, optimiser & runtime state).
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
filepath
|
str | Path
|
Destination file. Parent directories are created automatically. |
required |
Source code in deep_river/base.py
score_many
¶
Returns an anomaly score for the provided batch of examples in the form of the autoencoder's reconstruction error.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
x
|
Input batch of examples. |
required |
Returns:
| Type | Description |
|---|---|
float
|
Anomaly scores for the given batch of examples. Larger values indicate more anomalous examples. |
Source code in deep_river/anomaly/ae.py
score_one
¶
Returns an anomaly score for the provided example in the form of the autoencoder's reconstruction error.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
x
|
dict
|
Input example. |
required |
Returns:
| Type | Description |
|---|---|
float
|
Anomaly score for the given example. Larger values indicate more anomalous examples. |
Source code in deep_river/anomaly/ae.py
ProbabilityWeightedAutoencoder
¶
ProbabilityWeightedAutoencoder(
module: Module,
loss_fn: Union[str, Callable] = "mse",
optimizer_fn: Union[str, Callable] = "sgd",
lr: float = 0.001,
device: str = "cpu",
seed: int = 42,
skip_threshold: float = 0.9,
window_size=250,
**kwargs
)
Bases: Autoencoder
Methods:
| Name | Description |
|---|---|
clone |
Return a fresh estimator instance with (optionally) copied state. |
draw |
Render a (partial) computational graph of the wrapped model. |
learn_one |
Performs one step of training with a single example, |
load |
Load a previously saved estimator. |
save |
Persist the estimator (architecture, weights, optimiser & runtime state). |
score_many |
Returns an anomaly score for the provided batch of examples in |
score_one |
Returns an anomaly score for the provided example in the form of |
Source code in deep_river/anomaly/probability_weighted_ae.py
clone
¶
Return a fresh estimator instance with (optionally) copied state.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
new_params
|
dict | None
|
Parameter overrides for the cloned instance. |
None
|
include_attributes
|
bool
|
If True, runtime state (observed features, buffers) is also copied. |
False
|
copy_weights
|
bool
|
If True, model weights are copied (otherwise the module is re‑initialised). |
False
|
Source code in deep_river/base.py
draw
¶
Render a (partial) computational graph of the wrapped model.
Imports graphviz and torchviz lazily. Raises an informative
ImportError if the optional dependencies are not installed.
Source code in deep_river/base.py
learn_one
¶
Performs one step of training with a single example, scaling the employed learning rate based on the outlier probability estimate of the input example.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
x
|
dict
|
Input example. |
required |
Returns:
| Type | Description |
|---|---|
ProbabilityWeightedAutoencoder
|
The autoencoder itself. |
Source code in deep_river/anomaly/probability_weighted_ae.py
load
classmethod
¶
Load a previously saved estimator.
The method reconstructs the estimator class, its wrapped module, optimiser state and runtime information (feature names, buffers, etc.).
Source code in deep_river/base.py
save
¶
Persist the estimator (architecture, weights, optimiser & runtime state).
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
filepath
|
str | Path
|
Destination file. Parent directories are created automatically. |
required |
Source code in deep_river/base.py
score_many
¶
Returns an anomaly score for the provided batch of examples in the form of the autoencoder's reconstruction error.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
x
|
Input batch of examples. |
required |
Returns:
| Type | Description |
|---|---|
float
|
Anomaly scores for the given batch of examples. Larger values indicate more anomalous examples. |
Source code in deep_river/anomaly/ae.py
score_one
¶
Returns an anomaly score for the provided example in the form of the autoencoder's reconstruction error.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
x
|
dict
|
Input example. |
required |
Returns:
| Type | Description |
|---|---|
float
|
Anomaly score for the given example. Larger values indicate more anomalous examples. |
Source code in deep_river/anomaly/ae.py
RollingAutoencoder
¶
RollingAutoencoder(
module: Module,
loss_fn: Union[str, Callable] = "mse",
optimizer_fn: Union[str, Callable] = "sgd",
lr: float = 0.001,
device: str = "cpu",
seed: int = 42,
window_size: int = 10,
append_predict: bool = False,
**kwargs
)
Bases: RollingDeepEstimator, AnomalyDetector
Rolling window autoencoder for streaming anomaly detection.
Maintains a fixed-size deque of the latest window_size observations and
feeds them as a sequence tensor to the wrapped autoencoder module. The
anomaly score is the reconstruction error for the current (or most recent)
window. This design allows sequence context without retaining the full
historical stream.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
module
|
Module
|
Autoencoder (or encoder-only) style module operating on a rolling tensor. |
required |
loss_fn
|
str | Callable
|
Loss for reconstruction error measurement. |
'mse'
|
optimizer_fn
|
str | Callable
|
Optimizer specification. |
'sgd'
|
lr
|
float
|
Learning rate. |
1e-3
|
device
|
str
|
Torch device. |
'cpu'
|
seed
|
int
|
Random seed. |
42
|
window_size
|
int
|
Number of past samples retained. |
10
|
append_predict
|
bool
|
If True, the scored sample (during prediction) is appended to the window. |
False
|
**kwargs
|
Forwarded to :class: |
{}
|
Notes
The provided module should expect input shape roughly (seq_len, batch=1, n_features)
which is what :func:deque2rolling_tensor produces.
Methods:
| Name | Description |
|---|---|
clone |
Return a fresh estimator instance with (optionally) copied state. |
draw |
Render a (partial) computational graph of the wrapped model. |
learn_many |
Batch update; extends window with rows from X and learns if full. |
learn_one |
Update model using a single sample appended to the rolling window. |
load |
Load a previously saved estimator. |
save |
Persist the estimator (architecture, weights, optimiser & runtime state). |
score_many |
Return list of reconstruction errors for each row in X. |
score_one |
Return reconstruction error for current window + candidate sample. |
Source code in deep_river/anomaly/rolling_ae.py
clone
¶
Return a fresh estimator instance with (optionally) copied state.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
new_params
|
dict | None
|
Parameter overrides for the cloned instance. |
None
|
include_attributes
|
bool
|
If True, runtime state (observed features, buffers) is also copied. |
False
|
copy_weights
|
bool
|
If True, model weights are copied (otherwise the module is re‑initialised). |
False
|
Source code in deep_river/base.py
draw
¶
Render a (partial) computational graph of the wrapped model.
Imports graphviz and torchviz lazily. Raises an informative
ImportError if the optional dependencies are not installed.
Source code in deep_river/base.py
learn_many
¶
Batch update; extends window with rows from X and learns if full.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
X
|
DataFrame
|
DataFrame containing the input features for each sample. |
required |
y
|
None
|
Ignored, present for compatibility. |
None
|
Source code in deep_river/anomaly/rolling_ae.py
learn_one
¶
Update model using a single sample appended to the rolling window.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
x
|
dict
|
Dictionary containing feature name-value pairs for the sample. |
required |
y
|
Any
|
Target value (not used in autoencoder training). |
None
|
Source code in deep_river/anomaly/rolling_ae.py
load
classmethod
¶
Load a previously saved estimator.
The method reconstructs the estimator class, its wrapped module, optimiser state and runtime information (feature names, buffers, etc.).
Source code in deep_river/base.py
save
¶
Persist the estimator (architecture, weights, optimiser & runtime state).
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
filepath
|
str | Path
|
Destination file. Parent directories are created automatically. |
required |
Source code in deep_river/base.py
score_many
¶
Return list of reconstruction errors for each row in X.
If the window is not yet full, zeros are returned for alignment.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
X
|
DataFrame
|
DataFrame containing the input features for each sample. |
required |
Returns:
| Type | Description |
|---|---|
List[float]
|
List of computed anomaly scores (reconstruction errors) for each sample in X. |
Source code in deep_river/anomaly/rolling_ae.py
score_one
¶
Return reconstruction error for current window + candidate sample.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
x
|
dict
|
Dictionary containing feature name-value pairs for the candidate sample. |
required |
Returns:
| Type | Description |
|---|---|
float
|
Computed anomaly score (reconstruction error). |