Paper · 2021-03-26 · cs.LG, cs.AI
Evaluation of deep learning models for multi-step ahead time series prediction
Compares simple RNN, LSTM, bidirectional LSTM, encoder-decoder LSTM, 1-D CNN and two feedforward nets (SGD, Adam) on seven univariate series, predicting 10 steps ahead from 5 lags. Author-reported: BD-LSTM and ED-LSTM have the best mean rank; LSTM is best on ACI-finance and Lazer test RMSE.
Time series forecastingRecurrent neural network (RNN)Direct multi-step forecastingConvolutional neural networktime-serieslstmmulti-step-forecasting
arXivPDFCodeMarkdown22 min read
AI-compiled by claude-haiku-5-5 on 2026-11-06, not yet reviewed by a human. Every claim cites its source; check it when a detail matters.
In plain words
The task is forecasting: given the last five values of a signal, predict the next ten. The paper compares seven neural networks on this same task, using the same windows of past values, on seven series. Four series come from simulated systems and three from real measurements (solar activity, a Santa Fe competition series and stock prices).
The authors report that the networks which read a window in both directions, and the design that squeezes the window into one summary and unrolls it into ten outputs, do best across the series. Plain feedforward nets and simple recurrent nets do worse. Each network is run 30 times, and the paper reports the average error with a confidence interval.
TL;DR
Seven neural forecasters are compared on seven univariate series, with 5 lagged inputs and 10 outputs trained as one direct multi-output problem §4.1 §5. The authors report that BD-LSTM or ED-LSTM has the lowest test RMSE on five of the seven series, and LSTM on the other two tab. 5 tab. 7. The released code is one script; it departs from the paper in several places (see Paper vs code).
Problem
Multi-step prediction can be done recursively, feeding each prediction back as input, or directly, predicting all horizons at once §1. Recursive error accumulates over horizons §1. The paper asks how well LSTM-type and other deep models perform on multi-step univariate prediction, which it says had not been evaluated for this task §1. It focuses on univariate series and a 10-step horizon §4.1.
Method
Data and preprocessing
- Series. Simulated: Mackey-Glass, Lorenz, Henon and Rossler. Real-world: Sunspot (solar activity; 2000 points, November 1834 to June 2001), ACI-finance (800 points, closing prices December 2006 to February 2010) and Lazer (Santa Fe competition, 500 points) §4.1.
- Scaling and split. Series are scaled to [0, 1]. The first 1000 points are used; the first 60% of them are for training and the rest for testing §4.1.
- Embedding. The series is embedded with dimension D = 5 and lag T = 1 (Takens embedding), with a 10-step-ahead target §3.1 §4.1. The embedded vector is Y(t) = [x(t), x(t-T), ..., x(t-(D-1)T)] §3.1.
- Windows. Each sample is 5 consecutive values as input and the next 10 as target, stride 1 Data processing.py [code: data/Data processing.py#L84].
# Sliding windows for direct 10-step prediction [§3.1] [§4.1]
def make_windows(series, n_in=5, n_out=10):
# Collect one (input, target) pair per start position [§3.1]
inputs, targets = [], []
for i in range(len(series)):
end_in = i + n_in
end_out = end_in + n_out
# Stop at the end [code: data/Data processing.py#L22-L26]
if end_out > len(series):
break
inputs.append(series[i:end_in])
targets.append(series[end_in:end_out])
return inputs, targetsModels
All models use ReLU activations §4.1. Hidden sizes and layer counts are in the configuration table below tab. 1. Adam is used for FNN-Adam, LSTM, BD-LSTM, ED-LSTM, the simple RNN and the CNN; SGD for FNN-SGD §4.1.
- FNN-SGD and FNN-Adam §3.2. A feedforward net (multilayer perceptron) trained by stochastic gradient descent, or by Adam. Single learning rate for SGD §3.2.
- Simple RNN §3.3. An Elman network with a context layer that stores the previous hidden state. Its update is Eq. (1) §3.3 eq. 1. Trained with backpropagation through time §3.3.
- LSTM §3.4. Input, forget and output gates with a cell state. The update is Eq. (2) §3.4 eq. 2. The paper reports h_0 = 0 and c_0 = 0 §3.4.
- BD-LSTM §3.5. Two LSTMs run in opposite time directions; the forward and backward states are combined at each step §3.5.
- ED-LSTM §3.6. An encoder LSTM maps the input window to a fixed-length vector; a decoder LSTM produces the output sequence from that vector, followed by a time-distributed output layer §3.6 tab. 1.
- CNN §3.7. A one-dimensional convolution with 64 filters, kernel size 3 and max-pooling of size 2, followed by dense layers tab. 1 [code: FNN/Code.py#L382-L386].
Adam update, as written in the paper §3.2 (unnumbered display):
# Adam update for parameters theta at step t [§3.2]
# The paper gives no values for lr, beta1, beta2 or eps
def adam_step(theta, grad, m, v, t, lr, beta1, beta2, eps):
# Running averages of the gradient and of its square [§3.2]
m = beta1 * m + (1 - beta1) * grad
v = beta2 * v + (1 - beta2) * grad * grad
# Bias correction for the zero initialisation [§3.2]
m_hat = m / (1 - beta1 ** t)
v_hat = v / (1 - beta2 ** t)
# Parameter step [§3.2]
theta = theta - lr * m_hat / (sqrt(v_hat) + eps)
return theta, m, vED-LSTM as the released code builds it:
# Encoder-decoder LSTM for 10-step prediction [§3.6]
# Code: FNN/Code.py lines 269-274
def ed_lstm(window):
# Input is 5 past values with one feature [§4.1] # (B, 5, 1)
# Encoder: 10 units, ReLU; keeps only the final state [§3.6]
code_vector = lstm_encoder(window) # (B, 10)
# Repeat the fixed-length vector once per horizon [§3.6]
repeated = repeat(code_vector, 10) # (B, 10, 10)
# Decoder: 10 units, one state per horizon [§3.6]
decoded = lstm_decoder(repeated) # (B, 10, 10)
# Per-horizon linear map to one value, ReLU output [§3.6]
return relu(dense_per_step(decoded)) # (B, 10, 1)Evaluation protocol
- Metric. RMSE, defined in Eq. (3) as the square root of the mean squared error over N observations §4.1 eq. 3. Per-horizon RMSE is also reported §4.2 tab. 5.
- Repetitions. 30 runs per model and series, with different initial network weights §4.2. Mean and 95% confidence interval are reported for train and test RMSE and for each horizon §4.2.
- Confidence interval. The paper does not give a formula. The released code uses the mean plus or minus 1.96 times the standard deviation divided by the square root of 30 (see Pitfalls) Code.py.
# Summary of one model on one series [§4.2]
# Code uses the same rule [code: FNN/Code.py#L526-L534]
def summarise(test_rmse_per_run):
# Mean of the 30 per-run test RMSE values [§4.2]
mean = average(test_rmse_per_run)
# Population std, numpy default ddof=0 [code: FNN/Code.py#L531-L532]
std = std_population(test_rmse_per_run)
# Normal approximation, 95% half width [code: FNN/Code.py#L533-L534]
half_width = 1.96 * std / sqrt(30)
return mean, half_widthConfiguration tab. 1
| Model | Input | Hidden layers | Output | Notes tab. 1 |
|---|---|---|---|---|
| FNN-Adam | 5 | 1 | 10 | One layer of 10 units |
| FNN-SGD | 5 | 1 | 10 | One layer of 10 units |
| LSTM | 5 | 1 | 10 | 10 LSTM cells |
| BD-LSTM | 5 | 1 | 10 | 10 cells in each direction |
| ED-LSTM | 5 | 4 | 10 | Encoder and decoder LSTMs, plus a per-step output layer |
| RNN | 5 | 2 | 10 | 10 units |
| CNN | 5 | 4 | 10 | 64 filters, kernel 3, pooling 2 |
Hyperparameters
| Name | Value | Where | Notes |
|---|---|---|---|
| Input window (lags) | 5 | §4.1 Data processing.py | Embedding D = 5 |
| Time lag T | 1 | §4.1 | Consecutive samples |
| Forecast horizon | 10 | §4.1 Code.py | Direct, all 10 outputs at once |
| Hidden units (FNN, LSTM, BD-LSTM, ED-LSTM, RNN) | 10 | tab. 1 Code.py | BD-LSTM: 10 per direction; ED-LSTM: 10 in encoder and decoder Code.py |
| CNN filters, kernel, pool | 64, 3, 2 | tab. 1 Code.py | Dense layer after flatten has 10 units Code.py |
| Maximum epochs | 1000 | §4.1 Code.py | Keras models run exactly 1000 epochs per run; no early stopping |
| Runs per model and series | 30 | §4.2 Code.py | Run-to-run seeds not stated; none set in code |
| Activation, hidden layers | ReLU | §4.1 Code.py | Also used as LSTM candidate and output activation in code |
| Output activation | not specified | §4.1 | Text says ReLU in all models; code: ReLU only for ED-LSTM Code.py, linear elsewhere |
| Optimiser, deep models | Adam | §4.1 Code.py | Keras defaults for lr, beta1, beta2, eps; not set in code |
| Optimiser, RNN | Paper: Adam; code: SGD | §4.1 Code.py | See Paper vs code |
| Learning rate, RNN (code) | 0.01 | Code.py | Not in paper |
| Learning rate, Adam and SGD MLPs | not stated | §4.1 | Library defaults in code |
| Batch size, Keras models | 64 | Code.py | Not in paper; no shuffling Code.py |
| Batch size, RNN | 1 | Code.py | One sample per update |
| L2 penalty, MLPs (code) | 0.1 | Code.py Code.py | Not in paper |
| Loss | MSE | Code.py Code.py | MLP uses squared error (library default) |
| Input scaling | [0, 1] | §4.1 | Scaler and fit range not stated |
| Train and test split | first 60% of first 1000 points | §4.1 | Split files are prepared outside the code path read here |
Results
Author-reported. Setup: seven univariate series, 10-step-ahead direct
prediction, 30 runs per model, RMSE on scaled data. Values are mean plus or
minus the 95% confidence-interval half width, copied from the appendix tables
of the paper. The released FNN/Results/OverallAnalysis.csv matches the
ACI-finance FNN-Adam row we checked (train 0.1628, test 0.0885, step 1 0.0165).
Headline. Lowest test RMSE on the overall test row: BD-LSTM on Sunspot (0.1147) and Rossler (0.0349); ED-LSTM on Henon (0.3294), Lorenz (0.0234) and Mackey-Glass (0.0602); LSTM on ACI-finance (0.0860) and Lazer (0.1910). Mean rank across the seven series tab. 2: BD-LSTM 2.00, ED-LSTM 2.14, LSTM 2.42, CNN 3.85, RNN 4.85, FNN-Adam 5.42, FNN-SGD 7.00. The paper says FNN-SGD is worst on all series §5. It also says CNN beats LSTM on Mackey-Glass and Rossler §4.2.
Performance rank tab. 2
| Problem | FNN-Adam | FNN-SGD | LSTM | BD-LSTM | ED-LSTM | RNN | CNN |
|---|---|---|---|---|---|---|---|
| ACI-finance | 2 | 7 | 1 | 3 | 4 | 5 | 6 |
| Sunspot | 6 | 7 | 2 | 1 | 3 | 4 | 5 |
| Lazer | 6 | 7 | 1 | 2 | 3 | 5 | 4 |
| Henon | 6 | 7 | 3 | 2 | 1 | 5 | 4 |
| Lorenz | 6 | 7 | 2 | 3 | 1 | 5 | 4 |
| Mackey-Glass | 6 | 7 | 4 | 2 | 1 | 5 | 1 |
| Rossler | 6 | 7 | 4 | 1 | 2 | 5 | 3 |
| Mean rank | 5.42 | 7.00 | 2.42 | 2.00 | 2.14 | 4.85 | 3.85 |
The paper gives no basis for the rank; see Pitfalls for two rows that do not follow from the appendix test values.
Per-series RMSE, train, test and horizons 1 to 10 tab. 5-tab. 11
Figures 6 to 12 plot RMSE with 95% interval error bars, for train and test across horizons and for each model at 10 steps: ACI-finance fig. 6, Sunspot fig. 7, Lazer fig. 8, Henon fig. 9, Lorenz fig. 10, Mackey-Glass fig. 11, Rossler fig. 12. Figures 13 to 17 show actual against predicted values for the best run of ED-LSTM on ACI-finance, Sunspot, Henon, Lazer and Mackey-Glass fig. 13-fig. 17.
ACI-finance tab. 5
| Row | FNN-Adam | FNN-SGD | LSTM | BD-LSTM | ED-LSTM | RNN | CNN |
|---|---|---|---|---|---|---|---|
| Train | 0.1628 ± 0.0012 | 0.1703 ± 0.0018 | 0.1471 ± 0.0014 | 0.1454 ± 0.0021 | 0.1437 ± 0.0019 | 0.1930 ± 0.0018 | 0.1655 ± 0.0013 |
| Test | 0.0885 ± 0.0011 | 0.0988 ± 0.0040 | 0.0860 ± 0.0025 | 0.0915 ± 0.0023 | 0.0923 ± 0.0032 | 0.0936 ± 0.0009 | 0.0978 ± 0.0011 |
| Step 1 | 0.0165 ± 0.0011 | 0.0209 ± 0.0022 | 0.0127 ± 0.0003 | 0.0127 ± 0.0002 | 0.0130 ± 0.0005 | 0.0173 ± 0.0004 | 0.0193 ± 0.0006 |
| Step 2 | 0.0203 ± 0.0012 | 0.0242 ± 0.0020 | 0.0168 ± 0.0003 | 0.0165 ± 0.0002 | 0.0171 ± 0.0003 | 0.0202 ± 0.0003 | 0.0217 ± 0.0004 |
| Step 3 | 0.0217 ± 0.0008 | 0.0266 ± 0.0032 | 0.0190 ± 0.0004 | 0.0194 ± 0.0002 | 0.0204 ± 0.0006 | 0.0228 ± 0.0003 | 0.0247 ± 0.0003 |
| Step 4 | 0.0249 ± 0.0009 | 0.0277 ± 0.0023 | 0.0220 ± 0.0004 | 0.0229 ± 0.0003 | 0.0239 ± 0.0008 | 0.0258 ± 0.0004 | 0.0266 ± 0.0002 |
| Step 5 | 0.0272 ± 0.0008 | 0.0299 ± 0.0015 | 0.0248 ± 0.0006 | 0.0253 ± 0.0004 | 0.0271 ± 0.0010 | 0.0284 ± 0.0004 | 0.0290 ± 0.0002 |
| Step 6 | 0.0289 ± 0.0006 | 0.0325 ± 0.0016 | 0.0281 ± 0.0008 | 0.0292 ± 0.0007 | 0.0302 ± 0.0012 | 0.0304 ± 0.0004 | 0.0315 ± 0.0004 |
| Step 7 | 0.0311 ± 0.0005 | 0.0342 ± 0.0020 | 0.0302 ± 0.0008 | 0.0331 ± 0.0010 | 0.0334 ± 0.0014 | 0.0327 ± 0.0004 | 0.0340 ± 0.0003 |
| Step 8 | 0.0323 ± 0.0004 | 0.0350 ± 0.0021 | 0.0333 ± 0.0010 | 0.0356 ± 0.0010 | 0.0359 ± 0.0014 | 0.0348 ± 0.0004 | 0.0363 ± 0.0006 |
| Step 9 | 0.0339 ± 0.0005 | 0.0357 ± 0.0012 | 0.0364 ± 0.0013 | 0.0388 ± 0.0011 | 0.0380 ± 0.0014 | 0.0371 ± 0.0003 | 0.0386 ± 0.0006 |
| Step 10 | 0.0357 ± 0.0008 | 0.0380 ± 0.0018 | 0.0367 ± 0.0015 | 0.0409 ± 0.0015 | 0.0395 ± 0.0014 | 0.0384 ± 0.0003 | 0.0401 ± 0.0005 |
Sunspot tab. 6
| Row | FNN-Adam | FNN-SGD | LSTM | BD-LSTM | ED-LSTM | RNN | CNN |
|---|---|---|---|---|---|---|---|
| Train | 0.2043 ± 0.0047 | 0.3230 ± 0.0064 | 0.1418 ± 0.0034 | 0.1369 ± 0.0033 | 0.1210 ± 0.0057 | 0.1875 ± 0.0011 | 0.1695 ± 0.0019 |
| Test | 0.1510 ± 0.0024 | 0.2179 ± 0.0041 | 0.1160 ± 0.0021 | 0.1147 ± 0.0020 | 0.1322 ± 0.0032 | 0.1342 ± 0.0004 | 0.1487 ± 0.0015 |
| Step 1 | 0.0163 ± 0.0016 | 0.0281 ± 0.0032 | 0.0072 ± 0.0005 | 0.0086 ± 0.0006 | 0.0109 ± 0.0006 | 0.0132 ± 0.0004 | 0.0186 ± 0.0002 |
| Step 2 | 0.0236 ± 0.0015 | 0.0352 ± 0.0022 | 0.0148 ± 0.0007 | 0.0155 ± 0.0007 | 0.0170 ± 0.0004 | 0.0212 ± 0.0003 | 0.0257 ± 0.0002 |
| Step 3 | 0.0311 ± 0.0013 | 0.0441 ± 0.0025 | 0.0220 ± 0.0005 | 0.0222 ± 0.0006 | 0.0237 ± 0.0003 | 0.0285 ± 0.0002 | 0.0321 ± 0.0003 |
| Step 4 | 0.0350 ± 0.0006 | 0.0518 ± 0.0022 | 0.0275 ± 0.0005 | 0.0276 ± 0.0006 | 0.0292 ± 0.0003 | 0.0346 ± 0.0002 | 0.0376 ± 0.0003 |
| Step 5 | 0.0407 ± 0.0012 | 0.0610 ± 0.0024 | 0.0321 ± 0.0006 | 0.0318 ± 0.0007 | 0.0348 ± 0.0004 | 0.0395 ± 0.0002 | 0.0419 ± 0.0004 |
| Step 6 | 0.0464 ± 0.0016 | 0.0677 ± 0.0027 | 0.0360 ± 0.0006 | 0.0358 ± 0.0006 | 0.0402 ± 0.0006 | 0.0431 ± 0.0002 | 0.0457 ± 0.0004 |
| Step 7 | 0.0514 ± 0.0019 | 0.0771 ± 0.0020 | 0.0397 ± 0.0006 | 0.0395 ± 0.0006 | 0.0458 ± 0.0011 | 0.0463 ± 0.0002 | 0.0498 ± 0.0005 |
| Step 8 | 0.0582 ± 0.0019 | 0.0856 ± 0.0023 | 0.0449 ± 0.0007 | 0.0440 ± 0.0005 | 0.0519 ± 0.0016 | 0.0503 ± 0.0002 | 0.0555 ± 0.0006 |
| Step 9 | 0.0653 ± 0.0016 | 0.0931 ± 0.0023 | 0.0509 ± 0.0009 | 0.0498 ± 0.0007 | 0.0590 ± 0.0020 | 0.0564 ± 0.0002 | 0.0633 ± 0.0007 |
| Step 10 | 0.0745 ± 0.0020 | 0.1012 ± 0.0019 | 0.0587 ± 0.0010 | 0.0576 ± 0.0010 | 0.0673 ± 0.0022 | 0.0641 ± 0.0003 | 0.0723 ± 0.0008 |
Lazer tab. 7
| Row | FNN-Adam | FNN-SGD | LSTM | BD-LSTM | ED-LSTM | RNN | CNN |
|---|---|---|---|---|---|---|---|
| Train | 0.3371 ± 0.0026 | 0.4251 ± 0.0157 | 0.1954 ± 0.0082 | 0.1619 ± 0.0106 | 0.1166 ± 0.0147 | 0.3210 ± 0.0020 | 0.2151 ± 0.0029 |
| Test | 0.2537 ± 0.0024 | 0.2821 ± 0.0098 | 0.1910 ± 0.0042 | 0.2007 ± 0.0042 | 0.2020 ± 0.0057 | 0.2580 ± 0.0031 | 0.2240 ± 0.0025 |
| Step 1 | 0.0746 ± 0.0027 | 0.0895 ± 0.0041 | 0.0577 ± 0.0021 | 0.0439 ± 0.0027 | 0.0490 ± 0.0039 | 0.0641 ± 0.0037 | 0.0942 ± 0.0025 |
| Step 2 | 0.1043 ± 0.0018 | 0.0983 ± 0.0046 | 0.0725 ± 0.0027 | 0.0892 ± 0.0022 | 0.0894 ± 0.0013 | 0.1176 ± 0.0019 | 0.0729 ± 0.0014 |
| Step 3 | 0.0820 ± 0.0026 | 0.0816 ± 0.0028 | 0.0807 ± 0.0007 | 0.0773 ± 0.0016 | 0.0707 ± 0.0014 | 0.0832 ± 0.0026 | 0.0684 ± 0.0022 |
| Step 4 | 0.0764 ± 0.0017 | 0.0852 ± 0.0048 | 0.0697 ± 0.0015 | 0.0547 ± 0.0018 | 0.0601 ± 0.0029 | 0.0762 ± 0.0008 | 0.0671 ± 0.0013 |
| Step 5 | 0.0761 ± 0.0019 | 0.0874 ± 0.0072 | 0.0512 ± 0.0015 | 0.0596 ± 0.0036 | 0.0694 ± 0.0073 | 0.0755 ± 0.0011 | 0.0701 ± 0.0020 |
| Step 6 | 0.0691 ± 0.0013 | 0.0787 ± 0.0037 | 0.0540 ± 0.0016 | 0.0655 ± 0.0014 | 0.0606 ± 0.0041 | 0.0730 ± 0.0015 | 0.0677 ± 0.0014 |
| Step 7 | 0.0632 ± 0.0013 | 0.0740 ± 0.0061 | 0.0537 ± 0.0024 | 0.0601 ± 0.0007 | 0.0582 ± 0.0031 | 0.0643 ± 0.0009 | 0.0643 ± 0.0041 |
| Step 8 | 0.0642 ± 0.0020 | 0.0864 ± 0.0053 | 0.0464 ± 0.0015 | 0.0460 ± 0.0015 | 0.0510 ± 0.0027 | 0.0611 ± 0.0015 | 0.0593 ± 0.0029 |
| Step 9 | 0.0891 ± 0.0021 | 0.1032 ± 0.0042 | 0.0507 ± 0.0021 | 0.0599 ± 0.0019 | 0.0527 ± 0.0021 | 0.0882 ± 0.0023 | 0.0773 ± 0.0019 |
| Step 10 | 0.0924 ± 0.0018 | 0.0968 ± 0.0052 | 0.0561 ± 0.0044 | 0.0631 ± 0.0037 | 0.0615 ± 0.0030 | 0.0947 ± 0.0027 | 0.0577 ± 0.0018 |
Henon tab. 8
| Row | FNN-Adam | FNN-SGD | LSTM | BD-LSTM | ED-LSTM | RNN | CNN |
|---|---|---|---|---|---|---|---|
| Train | 0.5470 ± 0.0023 | 0.5670 ± 0.0015 | 0.4542 ± 0.0071 | 0.4014 ± 0.0100 | 0.3235 ± 0.0316 | 0.5247 ± 0.0027 | 0.4728 ± 0.0038 |
| Test | 0.5378 ± 0.0022 | 0.5578 ± 0.0016 | 0.4516 ± 0.0052 | 0.4127 ± 0.0066 | 0.3294 ± 0.0290 | 0.5162 ± 0.0027 | 0.4779 ± 0.0027 |
| Step 1 | 0.1465 ± 0.0058 | 0.1725 ± 0.0031 | 0.0287 ± 0.0045 | 0.0241 ± 0.0014 | 0.0226 ± 0.0039 | 0.0885 ± 0.0093 | 0.0650 ± 0.0018 |
| Step 2 | 0.1606 ± 0.0024 | 0.1711 ± 0.0018 | 0.0682 ± 0.0058 | 0.0448 ± 0.0026 | 0.0454 ± 0.0069 | 0.1515 ± 0.0016 | 0.0859 ± 0.0038 |
| Step 3 | 0.1610 ± 0.0008 | 0.1707 ± 0.0017 | 0.0920 ± 0.0066 | 0.0610 ± 0.0077 | 0.0517 ± 0.0122 | 0.1577 ± 0.0003 | 0.1411 ± 0.0021 |
| Step 4 | 0.1714 ± 0.0009 | 0.1760 ± 0.0011 | 0.1386 ± 0.0044 | 0.0925 ± 0.0077 | 0.0609 ± 0.0154 | 0.1643 ± 0.0011 | 0.1519 ± 0.0022 |
| Step 5 | 0.1731 ± 0.0005 | 0.1769 ± 0.0007 | 0.1584 ± 0.0010 | 0.1287 ± 0.0046 | 0.0694 ± 0.0161 | 0.1718 ± 0.0001 | 0.1601 ± 0.0007 |
| Step 6 | 0.1758 ± 0.0006 | 0.1777 ± 0.0010 | 0.1642 ± 0.0007 | 0.1538 ± 0.0017 | 0.0868 ± 0.0165 | 0.1730 ± 0.0003 | 0.1674 ± 0.0004 |
| Step 7 | 0.1786 ± 0.0006 | 0.1814 ± 0.0009 | 0.1684 ± 0.0011 | 0.1593 ± 0.0016 | 0.1120 ± 0.0139 | 0.1764 ± 0.0003 | 0.1721 ± 0.0006 |
| Step 8 | 0.1781 ± 0.0005 | 0.1805 ± 0.0012 | 0.1707 ± 0.0008 | 0.1697 ± 0.0008 | 0.1371 ± 0.0107 | 0.1768 ± 0.0001 | 0.1718 ± 0.0003 |
| Step 9 | 0.1757 ± 0.0004 | 0.1788 ± 0.0011 | 0.1723 ± 0.0005 | 0.1737 ± 0.0004 | 0.1524 ± 0.0077 | 0.1752 ± 0.0001 | 0.1752 ± 0.0003 |
| Step 10 | 0.1762 ± 0.0009 | 0.1773 ± 0.0011 | 0.1756 ± 0.0005 | 0.1733 ± 0.0003 | 0.1689 ± 0.0046 | 0.1751 ± 0.0002 | 0.1737 ± 0.0002 |
Lorenz tab. 9
| Row | FNN-Adam | FNN-SGD | LSTM | BD-LSTM | ED-LSTM | RNN | CNN |
|---|---|---|---|---|---|---|---|
| Train | 0.1932 ± 0.0124 | 0.2761 ± 0.0048 | 0.0242 ± 0.0086 | 0.0300 ± 0.0127 | 0.0225 ± 0.0031 | 0.0538 ± 0.0091 | 0.0354 ± 0.0032 |
| Test | 0.1809 ± 0.0119 | 0.2649 ± 0.0048 | 0.0254 ± 0.0093 | 0.0310 ± 0.0137 | 0.0234 ± 0.0031 | 0.0542 ± 0.0097 | 0.0347 ± 0.0029 |
| Step 1 | 0.0183 ± 0.0042 | 0.0336 ± 0.0035 | 0.0025 ± 0.0006 | 0.0043 ± 0.0019 | 0.0051 ± 0.0015 | 0.0113 ± 0.0013 | 0.0055 ± 0.0006 |
| Step 2 | 0.0206 ± 0.0046 | 0.0432 ± 0.0030 | 0.0033 ± 0.0010 | 0.0054 ± 0.0026 | 0.0044 ± 0.0012 | 0.0129 ± 0.0012 | 0.0067 ± 0.0007 |
| Step 3 | 0.0253 ± 0.0043 | 0.0547 ± 0.0028 | 0.0042 ± 0.0019 | 0.0064 ± 0.0031 | 0.0046 ± 0.0010 | 0.0143 ± 0.0016 | 0.0077 ± 0.0009 |
| Step 4 | 0.0334 ± 0.0048 | 0.0651 ± 0.0032 | 0.0051 ± 0.0020 | 0.0074 ± 0.0035 | 0.0052 ± 0.0009 | 0.0151 ± 0.0018 | 0.0087 ± 0.0009 |
| Step 5 | 0.0481 ± 0.0072 | 0.0787 ± 0.0030 | 0.0064 ± 0.0026 | 0.0079 ± 0.0036 | 0.0059 ± 0.0009 | 0.0155 ± 0.0024 | 0.0098 ± 0.0009 |
| Step 6 | 0.0527 ± 0.0076 | 0.0866 ± 0.0033 | 0.0073 ± 0.0029 | 0.0094 ± 0.0046 | 0.0068 ± 0.0008 | 0.0164 ± 0.0029 | 0.0109 ± 0.0010 |
| Step 7 | 0.0613 ± 0.0064 | 0.0944 ± 0.0031 | 0.0089 ± 0.0033 | 0.0107 ± 0.0047 | 0.0079 ± 0.0009 | 0.0171 ± 0.0036 | 0.0120 ± 0.0010 |
| Step 8 | 0.0678 ± 0.0058 | 0.1027 ± 0.0025 | 0.0101 ± 0.0038 | 0.0125 ± 0.0057 | 0.0090 ± 0.0009 | 0.0186 ± 0.0042 | 0.0132 ± 0.0011 |
| Step 9 | 0.0885 ± 0.0060 | 0.1116 ± 0.0027 | 0.0117 ± 0.0045 | 0.0133 ± 0.0056 | 0.0100 ± 0.0010 | 0.0199 ± 0.0049 | 0.0142 ± 0.0013 |
| Step 10 | 0.0859 ± 0.0065 | 0.1178 ± 0.0026 | 0.0129 ± 0.0042 | 0.0146 ± 0.0059 | 0.0110 ± 0.0012 | 0.0226 ± 0.0058 | 0.0157 ± 0.0015 |
Mackey-Glass tab. 10
| Row | FNN-Adam | FNN-SGD | LSTM | BD-LSTM | ED-LSTM | RNN | CNN |
|---|---|---|---|---|---|---|---|
| Train | 0.1810 ± 0.0097 | 0.2576 ± 0.0053 | 0.0890 ± 0.0076 | 0.0750 ± 0.0067 | 0.0587 ± 0.0090 | 0.1317 ± 0.0003 | 0.0854 ± 0.0052 |
| Test | 0.1822 ± 0.0098 | 0.2599 ± 0.0054 | 0.0897 ± 0.0075 | 0.0765 ± 0.0068 | 0.0602 ± 0.0090 | 0.1321 ± 0.0003 | 0.0868 ± 0.0048 |
| Step 1 | 0.0162 ± 0.0037 | 0.0485 ± 0.0061 | 0.0056 ± 0.0011 | 0.0052 ± 0.0009 | 0.0059 ± 0.0010 | 0.0078 ± 0.0001 | 0.0075 ± 0.0007 |
| Step 2 | 0.0256 ± 0.0038 | 0.0621 ± 0.0051 | 0.0080 ± 0.0014 | 0.0083 ± 0.0015 | 0.0076 ± 0.0014 | 0.0142 ± 0.0001 | 0.0120 ± 0.0010 |
| Step 3 | 0.0398 ± 0.0051 | 0.0686 ± 0.0046 | 0.0120 ± 0.0018 | 0.0117 ± 0.0019 | 0.0103 ± 0.0020 | 0.0214 ± 0.0001 | 0.0167 ± 0.0013 |
| Step 4 | 0.0457 ± 0.0045 | 0.0745 ± 0.0049 | 0.0178 ± 0.0020 | 0.0155 ± 0.0023 | 0.0133 ± 0.0024 | 0.0290 ± 0.0001 | 0.0216 ± 0.0015 |
| Step 5 | 0.0520 ± 0.0044 | 0.0785 ± 0.0025 | 0.0238 ± 0.0024 | 0.0202 ± 0.0026 | 0.0168 ± 0.0027 | 0.0365 ± 0.0001 | 0.0262 ± 0.0016 |
| Step 6 | 0.0581 ± 0.0042 | 0.0880 ± 0.0031 | 0.0298 ± 0.0025 | 0.0244 ± 0.0027 | 0.0200 ± 0.0031 | 0.0434 ± 0.0001 | 0.0301 ± 0.0017 |
| Step 7 | 0.0680 ± 0.0047 | 0.0912 ± 0.0031 | 0.0341 ± 0.0028 | 0.0288 ± 0.0028 | 0.0227 ± 0.0033 | 0.0496 ± 0.0001 | 0.0332 ± 0.0018 |
| Step 8 | 0.0727 ± 0.0050 | 0.0937 ± 0.0022 | 0.0381 ± 0.0029 | 0.0318 ± 0.0027 | 0.0248 ± 0.0036 | 0.0547 ± 0.0001 | 0.0354 ± 0.0018 |
| Step 9 | 0.0761 ± 0.0046 | 0.0963 ± 0.0031 | 0.0406 ± 0.0030 | 0.0343 ± 0.0027 | 0.0261 ± 0.0038 | 0.0586 ± 0.0001 | 0.0364 ± 0.0017 |
| Step 10 | 0.0777 ± 0.0043 | 0.0990 ± 0.0026 | 0.0418 ± 0.0033 | 0.0359 ± 0.0026 | 0.0271 ± 0.0040 | 0.0615 ± 0.0001 | 0.0364 ± 0.0017 |
Rossler tab. 11
| Row | FNN-Adam | FNN-SGD | LSTM | BD-LSTM | ED-LSTM | RNN | CNN |
|---|---|---|---|---|---|---|---|
| Train | 0.1546 ± 0.0087 | 0.3757 ± 0.0100 | 0.0416 ± 0.0074 | 0.0281 ± 0.0098 | 0.0374 ± 0.0082 | 0.1088 ± 0.0009 | 0.0367 ± 0.0059 |
| Test | 0.1473 ± 0.0098 | 0.4314 ± 0.0122 | 0.0488 ± 0.0054 | 0.0349 ± 0.0070 | 0.0427 ± 0.0072 | 0.1030 ± 0.0008 | 0.0454 ± 0.0052 |
| Step 1 | 0.0148 ± 0.0026 | 0.0467 ± 0.0077 | 0.0080 ± 0.0009 | 0.0038 ± 0.0008 | 0.0085 ± 0.0025 | 0.0186 ± 0.0009 | 0.0086 ± 0.0010 |
| Step 2 | 0.0202 ± 0.0024 | 0.0666 ± 0.0058 | 0.0086 ± 0.0011 | 0.0047 ± 0.0014 | 0.0082 ± 0.0019 | 0.0218 ± 0.0005 | 0.0105 ± 0.0011 |
| Step 3 | 0.0252 ± 0.0022 | 0.0910 ± 0.0083 | 0.0099 ± 0.0013 | 0.0061 ± 0.0017 | 0.0098 ± 0.0018 | 0.0250 ± 0.0005 | 0.0118 ± 0.0011 |
| Step 4 | 0.0322 ± 0.0024 | 0.1060 ± 0.0078 | 0.0117 ± 0.0014 | 0.0072 ± 0.0020 | 0.0112 ± 0.0021 | 0.0290 ± 0.0004 | 0.0122 ± 0.0014 |
| Step 5 | 0.0400 ± 0.0039 | 0.1257 ± 0.0082 | 0.0135 ± 0.0015 | 0.0084 ± 0.0021 | 0.0128 ± 0.0021 | 0.0314 ± 0.0004 | 0.0122 ± 0.0016 |
| Step 6 | 0.0490 ± 0.0063 | 0.1424 ± 0.0069 | 0.0155 ± 0.0019 | 0.0100 ± 0.0023 | 0.0141 ± 0.0021 | 0.0339 ± 0.0004 | 0.0128 ± 0.0019 |
| Step 7 | 0.0527 ± 0.0049 | 0.1572 ± 0.0063 | 0.0170 ± 0.0020 | 0.0120 ± 0.0024 | 0.0151 ± 0.0022 | 0.0360 ± 0.0004 | 0.0139 ± 0.0020 |
| Step 8 | 0.0603 ± 0.0050 | 0.1664 ± 0.0075 | 0.0185 ± 0.0022 | 0.0142 ± 0.0027 | 0.0159 ± 0.0024 | 0.0382 ± 0.0004 | 0.0157 ± 0.0020 |
| Step 9 | 0.0621 ± 0.0036 | 0.1818 ± 0.0067 | 0.0204 ± 0.0024 | 0.0157 ± 0.0030 | 0.0167 ± 0.0026 | 0.0404 ± 0.0005 | 0.0185 ± 0.0021 |
| Step 10 | 0.0673 ± 0.0056 | 0.1881 ± 0.0078 | 0.0225 ± 0.0026 | 0.0178 ± 0.0032 | 0.0180 ± 0.0030 | 0.0424 ± 0.0004 | 0.0220 ± 0.0022 |
Literature comparison tab. 3 tab. 4
The paper also lists published numbers from other methods (RTRL, ESN, EKF, UKF, GPF, ANFIS, KELM, CMTL, SVR and its variants) for some series and horizons tab. 3 tab. 4. The authors say the comparison is not fair: the other methods may use different models, data processing and error measures, and some report the best run rather than mean and spread §4.3. Use these values only with their original sources.
Paper vs code
The released repository is sydney-machine-learning/deeplearning_timeseries,
pinned at commit 4efda2d. It contains one script with all seven models
(FNN/Code.py) and a data-preparation script (data/Data processing.py); the
Keras and torch models are inside FNN/Code.py, not in separate files. It has
no LICENSE file.
- RNN optimiser. Paper: Adam for the simple RNN §4.1. Code: torch SGD with learning rate 0.01, one sample per update Code.py Code.py.
- RNN architecture. Paper: Elman network with a context layer §3.3.
Code: one
RNNCellof 10 units on the 5-value window, with the hidden state set to zeros on every call, followed by a linear output layer Code.py. The 5 lags therefore enter as one step, not as a sequence. Table 1 says 2 hidden layers tab. 1. - Independent runs. Paper: 30 runs with different initial weights §4.2.
Code: the Keras models (LSTM, BD-LSTM, ED-LSTM, CNN) are built once
Code.py Code.py Code.py
Code.py, and
fitis called 30 times on the same model Code.py. Keras keeps weights betweenfitcalls, so each run continues the previous one. The RNN builds a new model per run Code.py. The MLPs reuse one estimator; scikit-learn'sfitstarts from new weights unlesswarm_startis set (library behaviour, not run here) Code.py Code.py. - RMSE normalisation. Paper: Eq. (3), a root mean square over N observations §4.1 eq. 3. Code: the helper sums squared errors over all columns and divides by the number of rows Code.py. With 10 outputs the overall RMSE is therefore the square root of the sum of the 10 per-horizon mean squared errors, i.e. sqrt(10) times the per-element RMSE. Our arithmetic on the ACI-finance FNN-Adam step values in tab. 5 gives about 0.088 for this form, matching the reported test RMSE of 0.0885; the paper's form gives about 0.028.
- LSTM activation. Paper: Eq. (2) uses tanh for the candidate state and
output §3.4 eq. 2; text says ReLU in all models §4.1. Code:
activation='relu'for LSTM layers Code.py Code.py Code.py Code.py. - Output activation. Paper: ReLU in all models §4.1. Code: ReLU only on the ED-LSTM output Code.py; linear outputs for LSTM, BD-LSTM Code.py Code.py and CNN Code.py.
- Batch size and shuffling. Not in paper. Code: batch size 64,
shuffle=Falsefor the Keras models Code.py Code.py Code.py Code.py. - MLP settings. Not in paper. Code:
alpha=0.1,tol=0,max_iter=1000Code.py Code.py. Withtol=0and no early stopping, scikit-learn still stops after about 10 epochs without improvement (library default; not run here), so MLPs may train for fewer than 1000 epochs. - Only CNN runs by default.
main()loops overrange(7, 8), so only method 7 (CNN) is run as committed Code.py. The other six methods require widening the loop. All results are written to the sameOverallAnalysis.csvCode.py. - Confidence interval. Code:
np.std(ddof 0), mean plus or minus 1.96 times std over the square root of 30 Code.py. Paper: no formula. - Best-run figures. The plotted predictions come from the run with the lowest test RMSE Code.py Code.py. They do not show a typical run.
- Data. The series are rebuilt from the values at zero-based indices 3 and 4 of the pre-split
train.txtandtest.txtrows Data processing.py, and windows are made withsplit_sequenceData processing.py. The file format, the scaler and the split ratio are not described in the code read here.scaled_dataset.txtfor Sunspot has 1000 lines, matching the paper's first 1000 points. - Simulated series. Parameters, integration step and length of Mackey-Glass,
Lorenz, Henon and Rossler are not stated in the paper. The repository ships the
raw
.datfiles lorenz.dat and other data files only.
Pitfalls
- Overall RMSE scale. The paper's Eq. (3) and the code's helper do not agree for multi-output models Code.py. To reproduce the tables, use the code's form; to match the paper's text, use the average. Check which one your metric uses before comparing numbers.
- Repeated runs are not independent for Keras. The 30 "runs" of LSTM, BD-LSTM, ED-LSTM and CNN continue training one network for 1000 epochs each. The spread across runs therefore does not measure initial-weight variance as the paper describes §4.2. Re-create the model inside the loop to get the paper's setup. To reproduce the published intervals, use the code's std and 1.96 rule (see Evaluation protocol).
- Seeds. No random seed is set in
FNN/Code.py. Repeat runs will not match the published numbers exactly. - Adam settings. The paper gives no learning rate, beta1, beta2 or epsilon §3.2 §4.1. The code leaves them to the Keras and scikit-learn defaults Code.py Code.py. Note the RNN uses a torch SGD learning rate of 0.01 Code.py.
- Equation (2) is wrong as printed. The cell-state update is wrapped in a sigmoid §3.4 eq. 2; the standard update is a sum without that outer sigmoid, and the paper's text gives no bias terms in the equations although it names b. The weight letters are also swapped against Eq. (1): input weights are W in Eq. (1) and U in Eq. (2) §3.3 §3.4. Implement the standard LSTM and check against the code.
- Table 2 ranks. Mackey-Glass CNN is ranked 1, tied with ED-LSTM. On the appendix test totals the order is ED-LSTM 0.0602, BD-LSTM 0.0765, CNN 0.0868, LSTM 0.0897, so CNN is third tab. 10 tab. 2. On Lazer, FNN-Adam (0.2537) is better than RNN (0.2580) on the test total, but the table ranks RNN 5th and FNN-Adam 6th tab. 7 tab. 2. The paper does not state the ranking basis, so these rows cannot be checked. Do not cite the rank table alone.
- Abstract wording. "BD-LSTM and ED-LSTM" hold on mean rank and on five of seven series, but LSTM is best on ACI-finance and Lazer tab. 5 tab. 7.
- Figure reference. The text cites Figure 7(b) for the ACI-finance comparison §5. By float order the ACI-finance figure is Figure 6 fig. 6.
- Literature numbers are not comparable. Several entries use a different embedding dimension, and the starred entries are not fair by the authors' own account §4.3.
- Unstated details to decide. Learning-rate schedule, batch size for the MLPs and the RNN, initial weights, the scaler's fit range, and the split mechanism are not in the paper. Each one must be chosen before a rerun.
- Cost not reported. Training time per run is not given in the paper.
Lineage
- Builds on the Elman network, the LSTM, bidirectional RNNs, sequence-to-sequence encoder-decoder LSTMs and Adam, as the paper cites them §2.2 §3.2-§3.6.
- Compared against published multi-step methods in the paper's literature tables: reinforced RTRL and echo state networks §2.1 §4.3, extended, unscented and particle filters §4.3, multi-output KELM §4.3, coevolutionary multi-task learning §2.1 §4.3, and SVR variants §4.3.
- Superseded by: not established from this wiki's content.
Source and license
Adapted from “Evaluation of deep learning models for multi-step ahead time series prediction” by Rohitash Chandra, Shaurya Goyal, Rishabh Gupta (arXiv:2103.14250), used under CC BY 4.0. Changes: condensed and restructured for implementation, with tables, equations and algorithms taken from the paper and its code, each cited to its source. Not affiliated with or endorsed by the authors. Code citations refer to https://github.com/sydney-machine-learning/deeplearning_timeseries at commit 4efda2d3803c (none (no LICENSE file in repository)). Any quoted code is shown under that license.