Как стать автором
Обновить

Как мы переписали архитектуру Яндекс.Погоды и сделали глобальный прогноз на картах

Время на прочтение10 мин
Количество просмотров31K
Всего голосов 108: ↑107 и ↓1+106
Комментарии92

Комментарии 92

Windity
В копилку.
И ещё windy.com :-)
Или вот
Я вчера письмо в фидбек отправил. Похоже, что то сломали. Суть проблемы: яндекс-погода стал показывать температуру и осадки, совершенно оторванные от реальности. Яндекс показывает -20, по факту на улице -5 и на дорогах лужи. Это не единичный день, это тенденция. Барнаул.
-5 и лужи? Это Барнаул что-то сломал по моему.

Прогноз Яндекса всегда нагло врал, меняя показания в день по нескольку раз, при чем весьма кардинально. Про прогноз на несколько дней вперед — вообще речи не идет. Там то солнечно и тепло, то на сл. день уже дубак с осадками. Еще день спустя — вообще что-то третье может легко всплыть. Хотя Вы похоже про текущее отображение погоды говорите.
Помнится, ещё в 2006 или 2007 прогноз Яндекса постоянно врал, причем очень сильно (на улице ливень, а у Яндекса солнечно и ясно). С тех пор пользовался Гисметео. Думал, что Яндекс уже давно исправился, а тут вот как.
Мы получили ваше письмо, спасибо. Некоторое время назад мы действительно испытывали некоторые трудности с прогнозом в вашем регионе, однако теперь ситуация должна нормализоваться. Пожалуйста, посмотрите на сервис в течение нескольких дней — стало ли лучше? Буду благодарен за ваш фидбек.
яндекс! пора менять штатного предсказателя погоды!
-18 с дождём.
Мне очень нравится погода на www.meteoblue.com
На мой взгляд, показывает точнее всех. Иногда, конечно, есть несоответствия, но достаточно близко к реальности.
У меня так виджет один обновился погодный, вместо цельсия стал показывать по фаренгейту.
Хочу узнать погоду, открываю смартфон — а там +30 пасмурно, в ноябре… в поволжье… ага :)
Так это в Яндекс.Погоде всегда так было. За окном -3 и облачность в три слоя, на сайте +5 и солнце весь день. И прогноз самый неточный.
НЛО прилетело и опубликовало эту надпись здесь
Поскольку фидбек достаточно однотипный, отвечу всем в общей ветке.

Действительно, анимация частицами ветра — хороший способ показать сразу несколько параметров на одной карте. Собственно, поэтому мы им и воспользовались, сделав самостоятельную реализацию на Яндекс.Картах.

Однако, на этом внешнее сходство заканчивается. Под капотом у нас собственный прогноз, рассчитанный с помощью ML. Наш прогноз значительно более точный, чем сырые модельные данные, показанные на приведенных сервисах. Именно расчету этого прогноза посвящена большая техническая часть статьи.

А кроме полей температуры и ветра, у нас есть наукастинг, которого ни у одного из наших конкурентов нет ;)
Наш прогноз значительно более точный, чем сырые модельные данные, показанные на приведенных сервисах.

Я бы не был так катигоричен с точностью. Ваши прогнозы ошибаются по силе ветра часто. И направление бывает не совсем точным. Тот же windity гораздо точнее и чаще попадает в реальную картину.
Как я написал в тексте, только с сегодняшним релизом в продакшен поехали модели, которые используют ML для прогноза силы и направления ветра. Теперь точность прогнозов
по этим параметрам заметно выросла. Раньше наш прогноз улучшался машинным обучением только в плане температуры и осадков.

В любом случае, буду благодарен за ваш фидбек при дальнейшем использовании сервиса.
Если так, то кайтеры и сёрферы оценят.
Feedback: изучаю карту для текущих даты/времени, отметил на карте интересующую меня точку, прочитал сведения в открывшемся всплывающем меню, переместил ползунок на завтрашнее утро — упс, всё, окошка нет, точки нет и, как я понимаю, пользователю снова предлагается искать и «кликать» эту точку на карте.
У где-где, а во Владивостоке прогноз ветра актуален, как нигде. Так вот, на планшете стоит Винди, на смартфоне Яндекс. Показатели ветра похожи, но Яндекс, мне кажется, точнее. Ребята проделали большую работу, спасибо.
начинается применение заранее обученных моделей машинного обучения

Самое важное и самое непонятно описанное. На основе каких данных модели обучались? Я просто не вполне понимаю, как можно обучить модель для условной деревни Малые Бугры, если у нас нет для неё достоверных данных для обучающей выборки? Просто проинтерполировать от соседних узлов сетки метеомоделей? Окей, часто так и делается, но при чем тут тогда обучение.
А чем матмоделирование отличается от использования нейронных сетей?
ничем…
и там и там все сводится к конечноразностной схеме.
Я имею в виду, что обучать нейросеть на основе интерполированных или ещё каких-либо «искусственных», а не реальных, данных — это заведомо попахивает отсебятиной. Как можно утверждать, что такой прогноз будет «значительно точнее»?
А вы думаете конечно разностные схемы не врут особенно в граничных условиях?

