Francisco Trejo
05/08/2023, 11:42 PMPascal Schindler
05/09/2023, 9:29 AMIntegerGreaterThan(lower_bound=0)
with the following config: What are the reasosns?
horizon = 60
config_nhits = {
"input_size": tune.choice([14 ,28, 28*2, 28*3, 28*5, 2 * horizon]), # Length of input window
"n_blocks": 5*[1], # Length of input window
"mlp_units": 5 * [[512, 512]], # Length of input window
"interpolation_mode": tune.choice(['linear']),
"n_pool_kernel_size": tune.choice([5*[1], 5*[2], 5*[4],
[8, 4, 2, 1, 1], [16, 8, 1]]), # MaxPooling Kernel size
"n_freq_downsample": tune.choice([[8, 4, 2, 1, 1],
[1, 1, 1, 1, 1],
[168, 24, 1],
[24, 12, 1],
[1, 1, 1]]), # Interpolation expressivity ratios
"learning_rate": tune.loguniform(1e-4, 1e-2), # Initial Learning rate
"scaler_type": tune.choice([None]), # Scaler type
"max_steps": tune.choice([1000]), # Max number of training iterations
"batch_size": tune.choice([16, 32, 64, 128, 256, 512]), # Number of series in batch
"windows_batch_size": tune.choice([32, 64, 128, 256, 512, 1024, 2048]), # Number of windows in batch
"random_seed": tune.randint(1, 20),
"scaler_type": tune.choice(["robust", None]), # Random seed
"hist_exog_list": ["week_day", "month", "trends"],
"futr_exog_list": ["week_day", "month"]
}
Kevin
05/09/2023, 3:58 PMChris Gervais
05/11/2023, 2:41 PMTyler Nisonoff
05/13/2023, 12:58 PMnf.predict(futr_df=<day-to-pred>)
However, it seems that this always returns a dataframe with a ds column with just the next 24 hours after where I stopped training.
Is there some way to apply to model to the next N days without retraining it every time? or would i have to retrain / finetune on the data since then? Perhaps the latter is the only way to support historical features?marah othman
05/15/2023, 2:36 PMShreya Mathur
05/15/2023, 3:35 PMGerrit Rindermann
05/15/2023, 7:15 PMTyler Nisonoff
05/16/2023, 9:40 PMt-14
as i do not yet have prices from 11am-midnight
I could extend the horizon to be 24+14
to predict 10am -> 12am the next day, but then in training / fit we'd step by the horizon, instead of just stepping forward 10 days.
is there some way to fit this into the neuralforecast approach?Pascal Schindler
05/17/2023, 4:50 PMNakul Upadhya
05/17/2023, 8:54 PMChris Gervais
05/18/2023, 10:43 AMDawie van Lill
05/30/2023, 9:52 AMmlp_config = {
"input_size": tune.choice([2, 4, 12, 20]),
"hidden_size": tune.choice([256, 512, 1024]),
"num_layers": tune.randint(2, 6),
"learning_rate": tune.loguniform(1e-4, 1e-1),
"batch_size": tune.choice([32, 64, 128, 256]),
"windows_batch_size": tune.choice([128, 256, 512, 1024]),
"random_seed": tune.randint(1, 20),
"hist_exog_list": tune.choice([pcc_list]),
"futr_exog_list": tune.choice([fcc_list]),
"max_steps": tune.choice([500, 1000]),
"scaler_type": tune.choice(["robust"]),
}
The hist_exog_list
and futr_exog_list
are lists of historical and future exogenous variables. When I fit the model I use nf.fit(df=df, val_size=20)
where the df
is my dataframe that contains the target variable as well as the exogenous variables. Then when I predict I use nf.predict(futr_df=futr_df)
where futr_df
contains only the observations of the future exogenous variables that extend beyond the time period of the point of prediction.
Does this seem correct? Or am I doing something wrong in the specification of the future exogenous variables. In my case there is only one period beyond the cut-off for the target where future exogenous variables are available, so the future_df
dataframe only has one row and many columns (for the different features).marah othman
05/30/2023, 2:24 PMNasreddine D
05/30/2023, 3:08 PMFrancisco Trejo
05/31/2023, 6:23 PMSyed Umair Hassan
06/01/2023, 8:20 AMYang Guo
06/07/2023, 12:11 AMSyed Umair Hassan
06/10/2023, 7:09 PMManuel Chabier Escolá Pérez
06/11/2023, 3:23 PMmarah othman
06/12/2023, 1:27 PMKaustav Chaudhury
06/13/2023, 10:27 AMPatrick
06/13/2023, 12:25 PMPatrick
06/13/2023, 12:25 PMYang Guo
06/13/2023, 5:04 PMDawie van Lill
06/13/2023, 8:40 PMRuntimeError: einsum(): subscript p has size 2 for operand 1 which does not broadcast with previously seen size 0
. This only happens with the AutoNBEATS and AutoNBEATSx models. Other models run fine. The code that I have for AutoNBEATS worked perfectly fine until about a week ago.Syed Umair Hassan
06/14/2023, 11:55 AMViet Yen Nguyen
06/15/2023, 11:36 AMYang Guo
06/15/2023, 2:39 PMinput_size
, but asked to make prediction on a data of h
.
The goal is to make evaluate over randomly chosen window on the validation dataset. Currently, I am thinking of doing resampling myself, but I am wondering if there is in-built features for insample evaluation. I think predict_insample
might be doing this, but I am confused about what the output of predict_insample is. Does it only contain the predicted value? Is it a fair metrics to simply compute accuracy of predict_insample with the original df as a measurement of method.Aditya Limaye
06/15/2023, 4:30 PMn_freq_downsample
. i noticed in the AutoNHITS default_config definition, there is a tune.choice over the following values:
"n_freq_downsample": tune.choice(
[
[168, 24, 1],
[24, 12, 1],
[180, 60, 1],
[60, 8, 1],
[40, 20, 1],
[1, 1, 1],
]
),
do you all have any intuition about whether lining up these frequencies with known natural frequencies of the data is useful for performance? for example, [168, 24, 1] seems to correspond to weekly (24 x 7) , daily (24 x 1), and hourly frequencies.
the reason i ask is as follows: let's say i have an NHITS model that predicts hourly-sampled data, and i find through the course of hyperparameter optimization that n_freq_downsample=[168, 24, 1]
is most performant. if i was then to train a model that predicts the same series, but now sampled at 10minute frequency (6 samples per hour), should i then change my hyperparameter search space to include a choice for n_freq_downsample = [168*6, 24*6, 6]
?
any insight you might have would be appreciated - thanks in advance!