Аналитик сюра
1.05K subscribers
264 photos
55 links
Пишу про продуктовую аналитику, A/B-тесты, ML, образование и карьеру. И немного про жизнь цифрового кочевника.

Работаю старшим продуктовым аналитиком в inDrive.

Для связи: @yubal42
LinkedIn: https://www.linkedin.com/in/yuriybalandin
Download Telegram
📈 Как прогнозировать временные ряды с помощью машинного обучения (и зачем)? 

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

Ну и в целом, круто же немного заглянуть ненадолго в будущее (хотя я не уверен что хотел бы его знать сейчас)? 

🔍 Существует несколько основных подходов: 

- Эконометрические или традиционные. Это 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
👍8❤3
Вот такие красивые графики получаются на моделировании. Здесь запускаю А/А-тесты, где изменений в действительности нет.

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

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

В коде привел несколько функций, которые можете легко адаптировать к своим задачам. И позапускать свои исследования - идеи того, что можно посмотреть, привел в конце ноутбука.
👍7🔥4
⛵️Признаюсь в абсолютной любви к яхтингу.

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

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

И Турция - отличное место для этого. У нас был маршрут с Каша до Фетхие. Каждую ночь мы ночевали на яхте, но в основном в маринах. Заходили в бухты, купались, смотрели на рыбов, и при наличии ветра ходили под парусами. Также успели посмотреть на греческие древности, которых тут очень много (пару раз даже проходили мимо греческих островов). Ну а природа и небольшие яхтенные городки - это нечто невероятное.

Впечатления - огонь, теперь точно пойдем получать капитанские права и ходить на регаты с друзьями. Если вы в детстве читали книги Жюль Верна, Сабатини или что-то похожее и мечтали о морских приключениях, то попробуйте яхтинг. Это вполне посильная история по деньгам, а полученные эмоции оправдывают все вложения.

Для вдохновения вот вам фотографии из нашего путешествия, мой любимый YouTube канал Кругосветчиков и канал совладельца силы ветра Саши Сколкова.
❤10🔥8