А вот что такое «значительно точнее»… вопрос метрики.
Да, целью этого поста было описание архитектуры, а не ML части, поэтому этот кусок получился коротким. Попробую тот также коротко ответить.

Наши модели обучаются к показания метеостанций и другим надежным источникам метеорологических наблюдений. При этом вы совершенно правы, плотность таких измерений неравномерна. Однако, первым фактором, который влияет на точность, даже в самых удаленных регионах — это полнота данных, на которых мы обучаемся. Для того, чтобы модель спрогнозировала приход антициклона в деревню Малые Бугры, нужно показать модели много вариантов движения антициклона при определенных локальных особенностях — рельефа, подстилающей поверхности и так далее. При этом необязательно, чтобы примеры, которые видит модель при обучении, находились именно в Малых Буграх. Важно только чтобы пространство факторов было достаточно репрезентативно представлено в обучающей выборке. Так большие данные помогают моделям обобщать ситуацию, не полагаясь только на локальные измерения а-ля «циклон в Гадюкино всегда приходит с запада и уходит на восток».

При этом я нисколько не отрицаю важность локальных наблюдений. Мы много работаем для того, чтобы получать как можно больше достоверных измерений к себе в систему.

А как вы измеряете качество своего прогноза и собираете эталоны для обучения? Проводите ли сравнение с другими метеослужбами?

Я немного ответил выше про это. Эталоны для обучения в основном — данные с метеостанций или других настолько же надежных приборов. На них происходит обучение, кросс-валидация и валидация на отложенной выборке, все как в обычных data science процессах, с учетом некоторых особенностей. Например, при обучении и тестах важно не «залезть в будущее», чтобы данные о целевых значениях не просочились в факторы.

Все модели, которые работают в продакшене, автоматически и каждый день валидируются по всему набору станций. Мы сравниваем их прогнозы с несколькими моделями-кандидатами, а так же с чистыми прогнозами поставщиков погодных моделей, которые участвуют в формировании факторов.

Когда снег уже на урале выпадет?

Доступ к API также приватный? И работать с яндексой.погодой всё так же парсингом для обычных людей?
Условия доступа к API зависят от целей использования и всегда обсуждаются индивидуально. Напишите нам на api-weather@yandex-team.ru и мы сможем обсудить ваш кейс.

Насчет парсинга хочу отдельно напомнить что EULA еще никто не отменял. Например, в нашем EULA написано, что парсить данные с сайта — незаконно.

Т.е. просмотр пользователем вашего сайта незаконен? так как браузер перед просмотром парсит ваш сайт.
Ну детский сад, ей богу. Давайте не будем играть в юристов, у Яндекса их всё равно больше.
НЛО прилетело и опубликовало эту надпись здесь
НЛО прилетело и опубликовало эту надпись здесь
Ну там же прямо на странице внизу ссылка:
2.2. Данные, используемые в Сервисе, предназначены исключительно для некоммерческого использования. При этом любое копирование информации и/или материалов, их воспроизведение, переработка, распространение, доведение до всеобщего сведения (опубликование) в сети Интернет, любое использование в средствах массовой информации и/или в коммерческих целях без предварительного письменного разрешения правообладателя запрещается, за исключением случаев, прямо предусмотренных настоящими Условиями, условиями использования других сервисов Яндекса или документами, указанными в п. 1.2. настоящих Условий.
НЛО прилетело и опубликовало эту надпись здесь
Смотрите — я исключительно для себя лично использую погодные данные. Чтобы выводить их на планшет в коридоре, чтобы знать, какая погода в данный момент + какая будет днём-вечером. Можно было бы сайт или приложение вывесить, но я использую около 10 разных источников и привожу к среднему. На самом деле парсить легче, так как не надо заморачиваться с токенами, доступом и прочим таким. Ну и под эти правила я никак не попадаю. Но всё равно доступ не дают :) Я бы даже был согласен на 4-5 запросов к API в сутки, но даже такого нет. Про коммерческое использование как раз всё легко и просто — платишь и пользуешься ))
Вопрос, конечно, лучше задать юристам яндекса, но вроде как Вы попадаете под ограничение:
любое копирование информации и/или материалов, их воспроизведение, переработка


