Когда тестовые годы оказались теплее: что случилось с моими SST-базовыми методами
7 ноября 2026 г.
Прежде чем сравнивать с простыми базовыми методами любую обучаемую модель, я хотел узнать, насколько трудно их превзойти, на примере ежедневной температуры поверхности океана (SST). Рейтинг методов, который я увидел на валидационных годах (2016-2019), не сохранился на тестовых (2020-2025). Эта статья о том, что изменилось, что я могу и чего не могу сказать о причине, и о небольшой LSTM, которую я добавил позже.
Все числа взяты из README и файлов results/ репозитория sst-baselines. Это исследование базовых методов и их оценки, а не оперативная система прогноза.
Постановка
- Данные: ежедневная SST NOAA OISST v2.1, с 1982-01-01 по 2025-12-31, 16,071 ежедневных полей на район, сетка 40x40. В агрегации ERDDAP не хватало 1,194 дней на район; я заполнил их из NOAA PSL, проверив, что два источника совпадают на всех пересекающихся днях.
- Районы: два участка 10°×10° в северной части Тихого океана. Район Куросио с высокой изменчивостью (30.125-39.875°N, 145.125-154.875°E) и субтропический район с низкой изменчивостью (15.125-24.875°N, 150.125-159.875°E).
- Разбиение: обучение 1982-2015, валидация 2016-2019, тест 2020-2025. Заблаговременность 1, 7 и 30 дней.
- Шесть базовых методов: персистентность, климатология, персистентность аномалии, затухающая персистентность, 10-летняя ежедневная климатология (OCN) и Ridge-регрессия для каждой точки сетки.
- Протокол: зафиксирован до того, как я посмотрел оценки на валидации или тесте. Тестовый период оценивался один раз, после того как я заморозил конфигурацию и пометил её тегом
pre-test-freeze; иначе код отказывается запускать тест.
Каждый метод я оцениваю через скилл относительно персистентности аномалии, то есть «климатология на целевой день плюс сегодняшняя аномалия». Скилл равен 1 − RMSE/RMSE_reference, поэтому значение выше 0 означает лучше персистентности аномалии, ниже 0 — хуже. Персистентность аномалии оказалась планкой, которую надо превзойти, особенно на 1 день.
Что случилось в тестовые годы
Ridge и затухающая персистентность оба сдвигают прогноз к климатологии 1982-2015. На валидации они опережали персистентность аномалии на большинстве заблаговременностей. На тесте они потеряли большую часть или всё это преимущество. Скилл относительно персистентности аномалии на 1, 7 и 30 дней:
| Метод, район | Валидация (2016-2019) | Тест (2020-2025) |
|---|---|---|
| Ridge, Куросио | +0.041, +0.077, +0.176 | +0.025, +0.007, +0.088 |
| Ridge, субтропики | +0.022, +0.056, +0.090 | −0.049, −0.049, +0.006 |
| Затухающая персистентность, Куросио | +0.010, +0.067, +0.164 | −0.017, −0.012, +0.058 |
| Затухающая персистентность, субтропики | −0.004, −0.017, +0.028 | −0.109, −0.178, −0.091 |
Ridge в районе Куросио остался впереди на всех заблаговременностях, но на 7 дней отрыв стал гораздо меньше. В субтропическом районе затухающая персистентность уже на валидации уступала на 1 и 7 дней, а на тесте уступала на всех заблаговременностях.
Возможное объяснение, но не доказанное
Валидационные и тестовые годы теплее климатологии 1982-2015, причём тестовые — сильнее. Среднее смещение прогноза по климатологии меняется с −0.500 °C (Куросио) и −0.539 °C (субтропики) на валидации до −0.827 °C и −0.656 °C на тесте. Смещение 30-дневного прогноза затухающей персистентности меняется с −0.324 и −0.325 °C до −0.527 и −0.392 °C. Метод, который тянется к более старой климатологии, платит больше, когда море теплее этой климатологии, так что это согласуется.
Но репозиторий не показывает, что причина именно в потеплении. Я не проверял никакие альтернативные объяснения, поэтому не могу ни ранжировать их, ни исключить. Могу перечислить применимые ограничения: я не убирал тренд (вместо этого включён OCN), разбиение одно и фиксированное, без кросс-валидации по временным блокам, шесть тестовых лет — короткий ряд, а Ridge обучается отдельно в каждой точке сетки и игнорирует пространственную структуру. Я ещё изучаю океанографию, поэтому считаю это описанием, а не физическим объяснением.
Небольшая LSTM и почему я не делаю из неё общих выводов
Когда базовые методы были готовы, я добавил небольшую LSTM. Она видит ту же информацию, что и Ridge, то есть последние 30 дней аномалии в одной точке сетки, с 1 слоем и размером скрытого состояния 64, выбранным на валидации. Я обучил 3 запуска на район и привожу среднее по запускам, без выбора лучшего и без ансамбля. Протокол я написал и пометил тегом pre-lstm-test до загрузки тестового периода, а затем запустил тест один раз.
Скилл относительно Ridge на тесте на 1, 7 и 30 дней:
- Субтропики: +0.029, +0.025, +0.022. LSTM превзошла Ridge на всех заблаговременностях.
- Куросио: −0.061, −0.017, −0.001. Ridge она не превзошла. На валидации значения на 7 и 30 дней были слегка положительными (+0.006, +0.014), и это преимущество не сохранилось.
Субтропический результат слабее, чем кажется. Ridge сам хуже персистентности аномалии на 1 и 7 дней в этом районе, и LSTM там тоже отстаёт от персистентности аномалии (−0.018 и −0.023). Кроме того, LSTM получает полную 30-дневную последовательность и день года, а Ridge — меньше входов, поэтому часть выигрыша может быть от входов, а не от модели. Я этого не проверял. Два района дали разные ответы, и единственное, что я из этого выношу: не стоит строить историю на одном результате в одном районе.
Что я из этого вынес
- Прежде чем верить рейтингу с валидации, проверь, держится ли он на более позднем периоде.
- Прямо говори, какое объяснение согласуется с данными, а какое доказано.
- Обучаемая модель, которая выигрывает в одном районе и проигрывает в другом, — это не результат про глубокое обучение.
Ограничения: два небольших района и один продукт (OISST), только простые статистические базовые методы и нет доверительных интервалов. Код открыт, так что каждое число в этой статье можно сверить с results/test_all.json, results/val_all.json и results/lstm_test.json.
Код написан с помощью Claude Code; методология, решения и проверка результатов — мои.