Package: dtaianomaly
Time Series Anomaly DetectionIMPORTANT:dtaianomalyis still a work in progress. Therefore, many changes
are still expected. Feel free tocontact usif 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 ofdtaianomaly, but be sure to
check out thedocumentationfor more information.InstallationThe easiest way to install the latest release ofdtaianomalyis throughPyPi:pip install dtaianomalyFeaturesThe three key features ofdtaianomalyare as follows: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 thedocumentationfor more details regarding
how to set up and run experiments.Develop anomaly detectors.The models indtaianomalyare all centered around theTimeSeriesAnomalyDetectorclass, 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 ofTimeSeriesAnomalyDetector, it is possible to develop
new methods that can be used within the entire infrastructure ofdtaianomaly. An example
of how to implement a custom anomaly detector is given inthis notebook.Detect anomalies through a simple API.Once an anomaly detector is developed and
validated, it can be used to detect anomalies in time series.dtaianomalyprovides
a simple API (throughfitandpredictmethods) 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 inthis 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.fromdtaianomaly.anomaly_detectionimportPyODAnomalyDetector,Windowingtrend_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 observationsanomaly_detector=PyODAnomalyDetector('IForest',Windowing(window_size=100))# Fit the anomaly detectoranomaly_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)ExamplesSeveral examples of howdtaianomalycan be used are provided in thenotebooks. Here
we list some of the most important ones to get to knowdtaianomaly:Quantitatively evaluate an anomaly detector: Shows how to
quantitatively evaluate an anomaly detector on a benchmark set of time series.Custom anomaly detector: Illustrates a simple example
of a custom anomaly detector implemented indtaianomaly.PyOD anomaly detectors: Compares different anomaly detection algorithms
implemented in thePyODlibrary, showing how you can use an anomaly
detector as a wrapper approach.DependenciesTime series are represented asNumPy-arrays to detect anomalies, but can
also be represented asPandasDataFrames for visualization. Anomaly
detection algorithms use thePyODlibrary. We usematplotlibfor visualization.dtaianomalyalso depends onscikit-learnandscipy, but we plan on removing these dependencies in the near future.ContactFeel free to email tolouis.carpentier@kuleuven.beif
there are any questions, remarks, ideas, ...LicenseCopyright (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.