Skip to main content

Orion is a machine learning library built for data generated by satellites.

Project description

“DAI-Lab” An open source project from Data to AI Lab at MIT.

“Orion”

Development Status PyPi Shield CircleCI Travis CI Shield Downloads Binder

Orion

Overview

Orion is a machine learning library built for unsupervised time series anomaly detection. With a given time series data, we provide a number of “verified” ML pipelines (a.k.a Orion pipelines) that identify rare patterns and flag them for expert review.

The library makes use of a number of automated machine learning tools developed under Data to AI Lab at MIT.

Recent news: Read about using an Orion pipeline on NYC taxi dataset in a blog series:

Part 1: Learn about unsupervised time series anomaly detection Part 2: Learn how we use GANs to solving the problem? Part 3: How does one evaluate anomaly detection pipelines?

Notebooks: Discover Orion through colab by launching our notebooks!

Quickstart

Install with pip

The easiest and recommended way to install Orion is using pip:

pip install orion-ml

This will pull and install the latest stable release from PyPi.

In the following example we show how to use one of the Orion Pipelines.

Fit an Orion pipeline

We will load a demo data for this example:

from orion.data import load_signal

train_data = load_signal('S-1-train')
train_data.head()

which should show a signal with timestamp and value.

    timestamp     value
0  1222819200 -0.366359
1  1222840800 -0.394108
2  1222862400  0.403625
3  1222884000 -0.362759
4  1222905600 -0.370746

In this example we use lstm_dynamic_threshold pipeline and set some hyperparameters (in this case training epochs as 5).

from orion import Orion

hyperparameters = {
    'keras.Sequential.LSTMTimeSeriesRegressor#1': {
        'epochs': 5,
        'verbose': True
    }
}

orion = Orion(
    pipeline='lstm_dynamic_threshold',
    hyperparameters=hyperparameters
)

orion.fit(train_data)

Detect anomalies using the fitted pipeline

Once it is fitted, we are ready to use it to detect anomalies in our incoming time series:

new_data = load_signal('S-1-new')
anomalies = orion.detect(new_data)

:warning: Depending on your system and the exact versions that you might have installed some WARNINGS may be printed. These can be safely ignored as they do not interfere with the proper behavior of the pipeline.

The output of the previous command will be a pandas.DataFrame containing a table of detected anomalies:

        start         end     score
0  1394323200  1399701600  0.673494

Resources

Additional resources that might be of interest:

History

0.1.5 - 2020-12-25

This version includes the new style of documentation and a revamp of the README.md. In addition to some minor improvements in the benchmark code and primitives. This release includes the transfer of tadgan pipeline to verified.

Issues resolved

  • Link with google colab - Issue #144 by @sarahmish
  • Add timeseries_anomalies unittests - Issue #136 by @sarahmish
  • Update find_sequences in converting series to arrays - Issue #135 by @sarahmish
  • Definition of error/critic smooth window in score anomalies primitive - Issue #132 by @sarahmish
  • Train-test split in benchmark enhancement - Issue #130 by @sarahmish

0.1.4 - 2020-10-16

Minor enhancements to benchmark

  • Load ground truth before try-catch - Issue #124 by @sarahmish
  • Converting timestamp to datetime in Azure primitive - Issue #123 by @sarahmish
  • Benchmark exceptions - Issue #120 by @sarahmish

0.1.3 - 2020-09-29

New benchmark and Azure primitive.

  • Implement a benchmarking function new feature - Issue #94 by @sarahmish
  • Add azure anomaly detection as primitive new feature - Issue #97 by @sarahmish
  • Critic and reconstruction error combination - Issue #99 by @sarahmish
  • Fixed threshold for find_anomalies - Issue #101 by @sarahmish
  • Add an option to have window size and window step size as percentages of error size - Issue #102 by @sarahmish
  • Organize pipelines into verified and sandbox - Issue #105 by @sarahmish
  • Ground truth parameter name enhancement - Issue #114 by @sarahmish
  • Add benchmark dataset list and parameters to s3 bucket enhancement - Issue #118 by @sarahmish

0.1.2 - 2020-07-03

New Evaluation sub-package and refactor TadGAN.

  • Two bugs when saving signalrun if there is no event detected - Issue #92 by @dyuliu 
  • File encoding/decoding issues about README.md and HISTORY.md - Issue #88 by @dyuliu
  • Fix bottle neck of score_anomaly in Cyclegan primitive - Issue #86 by @dyuliu
  • Adjust epoch meaning in Cyclegan primitive - Issue #85 by @sarahmish
  • Rename evaluation to benchmark and metrics to evaluation - Issue #83 by @sarahmish
  • Scoring function for intervals of size one - Issue #76 by @sarahmish

0.1.1 - 2020-05-11

New class and function based interfaces.

  • Implement the Orion Class - Issue #79 by @csala
  • Implement new functional interface - Issue #80 by @csala

0.1.0 - 2020-04-23

First Orion release to PyPI: https://pypi.org/project/orion-ml/

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

orion-ml-0.1.5.tar.gz (1.0 MB view details)

Uploaded Source

Built Distribution

orion_ml-0.1.5-py2.py3-none-any.whl (86.8 kB view details)

Uploaded Python 2 Python 3

File details

Details for the file orion-ml-0.1.5.tar.gz.

File metadata

  • Download URL: orion-ml-0.1.5.tar.gz
  • Upload date:
  • Size: 1.0 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.3.0 pkginfo/1.6.1 requests/2.25.1 setuptools/51.0.0.post20201207 requests-toolbelt/0.9.1 tqdm/4.55.0 CPython/3.6.12

File hashes

Hashes for orion-ml-0.1.5.tar.gz
Algorithm Hash digest
SHA256 e41c6cbad0cc33475b98248212be4d831d3c16d664e8ecaf2edd6de276f24609
MD5 d3a2011dbed41c431f02e26e1cf9a04b
BLAKE2b-256 584da823d382f94c4c73ad3f1dad2c22011113e02a4268a933938557c79dfece

See more details on using hashes here.

File details

Details for the file orion_ml-0.1.5-py2.py3-none-any.whl.

File metadata

  • Download URL: orion_ml-0.1.5-py2.py3-none-any.whl
  • Upload date:
  • Size: 86.8 kB
  • Tags: Python 2, Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.3.0 pkginfo/1.6.1 requests/2.25.1 setuptools/51.0.0.post20201207 requests-toolbelt/0.9.1 tqdm/4.55.0 CPython/3.6.12

File hashes

Hashes for orion_ml-0.1.5-py2.py3-none-any.whl
Algorithm Hash digest
SHA256 3cdf816ee9a9292cd29977fb3ab4fe94d0fd61f0e65e37f9c247c630db6f56f9
MD5 577c1313ed54c1c3b545c46bfc4276d9
BLAKE2b-256 588ee6406931a407bd98298723b82753c77b84c173d4a8799db85293783476e7

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