[ENH] Implement N-BEATS (Neural Basis Expansion Analysis for Time Series) forecaster #3143
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
[ENH] Implement N-BEATS (Neural Basis Expansion Analysis for Time Series) forecaster
Reference Issues/PRs
What does this implement/fix? Explain your changes.
This PR implements the N-BEATS deep learning architecture https://arxiv.org/abs/1905.10437 as a new forecaster in
aeon.forecasting.deep_learning.Key Features Implemented:
_NBeatsDataGeneratorto implement the paper's specific training methodology: sampling random anchor points from history to maximize diversity, rather than sequential windowing.predict_decomposition(y)method. This allows users to retrieve the specific outputs of the Trend and Seasonality stacks, fulfilling the interpretability claims of the paper.Files Added:
aeon/forecasting/deep_learning/_nbeats.py: The core implementation.aeon/forecasting/deep_learning/tests/test_nbeats.py: Unit tests covering generic/interpretable modes, weight sharing, and decomposition shapes.Does your contribution introduce a new dependency? If yes, which one?
No new dependencies. It utilizes
TensorFlow, which is already an optional soft dependency inaeon.Any other comments?
The implementation defaults to the "Interpretable" configuration (Trend + Seasonality stacks) as it provides the most value over standard black-box DL models. The
predict_decompositionmethod returns a dictionary separating the "Trend" and "Seasonality" components from the total forecast.PR checklist
For all contributions
For new estimators and functions
__maintainer__at the top of relevant files and want to be contacted regarding its maintenance. Unmaintained files may be removed. This is for the full file, and you should not add yourself if you are just making minor changes or do not want to help maintain its contents.For developers with write access