SNN Energy Forecasting Peak Underprediction

I’m working on an energy forecasting project using a Spiking Neural Network (SNN), and I’m trying to understand why my model is severely underpredicting high-load events.

Task:

  • Dataset: UK Electrical Load / House 4
  • Data resampled to 15-minute intervals
  • Input: previous 24 timesteps (6 hours)
  • Target: Aggregate power at the next 15-minute interval
  • Features per timestep:
    • Aggregate
    • 9 appliance channels
    • hour_sin
    • hour_cos
    • aggregate difference
  • Features/target are standardized using training data only.
  • Chronological train/validation/test split.

Current SNN:

13 features
→ Linear(13, 64)
→ LIF (β=0.8/0.9)
→ Linear(64, 32)
→ LIF
→ temporal readout
→ Linear(64, 1)

For the temporal readout, I concatenate the mean membrane state across all timesteps with the final membrane state.

I’m using MSE loss and AdamW with LR=1e-4.

The problem is that the model predicts normal loads reasonably, but massively underpredicts peaks.

For example, in the test set:

Actual maximum: 4569 W
Predicted maximum: ~1400 W

Around one of the largest peaks:

Actual: 3631 W → 4569 W → 3179 W
Predicted: 359 W → 875 W → 1091 W

Importantly, the model DOES see the 3631 W value immediately before the 4569 W target.

Current SNN metrics:

MAE: ~153 W
RMSE: ~249 W
R²: ~0.165
Peak MAE: ~409 W
Peak RMSE: ~635 W
Peak ratio: ~0.31

I’ve also tested:

  1. β = 0.9 → 0.7
    → very little change

  2. Window = 24 → 48 timesteps
    → very little change

  3. Wider architecture:
    13 → 32 → 16
    to
    13 → 64 → 32
    → R² improved from ~0.13 to ~0.16 and predicted max increased, but peaks are still heavily underestimated.

I have classical/neural baselines using the same forecasting task:

Linear Regression: R² ≈ 0.27
GRU: R² ≈ 0.29
LSTM: R² ≈ 0.23
XGBoost: R² ≈ 0.32
MLP: R² ≈ 0.13
SNN: R² ≈ 0.16

The GRU/LSTM/MLP can produce substantially larger predictions for the peaks, so it doesn’t seem like the peaks are simply impossible to predict from the input data.

My current suspicion is that MSE + the highly imbalanced target distribution is causing the SNN to regress toward typical/average loads, but I’m not sure whether that’s the main issue or whether there is something specific about the SNN/LIF dynamics or regression readout that I’m missing.

What would you investigate next?

In particular:

  • Is peak-weighted MSE a sensible approach here?
  • Could the continuous membrane-potential readout be causing this compression?
  • Is there something about using LIF neurons for continuous regression that I should change?
  • Would you recommend a different SNN architecture/readout?
  • Are there diagnostics I should run to determine whether the problem is the loss, SNN dynamics, or preprocessing?

Any advice would be appreciated.