-
Notifications
You must be signed in to change notification settings - Fork 219
Description
Describe the feature or idea you want to propose
The N-BEATS (Neural Basis Expansion Analysis for Interpretable Time Series Forecasting) network is a deep learning model for univariate time series forecasting.
It is based on backward and forward residual connections and consists of stacks of fully connected layers. Each stack is made up of multiple blocks, and each block generates both a backcast and a forecast. The forecasts are summed across blocks to produce the final prediction.
This issue proposes adding NBeatsNetwork under aeon/networks
, enabling Aeon users to leverage this interpretable and high-performing model for time series forecasting tasks.
Reference:
Oreshkin, B. N., Carpov, D., Chapados, N., & Bengio, Y. (2019).
“N-BEATS: Neural basis expansion analysis for interpretable time series forecasting”.
arXiv preprint arXiv:1905.10437.
Describe your proposed solution
Following will be the structure of the NBeatsNetwork
:
class NBeatsNetwork(BaseDeepLearningNetwork):
def __init__(
self,
horizon,
stacks=None,
num_blocks_per_stack=2,
units=30,
num_trend_coefficients=3,
num_seasonal_coefficients=5,
num_generic_coefficients=7,
share_weights=True,
share_coefficients=True,
):
...
def _trend_model(self, theta, t_, p):
...
def _seasonality_model(self, theta, t_, p):
...
def _trend_block(self, h, p, t_b, t_f):
...
def _seasonality_block(self, h, p, t_b, t_f):
...
def _generic_block(self, h, p, t_b, t_f):
...
def _get_block_output(self, stack_type, h, t_b, t_f):
...
def build_network(self, input_shape, **kwargs):
...
Describe alternatives you've considered, if relevant
No response
Additional context
No response