Time series forecasting at scale with LightGBM
Project description
TimeMurmur
Quickstart
pip install TimeMurmur
Get example dataset and ensure the date column is Datetime:
from TimeMurmur.utils.utility_functions import get_data
train_df = get_data()
train_df['Datetime'] = pd.to_datetime(train_df['Datetime'])
This dataset is a subset of the weekly data from M4, it includes the required ID, Datetime, and History columns.
The most basic model you can fit is:
murmur = Murmur(floor=0)
fitted = murmur.fit(train_df,
target_column='History',
id_column='ID',
date_column='Datetime',
freq='W')
predicted = murmur.predict(20)
These parameters are required, the freq is 'W' for Weekly following standard frequency nomenclature. You can take a look with the helper function:
for i in range(3):
murmur.plot(fitted, predicted=predicted, murmur_id=i)
Adding AR Lags
In order to do recursive forecasting utilizing past values, just pass a list of lags you want to the ar parameter:
murmur = Murmur(floor=0)
fitted = murmur.fit(train_df,
target_column='History',
id_column='ID',
date_column='Datetime',
freq='W',
n_basis=[10],
ar=[1,2,3,4])
predicted = murmur.predict(20)
Here we use a linear basis function with 4 ar lags passed as a list.
Adding Seasonality
Seasonality works similar to the ar lags. We can pass multiple seasonal periods in a list if we have multiple seasonalities to account for.
murmur = Murmur(floor=0)
fitted = murmur.fit(train_df,
target_column='History',
id_column='ID',
date_column='Datetime',
freq='W',
n_basis=[10],
ar=[1,2,3,4],
seassonal_period=[4,52])
predicted = murmur.predict(20)
LightGBM Parameters
You can pass a few of the most influential LightGBM parameters to fit such as num_iterations
and num_leaves
:
murmur = Murmur(floor=0)
fitted = murmur.fit(train_df,
target_column='History',
id_column='ID',
date_column='Datetime',
freq='W',
n_basis=[10],
ar=[1,2,3,4],
seassonal_period=[4,52],
num_iterations=100,
learning_rate=.1,
num_leaves=31)
predicted = murmur.predict(20)
Fitting Quantiles
To fit quantiles pass quantile
for objective
and the desired quantile percentage to alpha
.
murmur = Murmur(floor=0)
fitted = murmur.fit(train_df,
target_column='History',
id_column='ID',
date_column='Datetime',
freq='W',
n_basis=[10],
ar=[1,2,3,4],
seassonal_period=[4,52],
num_iterations=100,
learning_rate=.1,
num_leaves=31,
objective='quantile',
alpha=.9)
predicted = murmur.predict(20)
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distributions
Built Distribution
Hashes for TimeMurmur-0.0.4-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | c01fc7a2aa00c057a00ebf235aef2acc82df9e2b5cf1420ef6da0f7ef9643d2d |
|
MD5 | 1fb82fb50674750951a8129a3c839339 |
|
BLAKE2b-256 | 01edb9cf037b52033d57ca2d03f4173db28c723b75981a2aa4cd1e5300ec76ff |