Skip to main content

A simple-to-use Python package for time series anomaly detection!

Project description

Time Series Anomaly Detection

pipeline status coverage report Latest Release Downloads PyPI pyversions PyPI license

IMPORTANT: dtaianomaly is still a work in progress. Therefore, many changes are still expected. Feel free to contact us if there are any suggestions!

A simple-to-use Python package for the development and analysis of time series anomaly detection techniques. Here we describe the main usage of dtaianomaly, but be sure to check out the documentation for more information.

Installation

The easiest way to install the latest release of dtaianomaly is through PyPi:

pip install dtaianomaly

Features

The three key features of dtaianomaly are as follows:

  1. Large scale experiments. To evaluate anomaly detection methods, it is crucial to be able to perform large scale experiments. However, it is also crucial to ensure reproducibility of the obtained results. ´dtaianomaly´ provides a simple way to evaluate an anomaly detector on a large set of time sets. This allows to both (1) quantitatively evaluate the method by measuring the performance, runtime and memory usage, and (2) qualitatively evaluate the method by visually inspecting the detected anomalies. This is achieved by using configuration files, which ensure that identical settings are used for the experiments. We refer to the documentation for more details regarding how to set up and run experiments.
  2. Develop anomaly detectors. The models in dtaianomaly are all centered around the TimeSeriesAnomalyDetector class, which provides an interface to detecting anomalies in time series. The main advantage of this abstract class is that anomaly detectors can be handled in an abstract manner. This allows to develop wrapper approaches around existing methods, without needing information about the specific algorithm. On top of this, by only implementing the interface of TimeSeriesAnomalyDetector, it is possible to develop new methods that can be used within the entire infrastructure of dtaianomaly. An example of how to implement a custom anomaly detector is given in this notebook.
  3. Detect anomalies through a simple API. Once an anomaly detector is developed and validated, it can be used to detect anomalies in time series. dtaianomaly provides a simple API (through fit and predict methods) to detect anomalies. The below code snippet illustrates how to detect anomalies in only a few lines of code. The complete example can be found in this notebook. The main advantage of ´dtaianomaly´ is that anomaly detectors can be used as a wrapper approach. Thus, you do not need to know anything about the ´TimeSeriesAnomalyDetector´ in order to detect anomalies.
from dtaianomaly.anomaly_detection import PyODAnomalyDetector, Windowing

trend_data = ... # Some time series as a numpy array of shape (n_samples, n_features)

# Initialize an IForest that takes as features each window of 100 observations
anomaly_detector = PyODAnomalyDetector('IForest', Windowing(window_size=100))

# Fit the anomaly detector 
anomaly_detector.fit(trend_data)
# Compute the raw anomaly scores of an observation (in range [0, infinity])
raw_anomaly_scores = anomaly_detector.decision_function(trend_data)
# Compute the probability of an observation being an anomaly (in range [0, 1])
anomaly_probabilities = anomaly_detector.predict_proba(trend_data)

Anomaly scores

Examples

Several examples of how dtaianomaly can be used are provided in the notebooks. Here we list some of the most important ones to get to know dtaianomaly:

Dependencies

Time series are represented as NumPy-arrays to detect anomalies, but can also be represented as Pandas DataFrames for visualization. Anomaly detection algorithms use the PyOD library. We use matplotlib for visualization.

dtaianomaly also depends on scikit-learn and scipy, but we plan on removing these dependencies in the near future.

Contact

Feel free to email to louis.carpentier@kuleuven.be if there are any questions, remarks, ideas, ...

License

Copyright (c) 2023 KU Leuven, DTAI Research Group

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

dtaianomaly-0.1.2.tar.gz (24.6 kB view details)

Uploaded Source

Built Distribution

dtaianomaly-0.1.2-py3-none-any.whl (29.1 kB view details)

Uploaded Python 3

File details

Details for the file dtaianomaly-0.1.2.tar.gz.

File metadata

  • Download URL: dtaianomaly-0.1.2.tar.gz
  • Upload date:
  • Size: 24.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.8.10

File hashes

Hashes for dtaianomaly-0.1.2.tar.gz
Algorithm Hash digest
SHA256 c18ca8694f043823081734aec96b0e9c1485d70b2b00b2a4cc98ead0a61be3cc
MD5 9428f441fa46633dfacabd9103226a6f
BLAKE2b-256 e6510d7f4aefa194e22179b793f5c53755ec178777f6ef031234185954cb0533

See more details on using hashes here.

File details

Details for the file dtaianomaly-0.1.2-py3-none-any.whl.

File metadata

  • Download URL: dtaianomaly-0.1.2-py3-none-any.whl
  • Upload date:
  • Size: 29.1 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.8.10

File hashes

Hashes for dtaianomaly-0.1.2-py3-none-any.whl
Algorithm Hash digest
SHA256 bd4cda7790e5870b5c6ef7de8047e6b3f77ae97a3fc8441a450d9b38f269ea64
MD5 89f67ac08294598ae1974c99442e023f
BLAKE2b-256 0e6e140762fe3d993a67567cc443d4a3d6f724315394c44c9771752b9b26f439

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page