Why is seasonal-naive the first baseline you fit for a 48-hour electricity-load forecast?
answer
- a number needs something to beat
- no fitting, no parameters
- same hour last week
- captures daily and weekly cycles free
- give the baseline the same origin
basics
~20 sBecause it sets the bar almost for free. Seasonal-naive predicts each future hour with the load observed at the same hour one week earlier, capturing the daily and weekly cycles without any training; a model that cannot beat it is adding nothing.
solid answer
~50 sElectricity load is dominated by two repeating cycles — the shape of the day and the difference between weekdays and weekends. Seasonal-naive exploits both by predicting the value from the same phase of the previous season: for a weekly period, the load at the same hour last week. It costs nothing to compute, needs no fitting, and is often surprisingly hard to beat, so it is the reference every reported number should be quoted against. The plain last-value naive rule — predict the most recent observation for every hour ahead — is a poor baseline here, because 48 hours out it carries an entirely wrong phase of the daily cycle. Whatever baseline you pick, it must be computed at the same forecast origin, on the same holdout, with the same information the model had, or the comparison is meaningless.
go deeper
Be able to state both naive rules in one sentence each and say which fits a cyclic series. Interviewers mostly want to hear that you would compute a baseline before reporting any model number at all.
Explain why the weekly period usually beats the daily one for load, and what makes a comparison fair — same origin, same holdout, same metric applied identically to both.
Show that you strengthen the baseline before claiming a win, look at where the margin actually sits across hours, and treat seasonal-naive as the deployable fallback whose error you need to know.
Own the reporting convention: every forecast number the organisation sees is quoted relative to a stated baseline, and a thin margin is grounds for deciding not to run a model rather than for tuning harder.
## What the two naive rules are Two baselines cover most forecasting work, and they are not interchangeable. - **Naive, or last-value:** the forecast for every future step is the most recent observation. `y_hat[t+h] = y[t]` for all `h`. This is the optimal forecast when the series behaves like a random walk, where the best guess about tomorrow genuinely is today. - **Seasonal-naive:** the forecast for a future step is the observation from the same phase of the previous cycle. With a seasonal period `m`, `y_hat[t+h] = y[t+h-m]`. For hourly data with a weekly period, `m = 168`, so next Tuesday 09:00 is predicted by last Tuesday 09:00. For daily data with a weekly period, `m = 7`. Neither has parameters, neither is fitted, and both can be produced in one pass over the history. ## Why a baseline comes first An error number on its own is uninterpretable. An error of 4.2 could be outstanding or embarrassing depending on how variable the series is and how much of that variability is trivially predictable. The baseline converts an absolute number into a statement about **skill**: how much of the error the model removes relative to a rule that requires no learning. That is the sentence that survives being repeated to a stakeholder — "we cut the error 18% below repeating last week" — where "our error is 4.2" is not. There are three further reasons the baseline goes first rather than last: 1. **It catches broken pipelines early.** If your trained model is *worse* than repeating last week, something is usually wrong with the framing — a misaligned label, a shuffled ordering, a target the features cannot see — and you learn it in an hour instead of a week. 2. **It is a deployable fallback.** Seasonal-naive is what the system serves when the model is unavailable, so knowing its error is knowing the cost of degraded mode. 3. **It disciplines the scope.** If the naive rule is close to the model after weeks of work, the honest recommendation may be not to run a model at all. ## Choosing the right naive rule The choice follows the structure of the series. - **Strong repeating cycle at the sampling frequency** — hourly electricity load, daily retail footfall, hourly ride demand — seasonal-naive with the dominant period. For load, the weekly period usually beats the daily one because it gets weekends right without a special case. - **No cycle, dominated by persistence** — a slowly drifting sensor reading, a price-like level — last-value naive. Seasonal-naive here just injects a week-old noise draw and will be clearly worse. - **Cycle plus visible trend** — seasonal-naive with drift, which adds the average change per period observed over the history to the seasonal value. ## Making the comparison fair A baseline comparison is only informative if the baseline is subject to exactly the same constraints as the model: - **Same forecast origin.** If the model must produce all 48 hours at 06:00, the baseline must too. A baseline that quietly uses observations from after the origin is not a baseline, it is a leak, and it will make your model look worse than it is. - **Same holdout period.** Comparing a model on one stretch of history to a baseline on another compares seasons, not methods. - **Same error metric, computed identically.** Whatever measure you have chosen for the project, apply it unchanged to both, over the same rows. ## Strengthening the baseline before you accept it Before concluding the model wins, make the baseline as strong as it cheaply can be. The average of the same hour across the last four weeks reduces the variance of relying on one week-old observation. A holiday override — do not use last Tuesday when this Tuesday is a public holiday — removes the baseline's most embarrassing failures. If the model's margin survives against that stronger reference, it is real. ## Reading the result A large margin over seasonal-naive means the model captures structure the cycle alone does not: weather sensitivity, holiday effects, trend. A small margin invites a closer look — is the gain concentrated in a few unusual hours, which may be exactly the hours that matter operationally, or is it uniform and marginal? And a negative margin is not a reason to tune harder; it is a reason to re-examine the framing.
- When is last-value naive the better baseline than seasonal-naive?When the series has no repeating cycle at its sampling frequency and is dominated by persistence — a slowly drifting level where today is genuinely the best guess for tomorrow. Seasonal-naive there contributes nothing but a week-old noise draw, and will look worse than simply carrying the last observation forward.
- How would you make the baseline stronger without training a model?Average the same hour across the last few weeks instead of taking a single week-old value, which cuts the variance of the reference. Add seasonal drift if the series trends, and override the rule on public holidays, which are where a repeat-last-week rule fails most visibly. A model that still wins against that is winning honestly.
- Your model beats seasonal-naive by only three percent — what do you do?First confirm the comparison is clean: same origin, same holdout, same metric. Then look at where the gain sits — if it concentrates on peak hours or holidays, it may be worth far more than three percent operationally. If it is uniform and marginal, say so, and weigh it against the cost of running and monitoring a model at all.
saying these in an interview costs you the question
- Reports a model error with no baseline for comparison
- Uses last-value naive on strongly weekly-seasonal data
- Gives the baseline data the model could not see
- Assumes any trained model beats a naive rule
- Compares model and baseline on different holdout periods