📈 Как прогнозировать временные ряды с помощью машинного обучения (и зачем)?
Временные ряды возникают часто и в разных задачах бизнеса. Одна из основных задач, с которой может столкнуться продуктовый аналитик - сделать прогноз метрик. Это могут быть как финансовые показатели, которые используются для планирования, так и метрики продукта, за которыми непосредственно вам необходимо следить. Вы также можете настроить алертинги на отклонение факта от прогноза и понимать, когда что-то идет не так.
Ну и в целом, круто же немного заглянуть ненадолго в будущее (хотя я не уверен что хотел бы его знать сейчас)?
🔍 Существует несколько основных подходов:
- Эконометрические или традиционные. Это rolling window, экспоненциальное сглаживание, ARIMA, BATS и многочисленные вариации этих методов. Требуется некоторая экспертиза в понимании временных рядов чтобы корректно их настроить.
- Машинное обучение. Подход прост - вы формируете табличный дотасет из временного ряда (используя лаги и другие параметры в виде фичей) и обычными регрессионными моделями предсказываете следующее значение. Можно использовать линейные модели, бустинги и блендинг нескольких моделей. Важно хорошо собрать датасет и подобрать фичи для обучения.
- Нейронные сети. Применяются рекуррентные нейронки, трансформеры и много чего еще.
💡 Как к этому подступиться? Могу порекомендовать вот такие материалы, которые позволят начать решать ваши задачи:
- Небольшой вводный курс на kaggle
- Отличная статья из открытого курса от ODS, подходы все еще актуальны
- Лекция от вышки
🔨 И непосредственно инструменты:
- Sktime - библиотека с основными методами работы с временными рядами
- Prophet - библиотека от meta. Я бы начинал пробовать что-то предсказывать с нее
- NeuralProphet - Prophet на стероидах (с использованием нейронок)
- Pycaret - auto-ml библиотека, вот пример работы с рядами
- Chronos - новая разработка от amazon, стоит попробовать
А какие задачи вы решали с помощью предсказания временных рядов? Делитесь в комментариях!
Временные ряды возникают часто и в разных задачах бизнеса. Одна из основных задач, с которой может столкнуться продуктовый аналитик - сделать прогноз метрик. Это могут быть как финансовые показатели, которые используются для планирования, так и метрики продукта, за которыми непосредственно вам необходимо следить. Вы также можете настроить алертинги на отклонение факта от прогноза и понимать, когда что-то идет не так.
Ну и в целом, круто же немного заглянуть ненадолго в будущее (хотя я не уверен что хотел бы его знать сейчас)?
🔍 Существует несколько основных подходов:
- Эконометрические или традиционные. Это rolling window, экспоненциальное сглаживание, ARIMA, BATS и многочисленные вариации этих методов. Требуется некоторая экспертиза в понимании временных рядов чтобы корректно их настроить.
- Машинное обучение. Подход прост - вы формируете табличный дотасет из временного ряда (используя лаги и другие параметры в виде фичей) и обычными регрессионными моделями предсказываете следующее значение. Можно использовать линейные модели, бустинги и блендинг нескольких моделей. Важно хорошо собрать датасет и подобрать фичи для обучения.
- Нейронные сети. Применяются рекуррентные нейронки, трансформеры и много чего еще.
💡 Как к этому подступиться? Могу порекомендовать вот такие материалы, которые позволят начать решать ваши задачи:
- Небольшой вводный курс на kaggle
- Отличная статья из открытого курса от ODS, подходы все еще актуальны
- Лекция от вышки
🔨 И непосредственно инструменты:
- Sktime - библиотека с основными методами работы с временными рядами
- Prophet - библиотека от meta. Я бы начинал пробовать что-то предсказывать с нее
- NeuralProphet - Prophet на стероидах (с использованием нейронок)
- Pycaret - auto-ml библиотека, вот пример работы с рядами
- Chronos - новая разработка от amazon, стоит попробовать
А какие задачи вы решали с помощью предсказания временных рядов? Делитесь в комментариях!
❤17
Неожиданно выяснил, что сегодня день кошек. А так получилось, что мы в Турции, где их особенно много, поэтому ловите подборку. Там правда еще одна смешная собака (если вы знаете, почему они спят лапами вверх, объясните мне), которая на мой взгляд заслуживает упоминания. Кстати, с котом, который пытается сброситься со скалы, все ок (в плане, не сбросился).
А еще у меня наконец-то отпуск. Так что считаю, что имею полное право постить в блог по аналитике котиков. И это первая неделя с выходными, когда я никуда не ездил. Частично этому способствует адская жара днем в Анталии, но также сказывается усталость от года непрерывных путешествий.
И когда твое любимое развлечение - куда-то поехать, очень странно ловить себя на мыслях, что ехать то никуда уже не хочется. А хочется разгрузить мозг от постоянных эмоций (а вместе с ними и стресса от переездов, неопределенности и горизонта планирования в месяц). В общем, цифровым кочевником быть круто, но хорошо при этом иметь дом, куда можно вернуться, выдохнуть и расслабиться.
И рекомендасьон напоследок - видео про Анталью от Владимира Раевского, про то, что тут далеко не только олинклюзив. Сам был на руинах города Перге, и это конечно абсолютный восторг, ходишь как будто сквозь века. Так что не отелями с бассейнами едины, но и повтыкать в стену иногда тоже надо.
А еще у меня наконец-то отпуск. Так что считаю, что имею полное право постить в блог по аналитике котиков. И это первая неделя с выходными, когда я никуда не ездил. Частично этому способствует адская жара днем в Анталии, но также сказывается усталость от года непрерывных путешествий.
И когда твое любимое развлечение - куда-то поехать, очень странно ловить себя на мыслях, что ехать то никуда уже не хочется. А хочется разгрузить мозг от постоянных эмоций (а вместе с ними и стресса от переездов, неопределенности и горизонта планирования в месяц). В общем, цифровым кочевником быть круто, но хорошо при этом иметь дом, куда можно вернуться, выдохнуть и расслабиться.
И рекомендасьон напоследок - видео про Анталью от Владимира Раевского, про то, что тут далеко не только олинклюзив. Сам был на руинах города Перге, и это конечно абсолютный восторг, ходишь как будто сквозь века. Так что не отелями с бассейнами едины, но и повтыкать в стену иногда тоже надо.
❤11
🔥 Инструкция от Netflix про то, как корректно подглядывать в A/B-тесты.
У Netflix недавно вышло две статьи в их блоге (по мотивам нескольких научных). Они рассказывают, как применяют sequential testing для непрерывных данных и для счетчиков (counting processes, под них, например, попадают данные из распределения Пуассона, такие как кол-во логинов или покупок подписок). И это позволяет непрерывно мониторить p-value, и при этом еще и ускорять тесты.
Но зачем это нужно? Все вы наверное знаете (надеюсь), что в классическом fixed-horizon подходе нельзя подглядывать в A/B-тесты и останавливать их как только p-value пробил уровень значимости. Коротко - принимая решение таким образом и каждый раз подглядывая в тест (собираясь при этом принять решение) мы как-бы проводим тест снова, и при каждом подглядывании у нас есть вероятность совершить ошибку первого рода. И если так делать, то ошибка первого рода будет не на заданном вами уровне, а гораздо выше (условно, не 0.05, а 0.5) и вы гораздо чаше будете раскатывать тесты, в которых изменений на самом деле нет.
Тем не менее, иногда подглядеть хочется, и по тесту надо принять решение как можно быстрее. Пример из статьи Netflix - раскатка нового software, которое может повлиять на важные метрики, например play-delay (время от нажатия плей до начала воспроизведения контента). Хочется как можно быстрее понять, что новый софт не сломал ничего в пользовательском опыте. Для таких непрерывных метрик в Netflix придумали метод постоянного сравнения разницы распределений, подробнее читайте в первой статье.
Во второй статье рассказывается про то, как обходиться с так называемыми counting processes, которые могут моделироваться распределением Пуассона. Это может быть кол-во логинов, кол-во воспроизведений контента или ошибок (и это мы хотели бы отловить как можно скорее). Элегантность их метода в том, что требуется только для числа для постоянного мониторинга p-value - кол-во событий из контроля и из теста. А еще есть код на GitHub и вы можете попробовать метод на своих данных.
🔎 Я проверил на моделировании, ошибка первого рода действительно сохраняется при постоянном мониторинге. При это мощность таких методов меньше и они позволяют быстро отлавливать только довольно большие разницы. Вот мой код на github.
Сами статьи:
- Часть 1
- Часть 2
Код на github ко второй части.
Научные статьи с разобранными в блоге методах:
- Rapid Regression Detection in Software Deployments through Sequential Testing
- Anytime-Valid Inference For Multinomial Count Data
У Netflix недавно вышло две статьи в их блоге (по мотивам нескольких научных). Они рассказывают, как применяют sequential testing для непрерывных данных и для счетчиков (counting processes, под них, например, попадают данные из распределения Пуассона, такие как кол-во логинов или покупок подписок). И это позволяет непрерывно мониторить p-value, и при этом еще и ускорять тесты.
Но зачем это нужно? Все вы наверное знаете (надеюсь), что в классическом fixed-horizon подходе нельзя подглядывать в A/B-тесты и останавливать их как только p-value пробил уровень значимости. Коротко - принимая решение таким образом и каждый раз подглядывая в тест (собираясь при этом принять решение) мы как-бы проводим тест снова, и при каждом подглядывании у нас есть вероятность совершить ошибку первого рода. И если так делать, то ошибка первого рода будет не на заданном вами уровне, а гораздо выше (условно, не 0.05, а 0.5) и вы гораздо чаше будете раскатывать тесты, в которых изменений на самом деле нет.
Тем не менее, иногда подглядеть хочется, и по тесту надо принять решение как можно быстрее. Пример из статьи Netflix - раскатка нового software, которое может повлиять на важные метрики, например play-delay (время от нажатия плей до начала воспроизведения контента). Хочется как можно быстрее понять, что новый софт не сломал ничего в пользовательском опыте. Для таких непрерывных метрик в Netflix придумали метод постоянного сравнения разницы распределений, подробнее читайте в первой статье.
Во второй статье рассказывается про то, как обходиться с так называемыми counting processes, которые могут моделироваться распределением Пуассона. Это может быть кол-во логинов, кол-во воспроизведений контента или ошибок (и это мы хотели бы отловить как можно скорее). Элегантность их метода в том, что требуется только для числа для постоянного мониторинга p-value - кол-во событий из контроля и из теста. А еще есть код на GitHub и вы можете попробовать метод на своих данных.
🔎 Я проверил на моделировании, ошибка первого рода действительно сохраняется при постоянном мониторинге. При это мощность таких методов меньше и они позволяют быстро отлавливать только довольно большие разницы. Вот мой код на github.
Сами статьи:
- Часть 1
- Часть 2
Код на github ко второй части.
Научные статьи с разобранными в блоге методах:
- Rapid Regression Detection in Software Deployments through Sequential Testing
- Anytime-Valid Inference For Multinomial Count Data
👍8❤3
Вот такие красивые графики получаются на моделировании. Здесь запускаю А/А-тесты, где изменений в действительности нет.
На первом - просто типичный пример того, как мы могли бы заранее стопнуть тест, если бы совершили ошибку подглядывания. При этом последовательное тестирование помогает этого избежать.
На втором - сто итераций моделирования. Видно, что синие линии гораздо чаще пробивают заданный трешхолд для принятия решения, а красные (здесь используется подход Netflix) почти никогда.
В коде привел несколько функций, которые можете легко адаптировать к своим задачам. И позапускать свои исследования - идеи того, что можно посмотреть, привел в конце ноутбука.
На первом - просто типичный пример того, как мы могли бы заранее стопнуть тест, если бы совершили ошибку подглядывания. При этом последовательное тестирование помогает этого избежать.
На втором - сто итераций моделирования. Видно, что синие линии гораздо чаще пробивают заданный трешхолд для принятия решения, а красные (здесь используется подход Netflix) почти никогда.
В коде привел несколько функций, которые можете легко адаптировать к своим задачам. И позапускать свои исследования - идеи того, что можно посмотреть, привел в конце ноутбука.
👍7🔥4
⛵️Признаюсь в абсолютной любви к яхтингу.
Как же круто стоять за штурвалом, чувствовать порывы ветра в лицо, слушать любимую музыку, и, конечно, наслаждаться хождением под парусом.
Пол года назад первый раз познакомился с яхтингом, проведя выходные на лодке. И сразу пришло понимание, что надо становиться капитаном. И вот перед этим сходили в еще одно путешествие, чтобы понять, какого это, долго жить на яхте.
И Турция - отличное место для этого. У нас был маршрут с Каша до Фетхие. Каждую ночь мы ночевали на яхте, но в основном в маринах. Заходили в бухты, купались, смотрели на рыбов, и при наличии ветра ходили под парусами. Также успели посмотреть на греческие древности, которых тут очень много (пару раз даже проходили мимо греческих островов). Ну а природа и небольшие яхтенные городки - это нечто невероятное.
Впечатления - огонь, теперь точно пойдем получать капитанские права и ходить на регаты с друзьями. Если вы в детстве читали книги Жюль Верна, Сабатини или что-то похожее и мечтали о морских приключениях, то попробуйте яхтинг. Это вполне посильная история по деньгам, а полученные эмоции оправдывают все вложения.
Для вдохновения вот вам фотографии из нашего путешествия, мой любимый YouTube канал Кругосветчиков и канал совладельца силы ветра Саши Сколкова.
Как же круто стоять за штурвалом, чувствовать порывы ветра в лицо, слушать любимую музыку, и, конечно, наслаждаться хождением под парусом.
Пол года назад первый раз познакомился с яхтингом, проведя выходные на лодке. И сразу пришло понимание, что надо становиться капитаном. И вот перед этим сходили в еще одно путешествие, чтобы понять, какого это, долго жить на яхте.
И Турция - отличное место для этого. У нас был маршрут с Каша до Фетхие. Каждую ночь мы ночевали на яхте, но в основном в маринах. Заходили в бухты, купались, смотрели на рыбов, и при наличии ветра ходили под парусами. Также успели посмотреть на греческие древности, которых тут очень много (пару раз даже проходили мимо греческих островов). Ну а природа и небольшие яхтенные городки - это нечто невероятное.
Впечатления - огонь, теперь точно пойдем получать капитанские права и ходить на регаты с друзьями. Если вы в детстве читали книги Жюль Верна, Сабатини или что-то похожее и мечтали о морских приключениях, то попробуйте яхтинг. Это вполне посильная история по деньгам, а полученные эмоции оправдывают все вложения.
Для вдохновения вот вам фотографии из нашего путешествия, мой любимый YouTube канал Кругосветчиков и канал совладельца силы ветра Саши Сколкова.
❤10🔥8