А по поводу API, думаю яндексу просто лень заморачиваться ради 4-5 обращений в сутки. Возни с пользователями много, а прибыли нет.
image
Мне, как инженеру, всегда было интересно посмотреть статистику ошибок прогнозов. Т.е. среднюю ошибку, минимальную, максимальную хотя бы по температуре в нескольких городах в течение года. Где есть эта информация сведённая в графики или хотя бы таблицы?
Вы удивитесь, но эта информация достаточно ценная в смысле бизнеса, поэтому она много кому в отрасли интересна. Мы ведем такую статистику для себя и для своих партнеров. В США есть сайт www.forecastwatch.com, где можно найти примеры такой статистики (правда по их городам и провайдерам).

Некоторое время назад я проводил небольшое примитивное исследование прогноза Яндекс.погоды. Выводы не очень.
По моему мнению, для прогнозов лучше подойдет использование моделей из гидродинамики, а не ML.

Я так и думал. Теперь понятно почему этой информации нет в общем доступе и похоже не будет ещё очень долго.
П.С. Интересно, а за неправильно предсказанную погоду штрафы существуют? Или обязательства?

Если я правильно помню, прогноз погоды, как и картография, является лицензируемым видом деятельности. Так что где-то есть регулятор, который должен за этим следить. Я не знаю, получил ли яндекс лицензию или обошел это, например назвав официально не "прогнозом" а например "предсказанием", как раньше онлайн-карты официально назывались "схемами".

Про паттерны потребления погоды в России стоит отметить, что карты погоды очень популярны у дальнобойщиков. При прокладке маршрута очень часто удается «объехать» ливень или снегопад.
А я всё жду, когда на pogoda.yandex.ru будет возможность посмотреть историю за последние дни и фактическую погоду.
Чтобы можно было самому прикидывать, насколько сильно обычно изменяется погода за 30дн, 7дн, 3дня, 1день в конкретном регионе от прогнозируемого.
Особенно это актуально для отпуска — когда планируешь на недельку куда-то слетать, тебе приходится за 1 месяц до этого начинать мониторить прогноз на месяц вперед и факт, и как-то из памяти соотносить эти данные, помнить что обещали вчера, неделю, месяц назад, и что в итоге сегодня. Спасибо
Мы часто получаем такие запросы и уже работаем над продуктом, который бы их удовлетворил. Оставайтесь с нами :)
о, рад это слышать читать :)
Прошедшим летом встала задача — посмотреть атмосферное давление за последние дни.

Зачем? Дело в том, что я заметил, что стал более метеозависим. И я решил выяснить, как влияет атмосферное давление на самочувствие. И влияет ли вообще?

Проблема: ни один из сайтов не позволяет заглянуть в прошлое.

Решение: договориться с админом сайта pogoda.spb.ru, написать скрипт, который раз в 3 часа ходит по указанному адресу и просто собирает статистику по погоде.
А точная карта облачности планируется? Очень полезная вещь для любительской астрономии.
Судя по осадкам, точности нет.

Пользуйтесь weather.com — точность погоды в большинстве случаев до 30 минут. Если ошибается, то в каком-то редком погодном явлении. Данные со спутников и метеостанций.И большой опыт в предсказании и моделировании. Если в поисковой строке Google ввести "погода", то будет прогноз этой компании.

Да, для такой карты много хороших применений, работаем над этим.
А вот такая идея: отслеживание погоды в выбранной точке. И предупреждение на email\SMS\push о резком изменении, например, направления ветра на 45 градусов, давления на 7 мм.рт.ст и др.
Рыболовы оценили бы… или скалолазы…
Суть не в опасности, а в достоверном факте резкого изменения погоды, при которых обычно рыба клевать перестает :)
А что за серая хрень на половине полной карты осадков, не меняющая свои очертания при выборе любого времени внизу страницы? Это дождь? А почему на миникарте осадков (на главной странице) дождь выглядит иначе и сразу понятно что это дождь?
Или это просто глюк моего браузера (Яндекс.Браузера если что)?
Скриншот «хрени»: screenshot.ru/01e41651c6f4eed986b9770f2a071bb2
Это не хрень и не дождь, это граница области видимости радара. Радиус измерений этого инструмента ограничен и для серой области у нас нет данных об осадках. Мы хотим расширить область покрытия осадков, но это происходит постепенно.
А можете это как-то подписать что-ли? Непонятно же…
Зашибись конечно, вещь крутая, но… в Питере завтра — осадки, послезавтра осадки… и потом тоже осадки. Зачем портить себе настроение.
Что за фигня с давлением? Для сравнения:
Яндекс.Погода: joxi.ru/MAj16bES4q7zV2
Windy: joxi.ru/Rmzq7bEC0kZ6Wr
Я так понимаю учитывается высота, в которой указано значение. Только зачем? Влияние высоты на давление достаточно велико. Карта распределения давления теряет смысл.
Для давления мы добавим величину, приведенную к уровню моря, чтобы было удобнее отслеживать циклоны и все такое.
На фаерфоксе (57) очень сильно тормозит. На хроме лучше, но тоже не идеально. При этом аналоги которые кидали выше, практически не тормозят.

