Time series prediction niceties, where what needs to be predicted is the future. Filed under forecasting because in machine learning terminology, prediction is a general term that does not imply extrapolation into the future necessarily.
🏗 handball to Rob Hyndman.
See recursive identification for generic theory of learning under the distribution shift induced by a moving parameter vector.
Rob Hyndman explains how to cross-validate time series models that use only the lagged observations. Cosma Shalizi mentions the sample splitting problem for time series for post-selection inference and has supervised students to do some work with it, notably (Lunde 2019).
Training data intake
There is a common pattern with training time series modes that they each predict the next observation from the previous observations, which is not how a classic data loader works in machine learning. The time at which the future observations are evaluated is the horizon and the ones used to make that prediction are the history. For patterns to handle this in neural networks in particular, see Recurrent neural networks.
Not comprehensive, just noting some useful time series forecasting models/packages as I encounter them. Peter Cotton attempts to collate Popular Python Time Series Packages.
Tidyverse time series analysis and forecasting packages
A good first stop.
You can find a presentation on these tools by Rob Hyndman.
- tsibble: Tidy Temporal Data Frames and Tools [CRAN]
- tsibbledata: Example datasets for tsibble [CRAN]
- feasts: Feature Extraction And Statistics for Time Series [CRAN]
- fable: Forecasting Models for Tidy Time Series [CRAN]
- sugrrants: Supporting Graphs for Analysing Time Series. Tools for plotting temporal data using the tidyverse and grammar of graphics framework. [CRAN]
- gravitas: Explore Probability Distributions for Bivariate Temporal Granularities. [CRAN]
scikit-learn style: Nixtla, sktime, darts
Rob J Hyndman , in Python implementations of time series forecasting and anomaly detection reccommends Nixtla and sktime as good implementations. Nixtla is big! Rob recommends starting from
- statsforecast: Automatic ARIMA and ETS forecasting
- hierarchicalforecast: Hierarchical forecasting
- tsfeatures: Time series features
Darts (source) (Herzen et al. 2022). aims to be a scikit-learn for time series forecasting. Includes many other algorithms such as prophet, Challu et al. (2022), Oreshkin et al. (2020a) and Salinas, Flunkert, and Gasthaus (2019).
is a procedure for forecasting time series data. It is based on an additive model where non-linear trends are fit with yearly and weekly seasonality, plus holidays. It works best with daily periodicity data with at least one year of historical data. Prophet is robust to missing data, shifts in the trend, and large outliers.
This post rips Prophet (a forecasting package I helped create) to shreds and I agree with most of it🥲. I always suspected the positive feedback was mostly from folks who’d had good results—conveniently the author has condensed many bad ones into one place.
Hosseini et al. (2021)
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.
Automatic Smoothing for Attention Prioritization in Time Series
ASAP automatically smooths time series plots to remove short-term noise while retaining large-scale deviations.
The M4 dataset is a collection of 100,000 time series used for the fourth edition of the Makridakis forecasting Competition. The M4 dataset consists of time series of yearly, quarterly, monthly and other (weekly, daily and hourly) data, which are divided into training and test sets. The minimum numbers of observations in the training test are 13 for yearly, 16 for quarterly, 42 for monthly, 80 for weekly, 93 for daily and 700 for hourly series. The participants were asked to produce the following numbers of forecasts beyond the available data that they had been given: six for yearly, eight for quarterly, 18 for monthly series, 13 for weekly series and 14 and 48 forecasts respectively for the daily and hourly ones.
- M4 Dataset | Papers With Code
- Mcompetitions/M4-methods: Data, Benchmarks, and methods submitted to the M4 forecasting competition
- M4 Forecasting Competition | Rob J Hyndman
- M4 – MOFC
Now we are up to M5 and M6 is cooking.
What’s microprediction you say?
The act of making thousands of predictions of the same type over and over again. Microprediction can
- Clean and enrich live data
- Alert you to outliers and anomalies
- Provide you short term forecasts
- Identify patterns in model residuals
Moreover it can be combined with patterns from Control Theory and Reinforcement Learning to
- Engineer low cost but tailored intelligent applications
Often enough AI is microprediction, albeit bundled with other mathematical or application logic.
- You publish a live data value.
- The sequence of these values gets predicted by a swarm of algorithms.
- Anyone can write a crawler that tries to predict many different streams.
Microprediction APIs make it easy to:
- Separate the act of microprediction from other application logic.
- Invite contribution from other people and machines
- Benefit from other data you may never have considered.
… Let’s say your store is predicting sales and I’m optimizing an HVAC system across the street. Your feature space and mine probably have a lot in common.
I am unclear how the datastreams as set up incorporates domain knowledge and private side information, which seems the hallmark of natural intelligence and, e.g. science. Perhaps they feel domain knowledge is a bug standing in the way of truly general artificial intelligence? If I had free time I might try to get a better grip on what they are doing, whoever they are.
Alternatively, they are coming at this from a chartist quant perspective and data are best considered as sort-of-anonymous streams of numbers, the better to attract disinterested competition.