Greykite: A flexible, intuitive and fast forecasting and anomaly detection library
.. raw:: html
The Greykite library provides flexible, intuitive and fast forecasts through its flagship algorithm, Silverkite.
Silverkite algorithm works well on most time series, and is especially adept for those with changepoints in trend or seasonality, event/holiday effects, and temporal dependencies. Its forecasts are interpretable and therefore useful for trusted decision-making and insights.
The Greykite library provides a framework that makes it easy to develop a good forecast model, with exploratory data analysis, outlier/anomaly preprocessing, feature extraction and engineering, grid search, evaluation, benchmarking, and plotting. Other open source algorithms can be supported through Greykite’s interface to take advantage of this framework, as listed below.
Greykite AD (Anomaly Detection) is an extension of the Greykite Forecasting library. It provides users with an interpretable, fast, robust and easy to use interface to monitor their metrics with minimal effort.
Greykite AD improves upon the out-of-box confidence intervals generated by Silverkite, by automatically tuning the confidence intervals
and other filters (e.g. based on APE
) using expected alert rate information and/ or anomaly labels, if available.
It allows the users to define robust objective function, constraints and parameter space to optimize the confidence intervals.
For example user can target a minimal recall level of 80% while maximizing precision. Additionally, the users can specify a
minimum error level to filter out anomalies that are not business relevant. The motivation to include criteria other than
statistical significance is to bake in material/ business impact into the detection.
For a demo, please see our quickstart <https://linkedin.github.io/greykite/get_started>
_.
Algorithms currently supported within Greykite’s modeling framework:
Facebook Prophet <https://facebook.github.io/prophet/>
_Auto Arima <https://alkaline-ml.com/pmdarima/>
_Greykite offers components that could be used within other forecasting libraries or even outside the forecasting context.
scikit-learn
and statsmodels
regression models.forecast_simple
and predict
methods.forecast
and predict
methods.You can obtain forecasts with only a few lines of code:
.. code-block:: python
from greykite.common.data_loader import DataLoader
from greykite.framework.templates.autogen.forecast_config import ForecastConfig
from greykite.framework.templates.autogen.forecast_config import MetadataParam
from greykite.framework.templates.forecaster import Forecaster
from greykite.framework.templates.model_templates import ModelTemplateEnum
# Defines inputs
df = DataLoader().load_bikesharing().tail(24*90) # Input time series (pandas.DataFrame)
config = ForecastConfig(
metadata_param=MetadataParam(time_col="ts", value_col="count"), # Column names in `df`
model_template=ModelTemplateEnum.AUTO.name, # AUTO model configuration
forecast_horizon=24, # Forecasts 24 steps ahead
coverage=0.95, # 95% prediction intervals
)
# Creates forecasts
forecaster = Forecaster()
result = forecaster.run_forecast_config(df=df, config=config)
# Accesses results
result.forecast # Forecast with metrics, diagnostics
result.backtest # Backtest with metrics, diagnostics
result.grid_search # Time series CV result
result.model # Trained model
result.timeseries # Processed time series with plotting functions
For a demo, please see our quickstart <https://linkedin.github.io/greykite/get_started>
_.
Greykite is available on Pypi and can be installed with pip:
.. code-block::
pip install greykite
For more installation tips, see installation <http://linkedin.github.io/greykite/installation>
_.
Please find our full documentation here <http://linkedin.github.io/greykite/docs>
_.
Website <https://linkedin.github.io/greykite>
_Paper <https://doi.org/10.1145/3534678.3539165>
_ (KDD '22 Best Paper Runner-up, Applied Data Science Track)Blog post <https://engineering.linkedin.com/blog/2021/greykite--a-flexible--intuitive--and-fast-forecasting-library>
_Please cite Greykite in your publications if it helps your research:
.. code-block::
@misc{reza2021greykite-github,
author = {Reza Hosseini and
Albert Chen and
Kaixu Yang and
Sayan Patra and
Yi Su and
Rachit Arora},
title = {Greykite: a flexible, intuitive and fast forecasting library},
url = {https://github.com/linkedin/greykite},
year = {2021}
}
.. code-block::
@inproceedings{reza2022greykite-kdd,
author = {Hosseini, Reza and Chen, Albert and Yang, Kaixu and Patra, Sayan and Su, Yi and Al Orjany, Saad Eddin and Tang, Sishi and Ahammad, Parvez},
title = {Greykite: Deploying Flexible Forecasting at Scale at LinkedIn},
year = {2022},
isbn = {9781450393850},
publisher = {Association for Computing Machinery},
address = {New York, NY, USA},
url = {https://doi.org/10.1145/3534678.3539165},
doi = {10.1145/3534678.3539165},
booktitle = {Proceedings of the 28th ACM SIGKDD Conference on Knowledge Discovery and Data Mining},
pages = {3007–3017},
numpages = {11},
keywords = {forecasting, scalability, interpretable machine learning, time series},
location = {Washington DC, USA},
series = {KDD '22}
}
Copyright (c) LinkedIn Corporation. All rights reserved. Licensed under the
BSD 2-Clause <https://opensource.org/licenses/BSD-2-Clause>
_ License.