owned this note
owned this note
Published
Linked with GitHub
# GSoC 2025 - DL Forecasting Balgopal
###### tags: `aeon-gsoc`
__Contributor:__ [Balgopal Moharana](https://github.com/lucifer4073)
__GSoC page:__ https://summerofcode.withgoogle.com/organizations/numfocus/projects/details/arjEn266
__Project:__ aeon - Deep Learning for Forecasting
__Project length:__ 12 weeks
__Mentors:__ Ali Ismail-Fawaz, Tony Bagnall, Matthew Middlehurst
__Mid-project evaluation:__ July 14
__Final evaluation:__ September 1
__Blog link:__ https://medium.com/@lucifer4073/gsoc-25-journey-af8e3e0c2621
__Regular meeting time:__ 15:00 Monday UTC
__Meeting time availability:__ 14:00 - 18:00 UTC
## Project Summary
Time series forecasting is paramount in many domains, including finance, healthcare, energy, and climate science. This project suggests incorporating deep learning-based forecasting models—Informer, TCN, and DeepAR—into the aeon/tookit. The objectives are to construct an efficient and scalable framework for forecasting that accommodates top-performing models, is compatible with Aeon’s data management, and provides stable training, evaluation, and documentation. Through simplifying the availability of advanced forecasting software, the project would make it easier to utilize the toolkit to assist researchers with streamlined time series analysis.
### Wish list of algorithms
RNN (Windowed)
Informer
TCN
DeepAR
## Project Timeline
(preliminary)
Issues:
### Week 1-2
- Start on basic `BaseDeepForecaster` in `forecasting/deep_learning`
- Implement `RecurrentNetwork` in `networks` default to RNN, other possibilities: LSTM and GRU
- Implement `RecurrentRegressor` using `RecurrentNetwork` and `BaseDeepRegressor`
- Add testing for functionality and parameters of both and add to API webpage
- Apply `RecurrentRegressor` for forecasting using the windower class in a test
RNN default [link sktime-dl](https://github.com/sktime/sktime-dl/blob/master/sktime_dl/regression/_rnn.py)
### Week 3-4
- Finish preliminary `BaseDeepForecaster` based on feedback
- Adding loading/saving functionalities for `BaseDeepForecaster`
- Implement `InformerNetwork` in `networks`
- Implement `InformerForecaster` in `forecasting/deep_learning`
- Add testing functionality for `InformerForecaster`
paper: [Informer: Beyond efficient transformer for long sequence time-series forecasting](https://doi.org/10.1609/aaai.v35i12.17325)
### Week 5-6
- Add generic testing for `BaseDeepForecaster` in the `testing` module
- Implement `TCNNetwork` in `networks`
- Implement `TCNNForecaster` in `forecasting/deep_learning`
- Add testing functionality for `TCNNForecaster`
paper: [An Empirical Evaluation of Generic Convolutional and Recurrent Networks for Sequence Modeling](https://arxiv.org/pdf/1803.01271)
### Mid-project Deliverables
- Implementation of 1 Regression Forecaster: `RecurrentRegressor`
- Implementaiton of 2 Deep learning Forecasters: `InformerForecaster` and `TCNNForecaster`
- Implementaiton of testing for each of three networks in the`networks` module
- Implementaiton of testing for each of the three forecasters
### Week 7-8
- Implement `DeepARNetwork` in `networks` without probabilistic output
- Implement `DeepARForecaster` in `forecasting/deep_learning` with probabilistic output
- Add testing functionality for `DeepARForecaster`
paper: [DeepAR: Probabilistic forecasting with autoregressive recurrent networks](https://www.sciencedirect.com/science/article/pii/S0169207019301888)
### Week 9-10
- Experiment on some datasets the implemented models and compare to the results in the original paper
- Adding test for loading/saving mechanism
- Adding test for random state handling
### Week 11-12
- Write example notebook for deep learning forecasting
- Work out the documentation of the forecasting/deep_learning module
- Implement `RecurrentForecaster` in `forecasting/deep_learning` uses `RecurrentNetwork` as long-term forecaster
### Final Deliverables
- A full implementation of 4 total networks `RecurrentNetwork`, `InformerNetwork`, `TCNNNetwork` and `DeepARNetwork`
- A full implementation of 1 regression forecaster `RecurrentRegressor` and three forecasters `InformerForecaster`, `TCNNForecaster` and `DeepARForecaster`
- A full testing framework for the new networks
- A full testing framework for the `forecasting/deep_learning` module
- A full documentation and example notebook of the `forecasting/deep_learning` module
## Community Bonding Period
- [x] Introduce yourself in the community Slack channels.
- [x] Go through the contributor guide on the _aeon_ website (https://www.aeon-toolkit.org/en/stable/contributing.html).
- [x] Set up a development environment, including _pytest_ and _pre-commit_ dependencies. This will make development a lot easier for you, as you must pass the PR tests to have your code merged (https://www.aeon-toolkit.org/en/stable/developer_guide/dev_installation.html).
- [ ] Review some of the important dependencies for developing aeon at a basic level:
- [x] __pytest__ for unit testing. Any code added will have to be covered by tests.
- [ ] __sphinx/myst__ for documentation. Adding new functions and classes will have to be added to the API docs.
- [x] __tensorflow__ is the current package used for all of our deep learning algorithms.
- [ ] Make some basic Pull Requests (PRs) to gain some experience with contributing to _aeon_ through GitHub. Some suggestions:
- [x] Finish [#2535](https://github.com/aeon-toolkit/aeon/pull/2535)
- [ ] Resolve [#2575](https://github.com/aeon-toolkit/aeon/pull/2575) (finished, comment or close)
- [x] Tidy up the docstring of [DummyRegressor](https://www.aeon-toolkit.org/en/stable/api_reference/auto_generated/aeon.regression.DummyRegressor.html#aeon.regression.DummyRegressor)
- [x] Read up on the subject of your project (deep learning forecasters). We will provide some literature, but we encourage you to go beyond that and ask any questions you have.
- [ ] [M4](https://www.sciencedirect.com/science/article/pii/S0169207019301128)
- [x] Decide on a project length. 12 weeks is the default but can be extended if you will be unable to work for some periods during the summer.
- [ ] Refine the project timeline and deliverables with the project mentors. Agree on some milestones for both mid-project and final evaluations.
- [x] Update the GSoC webpage project to better match any new directions after discussions with mentors.
- [x] Select a tracking/blogging medium to write down and track progress made on the project. Agree on a frequency of updates.
- [x] Set up regular meeting days and times to discuss the project and track progress.
## Week 1:
Link to Blog: https://medium.com/@lucifer4073/gsoc25-numfocus-week-1-ed44c8650955
## Week 2:
Link to Blog: https://medium.com/@lucifer4073/gsoc25-numfocus-week-2-3fad1a72ca5b
Draft PRs have been created with network merged. Everything on track for the project currently.
## Week 3:
Link to Blog: https://medium.com/@lucifer4073/gsoc-25-numfocus-week-3-4-9b4163cb528d
Draft for forecasting DL base created.
## Week 4:
Link to Blog: https://medium.com/@lucifer4073/gsoc-25-numfocus-week-3-4-9b4163cb528d
Aiming to create PR for the informer module, feedback on code given.
## Week 5:
Link to Blog: https://medium.com/@lucifer4073/gsoc25-numfocus-week-5-0be79e74f826
## Week 6:
## Week 7:
## Week 8:
## Week 9:
## Week 10:
## Week 11:
## Week 12: