Oddity is a time series anomaly detection tool for Python, implemented in Rust. Oddity is capable of learning trend, global seasonality and even local seasonality from time series data, and works best in these situations.
Being written in Rust, Oddity is incredibly fast and can generally fit to even a few thousand time steps in minimal time.
Oddity also provides a few other tools along with anomaly detection, such as:
- STL decomposition
- gaussian process fitting
- gaussian distribution fitting
- Periodicity inference
More functionality along with general optimizations will be added in the future.
Currently Oddity is intended to be used on static datasets, however online learning can potentially be implemented by using a rolling/sliding window. With enough hacking, it can potentially also be used for forecasting.
Web app demo of the Oddity engine detecting anomalies in some data sets. The web app was deployed on a google cloud kubernetes cluster open to the public, but will not be forever available due to ressource reasons.
- A local version of the web app can still be run by follwing the instructions on: https://github.com/Lleyton-Ariton/oddity-demo
The following are some important links for more information:
Oddity Engine (Rust): https://github.com/Lleyton-Ariton/oddity-engine
Oddity Demo: https://github.com/Lleyton-Ariton/oddity-demo
Example/Tutorial: https://medium.com/houston-we-have-a-problem-anomaly-detection-methods
For some extra information on time series data/anomaly detection, you can check out my medum article series Houston, we have a problem.