• Stars
    star
    159
  • Rank 235,916 (Top 5 %)
  • Language
    HTML
  • License
    MIT License
  • Created over 7 years ago
  • Updated over 7 years ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Electricity load forecasting with LSTM (Recurrent Neural Network)

Electricity load forecasting with LSTM

Demo project for electricity load forecasting with a LSTM (abbr. "Long Term Short Term Memory", a Recurrent Neural Network) with data for Switzerland.

Getting started

It is recommended to use a Python and R packages and environment management tool like Anaconda. This will install also already most of the packages used in this project and will allow to run the notebooks in ./notebooks/ with the Jupyter Notebook server.

Main packages used

* [Keras 2.0.2](https://github.com/fchollet/keras) - High-level Neural Network API used for LSTM modelling. Backend used was TensorFlow.
* [forecast 8.0](https://cran.r-project.org/web/packages/forecast/index.html) - Forecasting package for R used for TBATS and ARIMA benchmark forecasts. 

Data:

  • Hourly series for actual load and forecasted load. Source: ENTSO-E API
  • Hourly series for temperature (in Β°F) and a mapping of the qualitative weather in one of the 3 categories defined in the configuration file. These historical observations are collected for the major cities in Switzerland. Source: Dark Sky API
  • Calendar dummy variables. Holidays, month, day of week, hour of day.
  • In total: 20756x78 observations

File structure:

.
β”œβ”€β”€ data                        # Load, calendar and weather data
β”œβ”€β”€ lstm_load_forecasting       # Helper functions for data preparation and LSTM model building
β”œβ”€β”€ models                      # All trained models saved in HDF5 file format
β”œβ”€β”€ notebooks                   # LSTM Model selection and forecast comparison
β”œβ”€β”€ results                     # Results and parameters from model training run comparison
β”œβ”€β”€ config.json                 # Config file with API Keys, Weather stations, holiday calendar.  
β”œβ”€β”€ LICENSE
└── README.md

Notebooks

Different "categories" (named data modules in the data helper functions...) of models have been defined and then for each category, a number of models based on possible parameter combinations have been estimated:

  • Model 1: Using only the ENTSO-E forecast as input.
  • Model 2: Using only the calendar dummy variables as input.
  • Model 3: Using only the weather data as input.
  • Model 4: Using ENTSO-E and calendar data as input.
  • Model 5: Using weather data and calendar dummies as input.
  • Model 6: Using ENTSO-E, calendar and weather as input.

The LSTM model results notebook then combines all results. The best models models in category 4, 5 and 6 then are compared in the Forecast Comparison notebook with a TBATS and a ARIMA model forecasts that have been generated in the respective R notebooks. The comparison then is further extended with rolling window (static, using at each time step the newly available data) in the Rolling Forecast notebook.

Acknowledgments and References