Железо почти топовое.

Знаем про проблемы с загрзкой железа, будем оптимизировать вместе с добавлением новых слоев.

Я в Сиэттле (это штат Вашингтон).
Зашёл на карту, меня сервис определил как «Вашингтон».
Но на карте показал на Востоке! Я долго соображал, пока понял, что мне показывается Washington, DC вместо Washington state

image

У меня аналогично. Я сейчас нахожусь в Берлине, а точка на карте показывает куда-то в середине Германии. И в заголовке страницы пишется прекрасное: "Погода undefined undefined"


Пришлите, пожалуйста, ссылку на страницу, на которой такое получается.
  1. Открываю страницу https://yandex.ru/pogoda/berlin/maps/temperature. Точка указывает на Берлин, все верно.
  2. Жму на кнопку "определелить мое местоположение": вот эту
  3. Маркер перемещается в какое-то странное место, а в заголовке появляется undefined.

Воспроизводится каждый раз, как я это делаю.

Скопируйте ещё, пожалуйста, ссылку, которая после уточнения местоположения получилась — там будут координаты, на которые произошло перемещение.

Удивительно, но интересен бизнес вопрос. А какая миссия/цель проекта Яндекс.Погода? Заработок? Или вы делаете этот проект для полноты, чтобы «и погода у нас была, и телевизионная программа»?
В интервью на TJ — говорили, что хотят внедрить погоду в свою рекламную сеть, тк от погоды зависит конверсия

Мы обычно не делаем проекты из соображений «чтобы было». Погода важна как пользовательский сервис, у нас большая и стабильная аудитория, которая регулярно возвращается. Мы поняли, что, чтобы принести им пользу, погодные данные должны быть максимально точными. Так начался проект Метеум — применение ML к погоде, в широком смысле этого слова. После многочисленных тестов мы поняли, что данные получились и правда качественные, поэтому их можно предлагать погодозависимым бизнесам. Мы начали с рекламы, однако спектр применений точных погодных прогнозов в сегменте b2b чрезвычайно широк.

Интересная статья.
А почему вторым кандидатом стал свой формат хранения данных Flatbuffers?
Тот же tiff умеет и чанкование, и сжатие, и пирамиды, и float, и кэшировать удобно. Мы в своих задачах (со сходными объёмами данных) его используем. Скорость работы ограниченна только системой хранения.
Планируете ли заняться прогнозами волн (направление, период, скорость, высота) ?)

Планируем получить эти данные на сервисе так или иначе, да.

Мой второй по частоте использования сервис Яндекса после карт. Вы большие молодцы, карта движения осадков летом очень часто спасала от мокрой одежды и обуви.
Любопытно, какова мощность оборудования, которое всё это обрабатывает? Можно дать какие-то количественные параметры?

Интересно, используете ли данные сетей краудсосинга, вроде Blitzortung или других каких-то? И планируете ли?

Конкретно для молний мы берем данные из другого источника. Вообще тема краудсорсинга в погоде богатая. Если говорить коротко, то некоторые из этих данных крайне полезны, но далеко не все.

Вторым кандидатом стал наш --самописный-- проприетарный формат – матрицы float'ов сжатые LZ4 и записанные в Flatbuffer

Подскажите, а данный проприетарный формат не планируется стать свободным, т.е. не планируете его выложить в свободный доступ? Очень бы хотелось посмотреть. Также сталкиваюсь в работе с большими объемами данных в памяти и прямого доступа к ним в связи с необходимостью большой скорости.
Спасибо
[offtop]
А куда делся пульт управления погодой, который мог выкинуть три «дождя» и сказать «Поздравляю, вы испортили погоду!»?
[/offtop]

Он никуда не пропал, он находится в самом сердце погоды :) в некоторых случаях мы даже показываем его людям.

Что-то с ветром не очень понятно. Прямо сейчас визуально показывает мощный южный поток в районе Николаева и разряжённый жиденький в районе Донузлава, Крым. При этом наводишь курсор — там и там 8м/с

А можете скриншот приложить пожалуйста?

Данные предоставляются поставщиками на платной основе? Есть данные ли в свободном доступе для собственного академического ковыряния и изучения? Если есть, то с какой точностью и ограничениями?

Это зависит от поставщиков. Данные GFS, например, доступны бессплатно в той самой точностью, которую используем мы.

А как у вас с метеоданными от поставщиков в Индонезии? Стоит ли полагаться на точность в масштабе пары километров (в частности на о. Бали)? Учитывается ли рельеф Индонезийских островов?
А какие данные берутся из OpenStreetMap? Любопытно, как участнику проекта.
Зарегистрируйтесь на Хабре, чтобы оставить комментарий