Как Яндекс прогнозирует погоду

Погода до сих пор влияет на нашу жизнь гораздо сильнее, чем нам, возможно, хотелось бы. Мы начинаем утро с прогноза погоды, а в течение дня жалуемся друг другу на его точность. Раньше люди пытались предсказывать погоду на основе своих наблюдений. Если птицы низко летают, а лягушки громко квакают, будет дождь. Если небо на закате красное — будет ветер. Сейчас для прогнозирования погоды используются чрезвычайно сложные метеорологические модели, которые учитывают большую часть человеческих знаний о поведении жидкостей и газов, — и всё равно прогнозы оказываются неточными. В результате появляются новые погодные приметы: всем известно, что помыть машину — это к дождю.
Современные метеомодели представляют собой сотни тысяч строк кода и задействуют для расчётов самые мощные суперкомпьютеры. В качестве исходных данных они используют практически всю метеорологическую информацию, которую можно собрать, — данные со спутников, профессиональных метеостанций и станций радиозондирования. Тем не менее, прогнозы всё равно могут ошибаться: достаточно переоценить или недооценить значение одного из тысяч факторов, и вот вы уже не взяли с собой зонтик, потому что прогноз не предупредил о дожде. Кроме того, в большинстве случаев прогнозы делаются для города в целом, и даже самым большим городам достаётся всего один прогноз, вне зависимости от размера территории.
Задача прогнозирования погоды достаточно сильно похожа на то, чем занимается Яндекс. Мы стараемся найти закономерности в огромном количестве данных и на основе этого ранжируем сайты, рекомендуем музыку или помогаем ЦЕРНу искать редкие события среди столкновений частиц. Для этого мы используем машинное обучение. И к прогнозированию погоды тоже применили машинное обучение.
В 2015 году мы разработали уникальную технологию Meteum, которая умеет строить прогноз погоды с точностью до районов города. Она сочетает классические метеорологические модели и технологии машинного обучения. Это позволяет уточнить существующие модели и учесть локальные особенности, а следовательно — давать более точный прогноз и делать меньше ошибок. Но в таком деле, как прогнозирование погоды, к точности можно стремиться бесконечно. Поэтому в 2021 году мы усовершенствовали технологию и представили Meteum 2.0. Она полагается не только на данные технических средств, но и на сигналы пользователей, а также использует новый метод машинного обучения CatBoost. Вот как это работает.
  1. У нас есть пять источников прогноза из национальных центров США, Канады, Японии и Европы, а также наш собственный прогноз, который мы рассчитываем на основе модели WRF. Эти прогнозы рассчитываются с использованием традиционных метеомоделей. Чтобы получить уточнённый прогноз, Meteum 2.0 обрабатывает данные с помощью системы прогнозирования на основе CatBoost. Модель CatBoost, помимо данных от исходных метеомоделей, умеет учитывать дополнительные факторы: высоту солнца над горизонтом, удалённость от водоёма и номер дня в году. Всё это тоже влияет на погоду.
  1. Помимо метеомоделей, для составления прогноза погоды мы применяем данные с метеорадаров и спутниковые снимки. Метеорологические радары находятся на поверхности Земли и делают трёхмерные снимки атмосферы в радиусе 200 километров. Спутники размещаются на геостационарной орбите и фотографируют Землю из космоса — на их снимках видны зоны облачности. По данным с радаров и спутников составляется карта осадков. Это краткосрочный прогноз, с помощью которого можно с точностью до минут понять, когда начнётся и когда закончится дождь.
  1. Наконец, ещё один важный источник данных в Meteum 2.0 — сигналы от пользователей. Те, кто пользуется Яндекс.Погодой или приложением Яндекс, наверняка замечали, что время от времени мы спрашиваем, идёт ли сейчас дождь, и показываем два варианта: «Да» и «Нет». Ответить на вопрос — доли секунды, но между тем такие ответы сильно помогают улучшить качество прогноза. Благодаря сообщениям от пользователей краткосрочный прогноз осадков стал на 20% точнее.