Как бы я начал учить ML с нуля (уже будучи аналитиком).
Машинное обучение - это скилл для аналитика далеко не первой необходимости, но он определенно может стать следующим этапом развития после того, как вы стали крепким джуном или мидлом.
Почему оно полезно:
- Вы можете решать больше бизнесовых задач (а иногда и лучше).
- Вы развиваетесь и повышаете свою стоимость на рынке и грейд (вот матрица компетенции от Авито, где одно из требований к сеньору как раз знание ML).
- Это просто прикольно и интересно. Вы действительно можете в некотором смысле предсказывать будущее, без карт таро и тому подобного. Еще это можно использовать в своих хобби и интересах - я мечтаю когда-нибудь найти время (и силы) и попробовать использовать ML в астрофизике (физическое образование не отпускает до конца) или для задач, связанных с распознаванием животных или в сфере естественных наук.
Итак, как бы действовал я. Не все материалы здесь бесплатные, но их стоимость сильно меньше, чем больших курсов по ML. Понятно, что можно найти и абсолютно бесплатные курсы и материалы, но в этом подборке я себе такой цели не ставлю, а просто привожу ресурсы, которые считаю полезными.
Начал бы с Kaggle, там есть небольшие бесплатные курсы, которые быстро и хорошо рассказывают на практике, как это ваше ML устроено. После чего в упражнениях можно сразу его потрогать и понять а надо ли:
- Intro to ML
- Intermediate ML
- Feature engineering
- Time series
- ML explainability
- Intro to DL
После этого я бы прошел ставшую классической специализацию по ML от Andrew Ng, которая недавно обновилась и стала актуальной.
На этом моменте у вас уже должно быть достаточно знаний, чтобы начать применять ML на практике. А только так и можно что-то выучить (бездумное прохождение курсов работает не очень, проверено на себе). Входные условия задачи - вы уже аналитик, поэтому просто начните применять ML на работе - попробуйте использовать кластеризацию при очередном исследовании, сделайте прогнозы метрик, ускорьте A/B-тест с помощью ML, примените Casual Inferance, когда A/B невозможен.
Если на работе почему-то применить ML не получается, то сделайте свой пет проект, главное - больше практики:
- Идеи для пет проектов
- Статья от ODS на хабр
Дополнительно могу порекоммендовать отличную книгу Hands-On Machine Learning with Scikit-Learn, Keras, and TensorFlow
Также для каждой главы есть ноутбук с кодом на Github и упражнения.
DataCamp - много интерактивных курсов по всему, что связано с ML (и не только). Не бесплатно, но может быть полезно для практики, вот подборка курсов для того, чтобы стать специалистом по ML.
А для закрепления теории есть классный учебник по ML от Яндекса, но там нужна некоторая математическая подготовка.
Машинное обучение - это скилл для аналитика далеко не первой необходимости, но он определенно может стать следующим этапом развития после того, как вы стали крепким джуном или мидлом.
Почему оно полезно:
- Вы можете решать больше бизнесовых задач (а иногда и лучше).
- Вы развиваетесь и повышаете свою стоимость на рынке и грейд (вот матрица компетенции от Авито, где одно из требований к сеньору как раз знание ML).
- Это просто прикольно и интересно. Вы действительно можете в некотором смысле предсказывать будущее, без карт таро и тому подобного. Еще это можно использовать в своих хобби и интересах - я мечтаю когда-нибудь найти время (и силы) и попробовать использовать ML в астрофизике (физическое образование не отпускает до конца) или для задач, связанных с распознаванием животных или в сфере естественных наук.
Итак, как бы действовал я. Не все материалы здесь бесплатные, но их стоимость сильно меньше, чем больших курсов по ML. Понятно, что можно найти и абсолютно бесплатные курсы и материалы, но в этом подборке я себе такой цели не ставлю, а просто привожу ресурсы, которые считаю полезными.
Начал бы с Kaggle, там есть небольшие бесплатные курсы, которые быстро и хорошо рассказывают на практике, как это ваше ML устроено. После чего в упражнениях можно сразу его потрогать и понять а надо ли:
- Intro to ML
- Intermediate ML
- Feature engineering
- Time series
- ML explainability
- Intro to DL
После этого я бы прошел ставшую классической специализацию по ML от Andrew Ng, которая недавно обновилась и стала актуальной.
На этом моменте у вас уже должно быть достаточно знаний, чтобы начать применять ML на практике. А только так и можно что-то выучить (бездумное прохождение курсов работает не очень, проверено на себе). Входные условия задачи - вы уже аналитик, поэтому просто начните применять ML на работе - попробуйте использовать кластеризацию при очередном исследовании, сделайте прогнозы метрик, ускорьте A/B-тест с помощью ML, примените Casual Inferance, когда A/B невозможен.
Если на работе почему-то применить ML не получается, то сделайте свой пет проект, главное - больше практики:
- Идеи для пет проектов
- Статья от ODS на хабр
Дополнительно могу порекоммендовать отличную книгу Hands-On Machine Learning with Scikit-Learn, Keras, and TensorFlow
Также для каждой главы есть ноутбук с кодом на Github и упражнения.
DataCamp - много интерактивных курсов по всему, что связано с ML (и не только). Не бесплатно, но может быть полезно для практики, вот подборка курсов для того, чтобы стать специалистом по ML.
А для закрепления теории есть классный учебник по ML от Яндекса, но там нужна некоторая математическая подготовка.
❤10👍4
🤦♂️ Как объяснить своему продакту, почему нельзя подглядывать в тесты (даже если там уже всё и так понятно и прям очень хочется)?
Все мы люди и бывает так, что ваш коллега, принимающий решение по тесту, просто хочет быстрее выкатить фичу, потому что верят в нее, вложили много сил, любая другая причина. Одна из ошибок, которая часто может возникать в такой ситуации - желание остановить тест, как только p-value пробило заветные 0.05, однако делать так категорически нельзя. Сейчас немного погрузимся в прекрасный мир ошибок первого рода, мощности, моделирования и поймем почему. А главное - поймем, как подглядывать можно (и нужно).
Начнем издалека - зачем вообще нужны эксперименты? Потому что это почти единственный способ понять причинно-следственную связь между фичей и изменением метрик. Если говорить простыми словами - при развитии продукта мы не хотим двигаться как котики в темноте и каждый раз больно биться башкой о твердые предмете, а хотим ясно видеть, куда мы идем. А для этого как раз и нужны эксперименты.
Но все на так просто, и статистика работает так, что при анализе результатов А/Б-тестов мы на берегу договариваемся, что будем совершать некоторую заданную нами долю ошибок. А за нее отвечают доля ошибок первого рода (или статистическая значимость) и мощность.
Ошибка первого рода (alpha) - это когда результаты А/Б-теста говорят о том, что изменения есть, а их на самом деле нет. И то самое значение стат. значимости в 0.05 означает, что для тестов, где изменений нет, мы будем делать вывод о наличии изменений в 5% процентах случаев.
Мощность связана с понятием ошибки второго рода (beta). Это когда результаты тест показывают отсутствие изменений, хотя они на самом деле есть. Мощность равна 1 - beta, то есть в какой доле тестов, где изменение есть, мы действительно сможем его обнаружить. И всеми любимое значение в 80% как раз говорит о том, что в 80% тестов с эффектом мы сможем его задетектить.
Теперь мы уже почти готовы понять, почему же так плохо подглядывать. Но сначала приведу пример, чтобы точно разобраться с ошибкой первого рода и мощностью. Представьте, что вы запустили 200 тестов, 100 из которых с эффектом, а 100 без эффекта. Тогда на уровне значимости 0.05 и при мощности в 80% из 100 тестов без эффекта мы 5 тестов раскатим (совершив ошибку первого рода в 5% случаев), ошибочно сказав, что эффект есть, а вот из 100 тестов с эффектом мы раскатим только 80 (для остальных совершаем ошибку второго рода и не находим эффект, хотя он и есть).
Итак, почему же плохо подглядывать? Потому что тем самым мы значительно увеличиваем ошибку первого рода. Тогда получается, что из тех 100 тестов без эффекта мы раскатим не 5 ошибочных, что соответствует заданному нами уровню значимости, а примерно 50 (да, порядок возрастания ошибки примерно такой). И вот мы возвращаемся в начало поста, и мы уже не гордые орлы, которые ясно видят, куда развивают продукт, а котики, которые бьются мизинчиком обо все вокруг (хочу чтобы вы ассоциировали эту боль с болью аналитиков, когда у них просят остановить тест пораньше, не делайте так). И эти котики катят в прод половину тестов, которые в лучшем случае не имеют эффекта, а в худшем - вредят пользователям, тем самым сводят смысл экспериментов на нет.
Почему же растет ошибка первого рода? Объяснение такое - каждый раз, подглядывая и при этом собираясь принять решения останавливать тест или нет, мы можем совершить ошибку первого рода. То есть, по-сути, мы проводим не один тест, а несколько, из-за чего накапливается ошибка первого рода. При этом просто смотреть на график p-value никто не запрещает, главное при классическом fixed-horizon подходе дождаться окончания теста и только тогда принимать решение.
Все мы люди и бывает так, что ваш коллега, принимающий решение по тесту, просто хочет быстрее выкатить фичу, потому что верят в нее, вложили много сил, любая другая причина. Одна из ошибок, которая часто может возникать в такой ситуации - желание остановить тест, как только p-value пробило заветные 0.05, однако делать так категорически нельзя. Сейчас немного погрузимся в прекрасный мир ошибок первого рода, мощности, моделирования и поймем почему. А главное - поймем, как подглядывать можно (и нужно).
Начнем издалека - зачем вообще нужны эксперименты? Потому что это почти единственный способ понять причинно-следственную связь между фичей и изменением метрик. Если говорить простыми словами - при развитии продукта мы не хотим двигаться как котики в темноте и каждый раз больно биться башкой о твердые предмете, а хотим ясно видеть, куда мы идем. А для этого как раз и нужны эксперименты.
Но все на так просто, и статистика работает так, что при анализе результатов А/Б-тестов мы на берегу договариваемся, что будем совершать некоторую заданную нами долю ошибок. А за нее отвечают доля ошибок первого рода (или статистическая значимость) и мощность.
Ошибка первого рода (alpha) - это когда результаты А/Б-теста говорят о том, что изменения есть, а их на самом деле нет. И то самое значение стат. значимости в 0.05 означает, что для тестов, где изменений нет, мы будем делать вывод о наличии изменений в 5% процентах случаев.
Мощность связана с понятием ошибки второго рода (beta). Это когда результаты тест показывают отсутствие изменений, хотя они на самом деле есть. Мощность равна 1 - beta, то есть в какой доле тестов, где изменение есть, мы действительно сможем его обнаружить. И всеми любимое значение в 80% как раз говорит о том, что в 80% тестов с эффектом мы сможем его задетектить.
Теперь мы уже почти готовы понять, почему же так плохо подглядывать. Но сначала приведу пример, чтобы точно разобраться с ошибкой первого рода и мощностью. Представьте, что вы запустили 200 тестов, 100 из которых с эффектом, а 100 без эффекта. Тогда на уровне значимости 0.05 и при мощности в 80% из 100 тестов без эффекта мы 5 тестов раскатим (совершив ошибку первого рода в 5% случаев), ошибочно сказав, что эффект есть, а вот из 100 тестов с эффектом мы раскатим только 80 (для остальных совершаем ошибку второго рода и не находим эффект, хотя он и есть).
Итак, почему же плохо подглядывать? Потому что тем самым мы значительно увеличиваем ошибку первого рода. Тогда получается, что из тех 100 тестов без эффекта мы раскатим не 5 ошибочных, что соответствует заданному нами уровню значимости, а примерно 50 (да, порядок возрастания ошибки примерно такой). И вот мы возвращаемся в начало поста, и мы уже не гордые орлы, которые ясно видят, куда развивают продукт, а котики, которые бьются мизинчиком обо все вокруг (хочу чтобы вы ассоциировали эту боль с болью аналитиков, когда у них просят остановить тест пораньше, не делайте так). И эти котики катят в прод половину тестов, которые в лучшем случае не имеют эффекта, а в худшем - вредят пользователям, тем самым сводят смысл экспериментов на нет.
Почему же растет ошибка первого рода? Объяснение такое - каждый раз, подглядывая и при этом собираясь принять решения останавливать тест или нет, мы можем совершить ошибку первого рода. То есть, по-сути, мы проводим не один тест, а несколько, из-за чего накапливается ошибка первого рода. При этом просто смотреть на график p-value никто не запрещает, главное при классическом fixed-horizon подходе дождаться окончания теста и только тогда принимать решение.
❤6
И это очень наглядно можно показать на моделировании.
Проведем несколько тысяч синтетических АА-тестов. Возьмем метрику - конверсия, и будем генерировать два распределения с одинаковым значением метрики. После этого будем в первом случае проводить тест корректно и считать p-value только в конце, а во втором смоделируем ошибочное поведение - будем останавливать тест, как только p-value пробьет 0.05. АА-тест показывает корректный результат, если p-value распределено равномерно (потому что изменений у нас нет и шансы получить каждое значение p-value равновероятны).
Параметры моего моделирования: конверсия - 7%, размер выборки - 3000, кол-во симуляций - 3000, p-value считаем с помощью t-test. Посмотрим на результат.
Видим, что в случае корректного теста распределение равномерно, ошибка первого рода равна заданной нами. А в случае подглядывания она возрастает в целых 10 раз!
Как же правильно подглядывать?
Для этого существуют методы последовательного тестирования, которые позволяют постоянно мониторить p-value и останавливать тест, как только оно пробьет заданный нами порог. Отличный метод - Mixture Sequential Probability Ratio Test (mSPRT). Вот тут можно найти его реализацию и сразу без страданий начать применять на практике. Из дополнительных плюсов - последовательное тестирование позволяет ускорять тесты, правда в основном только те, где есть достаточно большой эффект, но в среднем на всех тестах все равно можно получить неплохое ускорение.
А вот оригинальная статья для интересующихся: Johari, R., Pekelis, L., & Walsh, D. J. (2019). Always Valid Inference: Bringing Sequential Analysis to A/B Testing.
Надеюсь у меня получилось убедить вас не совершать ошибку первого рода и использовать последовательное тестирование. Давайте распространять эти знания - делитесь этим постом с коллегами!
Проведем несколько тысяч синтетических АА-тестов. Возьмем метрику - конверсия, и будем генерировать два распределения с одинаковым значением метрики. После этого будем в первом случае проводить тест корректно и считать p-value только в конце, а во втором смоделируем ошибочное поведение - будем останавливать тест, как только p-value пробьет 0.05. АА-тест показывает корректный результат, если p-value распределено равномерно (потому что изменений у нас нет и шансы получить каждое значение p-value равновероятны).
Параметры моего моделирования: конверсия - 7%, размер выборки - 3000, кол-во симуляций - 3000, p-value считаем с помощью t-test. Посмотрим на результат.
Видим, что в случае корректного теста распределение равномерно, ошибка первого рода равна заданной нами. А в случае подглядывания она возрастает в целых 10 раз!
Как же правильно подглядывать?
Для этого существуют методы последовательного тестирования, которые позволяют постоянно мониторить p-value и останавливать тест, как только оно пробьет заданный нами порог. Отличный метод - Mixture Sequential Probability Ratio Test (mSPRT). Вот тут можно найти его реализацию и сразу без страданий начать применять на практике. Из дополнительных плюсов - последовательное тестирование позволяет ускорять тесты, правда в основном только те, где есть достаточно большой эффект, но в среднем на всех тестах все равно можно получить неплохое ускорение.
А вот оригинальная статья для интересующихся: Johari, R., Pekelis, L., & Walsh, D. J. (2019). Always Valid Inference: Bringing Sequential Analysis to A/B Testing.
Надеюсь у меня получилось убедить вас не совершать ошибку первого рода и использовать последовательное тестирование. Давайте распространять эти знания - делитесь этим постом с коллегами!
❤8👍1
Подборка классных докладов про А/Б-тесты ⚡
В предыдущих постах была подборка статей, но читать конечно иногда сложно, поэтому собрал доклады и вебинары с YouTube (которые можно смотреть прям за завтраком).
Пишите в комментариях, какие еще есть полезные доклады, и делитесь с коллегами, давайте соберем крутую подборку материалов по А/Б, которые могут прокачать каждого аналитика / дата сатаниста / продакта!
🔍 В целом про A/B-тестирование
- Школа прдакт менеджеров Яндекса , A/B тесты как способ развития продукта
- Никита Маршалкин: A/B-тесты сложнее, чем кажется | Интервью | karpov.courses
- Анатолий Карпов - A/B-тестирование: как сделать так, чтобы оно заработало
- The ultimate guide to A/B testing | Ronny Kohavi (Airbnb, Microsoft, Amazon)
📊 Полезные доклады, с уклоном в статистику
- Статистика в АБ мифы и реальность — Данила Леньков
- Карта статистических методов - bootstrap VS t - test | Вебинар Анатолия Карпова
- Тонкости A/B тестирования: проблема подглядывания | Вебинар Анатолия Карпова
🔢 Как рассчитать размер выборки для теста
- Анатолий Карпов, «Методы оценки размера выборки в А/Б-тестах. От размера эффекта до симуляций»
- Как и зачем оценивать размер выборки для A/B теста?
🚀 Про ускорение тестов
- Методы сокращения дисперсии, и зачем это нужно — Анатолий Карпов
- Увеличение чувствительности в A/B с помощью Cuped — Валерий Бабушкин
- Александр Сахнов: Геометрическая интерпретация методов снижения дисперсии на примере CUPED
- Как ускорить А/Б тестирование с помощью машинного обучения — Нерсес Богиян
💪Дополнительно
- Плейлист для подготовки к собеседованиям по А/Б тестам
- Как я перестал беспокоиться и полюбил Пуассон-Bootstrap | Вебинар Валерия Бабушкин
- Можно подряд смотреть митапы от expf, вот последний
В предыдущих постах была подборка статей, но читать конечно иногда сложно, поэтому собрал доклады и вебинары с YouTube (которые можно смотреть прям за завтраком).
Пишите в комментариях, какие еще есть полезные доклады, и делитесь с коллегами, давайте соберем крутую подборку материалов по А/Б, которые могут прокачать каждого аналитика / дата сатаниста / продакта!
🔍 В целом про A/B-тестирование
- Школа прдакт менеджеров Яндекса , A/B тесты как способ развития продукта
- Никита Маршалкин: A/B-тесты сложнее, чем кажется | Интервью | karpov.courses
- Анатолий Карпов - A/B-тестирование: как сделать так, чтобы оно заработало
- The ultimate guide to A/B testing | Ronny Kohavi (Airbnb, Microsoft, Amazon)
📊 Полезные доклады, с уклоном в статистику
- Статистика в АБ мифы и реальность — Данила Леньков
- Карта статистических методов - bootstrap VS t - test | Вебинар Анатолия Карпова
- Тонкости A/B тестирования: проблема подглядывания | Вебинар Анатолия Карпова
🔢 Как рассчитать размер выборки для теста
- Анатолий Карпов, «Методы оценки размера выборки в А/Б-тестах. От размера эффекта до симуляций»
- Как и зачем оценивать размер выборки для A/B теста?
🚀 Про ускорение тестов
- Методы сокращения дисперсии, и зачем это нужно — Анатолий Карпов
- Увеличение чувствительности в A/B с помощью Cuped — Валерий Бабушкин
- Александр Сахнов: Геометрическая интерпретация методов снижения дисперсии на примере CUPED
- Как ускорить А/Б тестирование с помощью машинного обучения — Нерсес Богиян
💪Дополнительно
- Плейлист для подготовки к собеседованиям по А/Б тестам
- Как я перестал беспокоиться и полюбил Пуассон-Bootstrap | Вебинар Валерия Бабушкин
- Можно подряд смотреть митапы от expf, вот последний
🔥15❤1
Умеете ли вы дизайнить A/B-тесты?
Недавно я участвовал в контесте от matemarketing и samokat.tech и вошел в топ-10 победителей 🎉 (конкретных баллов не было, но благодаря сортировке по фамилии иду на почетном первом месте, имена остальных победителей заблюрил дабы не распространять личные данные).
Хочу поблагодарить организаторов, в частности Алексея Никушина и Екатерину Шишкину (и команду из самоката), за организацию и возможность поучаствовать в контесте с интересной проблемой, очень круто, что дали реальный кейс из практики.
Участвовал на самом деле не только из-за бесплатного билета (хотя ему очень рад, на конференцию ходил и смотрел много открытых докладов), но и чтобы доказать себе, что разбираюсь в теме экспериментов. Приятно получать подтверждение этому от экспертов, а не только полагаться на свои ощущения. В общем, успех, и в награду себе прекрасный грузинский шашлык (который был бы в любом случае, утешительный шашлык тоже очень вкусен).
Кейс заключался в следующем - внедряется ML-модель для распознавания фродеров-продавцов на маркетплейсе, и надо было задизайнить A/B-тест, чтобы принять решение о ее дальнейшем использовании. Кейс лично мне показался интересным благодаря связке продуктовой задачи и применения в ней ML, было здорово подумать про то, как связаны метрики продукта с метриками качества модели, такими как precision и recall.
💡В общем, делюсь своим решением - ссылка на github. Там есть код, где помимо непосредственно решения можно посмотреть на то, как проводить синтетические АА-тесты (и зачем) и найти полезную функцию для расчета размера выборки с выводом удобных для интерпретации датафреймов.
Недавно я участвовал в контесте от matemarketing и samokat.tech и вошел в топ-10 победителей 🎉 (конкретных баллов не было, но благодаря сортировке по фамилии иду на почетном первом месте, имена остальных победителей заблюрил дабы не распространять личные данные).
Хочу поблагодарить организаторов, в частности Алексея Никушина и Екатерину Шишкину (и команду из самоката), за организацию и возможность поучаствовать в контесте с интересной проблемой, очень круто, что дали реальный кейс из практики.
Участвовал на самом деле не только из-за бесплатного билета (хотя ему очень рад, на конференцию ходил и смотрел много открытых докладов), но и чтобы доказать себе, что разбираюсь в теме экспериментов. Приятно получать подтверждение этому от экспертов, а не только полагаться на свои ощущения. В общем, успех, и в награду себе прекрасный грузинский шашлык (который был бы в любом случае, утешительный шашлык тоже очень вкусен).
Кейс заключался в следующем - внедряется ML-модель для распознавания фродеров-продавцов на маркетплейсе, и надо было задизайнить A/B-тест, чтобы принять решение о ее дальнейшем использовании. Кейс лично мне показался интересным благодаря связке продуктовой задачи и применения в ней ML, было здорово подумать про то, как связаны метрики продукта с метриками качества модели, такими как precision и recall.
💡В общем, делюсь своим решением - ссылка на github. Там есть код, где помимо непосредственно решения можно посмотреть на то, как проводить синтетические АА-тесты (и зачем) и найти полезную функцию для расчета размера выборки с выводом удобных для интерпретации датафреймов.
🔥19
Небольшой чек-лист, по которому дизайнил тест в контесте, и который будет полезен для большинства ваших тестов
🎯 Гипотеза
Определиться, чего мы хотим достигнуть тестом, на какую метрику повлиять. На этом этапе стоит дополнительно посчитать экономику новой фичи - окупит ли потенциальный аплифт хотя бы разработку и есть ли вообще смысл проводить аб.
👥 Группы
Ответить на вопрос - на каких пользователей мы влияем? Это может быть вся аудитория, или какой-то сегмент.
🔀 Сплитование
- Как проводить сплитование? Если это онлайн эксперимент, то вероятно у вас есть сплитовалка, где используется hash-функция. Но возможно вы проводите офлайн эксперимент и вам нужны более сложные методы типо матчинга, необходимо дополнительно подумать о стратификации и тд.
- Определиться с пропорциями сплитования.
- Возможно стоит использовать постепенную раскатку теста.
📊 Метрики
- Основная метрика - для принятия решения.
- Вспомогательные или proxy метрики - дополнительные метрики, которые могут быть немного более чувствительными, и мы ожидаем, что они тоже вырастут.
- Guardrail метрика - не должна упасть.
⏳ Длительность теста (размер выборки)
Перед расчетом размера выборки необходимо понять:
- Тип, значение и распределение метрики до теста и среднее кол-во пользователей в день.
- Какой стат. тест будете применять.
Это важно, так как, например, классическую формулу для ratio-метрик использовать нельзя (и t-test в чистом виде тоже). А в идеале для каждого стат. теста, метрики и способа расчета размера выборки надо проверить на моделировании на исторических данных корректность.
И уже в зависимости от этого, либо по формулам, либо с помощью моделирования, учитывая alpha, power, MDE, считаем размер выборки. Разделив на среднее кол-во пользователей в день, можем оценить длительность теста.
🎯 Гипотеза
Определиться, чего мы хотим достигнуть тестом, на какую метрику повлиять. На этом этапе стоит дополнительно посчитать экономику новой фичи - окупит ли потенциальный аплифт хотя бы разработку и есть ли вообще смысл проводить аб.
👥 Группы
Ответить на вопрос - на каких пользователей мы влияем? Это может быть вся аудитория, или какой-то сегмент.
🔀 Сплитование
- Как проводить сплитование? Если это онлайн эксперимент, то вероятно у вас есть сплитовалка, где используется hash-функция. Но возможно вы проводите офлайн эксперимент и вам нужны более сложные методы типо матчинга, необходимо дополнительно подумать о стратификации и тд.
- Определиться с пропорциями сплитования.
- Возможно стоит использовать постепенную раскатку теста.
📊 Метрики
- Основная метрика - для принятия решения.
- Вспомогательные или proxy метрики - дополнительные метрики, которые могут быть немного более чувствительными, и мы ожидаем, что они тоже вырастут.
- Guardrail метрика - не должна упасть.
⏳ Длительность теста (размер выборки)
Перед расчетом размера выборки необходимо понять:
- Тип, значение и распределение метрики до теста и среднее кол-во пользователей в день.
- Какой стат. тест будете применять.
Это важно, так как, например, классическую формулу для ratio-метрик использовать нельзя (и t-test в чистом виде тоже). А в идеале для каждого стат. теста, метрики и способа расчета размера выборки надо проверить на моделировании на исторических данных корректность.
И уже в зависимости от этого, либо по формулам, либо с помощью моделирования, учитывая alpha, power, MDE, считаем размер выборки. Разделив на среднее кол-во пользователей в день, можем оценить длительность теста.
👍11❤2
🌍 Рубрика - интересные истории (фейлы) из путешествий.
Как уже рассказывал раньше, последний год живу цифровым кочевником, проводя не больше месяца в одном городе. Путешествия для меня - это, пожалуй, то, что позволяет не поехать кукухой от хтони, происходящей в мире, но не все в них идеально. Очередной переезд, очередная новая страна - это потенциальные новые проблемы, тревога и напряжение.
Расскажу несколько забавных историй (все с хорошим концом), случившихся за последние года полтора. Сегодня в подборке - Дубайск (и немного Армении), Черногорские авиалинии, клопы и ChatGPT. Начнем-с.
🛫 Первое (и пожалуй мое любимое). Надо было мне улететь из Тивата в Черногории в Турцию. За несколько недель до отправления мне прилетает изменение в рейсе, о том, что улетаю на пару часов позже, в целом мне так даже удобнее. Так я, уверенный в том, что все хорошо, собираюсь, и просто на всякий случай проверяю билет. На часах два часа ночи. Вылет в десять утра. И неожиданно для себя понимаю, что вылетаю я из Подгорицы. Напоминаю, я в другой части страны. Потом у меня пересадка, на которую я бы очень хотел успеть, а билеты невозвратные. Чтож (сильно матерюсь, глубоко дышу и решаю что делать), спасает автобус в пять утра, который приезжает в Подгорицу за час до вылета. В итоге, на самолет я успел, на красивый восход посмотрел, и урок о том, что рейс может быть перенес в другой город и надо тщательно проверять билеты выучил.
🛩️ Второе. Опять про Montenegro (мать их) airlines. Здесь все банально, но опять неожиданно. Мы в Стамбуле, летим в Черногорию. На посадке узнаем, что нас не хотят пускать на рейс без обратных билетов из страны. Опять глубоко подышав, я покупаю билеты на каком-то левом сайте из Черногории в Боснию и Герцеговину, и бесплатный интернет заканчивается через минуту после оплаты. Успех. Это сейчас я понимаю, что интернет можно было спокойно докупить, но на стрессе ситуация не очень. В итоге в Черногорию мы долетели, это теперь одна из любимых стран, а граница между Черногорией и Боснией - лучшая из границ. Но про нее в другой раз.
🫖 Третье. Теперь про Дубайск. Одна из неприятных сторон в путешествиях - на тебе все пытаются заработать. Так вот, я до сих пор не понимаю как так получилось, но я купил на базаре грамм сто чая за две тысячи рублей. Чай был вкусным, но немножко лохом я себя чувствую до сих пор.
🐢 Четвертое. Одно из самых крутых воспоминаний из Дубая - снорклинг и плавать вместе с черепахами. Если вы бледные поганки, то мазать спину и все, что будет под солнцем надо лучше. У жены подгорела пятая точка (буквально, говорит сидеть три часа в самолете было неприятно), а у меня сгорела спина. Проблема в том, что когда мы на следующий день прилетели в Армению, у меня началась сильная аллергическая реакция - безумно стала чесаться спина. Решили вызывать скорую. Прикол начинается в этот момент - мы дозваниваемся до скорой, говорим здравствуйте, и нас сбрасывают. Раз на четвертый становится не смешно. В итоге помог вызов 911, и спина был спасена.
⛵️Пятая и заключительная. Как мы боролись с клопами, поддержкой Airbnb и при чем здесь ChatGPT. Мы заселились в очередную квартиру на Airbnb, в которой ночью жену начали кусать клопы. Причем найти мы их не можем, а у Airbnb странные требования, из разряда сфотографируйте нам пятна крови и только тогда мы вам поверим. Спустя пару ночей мы поняли, что оставаться там нельзя, и, все-таки найдя одного несчастного клопа и продолжая переписку с поддержкой, переехали в новую квартиру. На следующий день мы уезжаем в другой город на парусный яхтинг. И тут начинается веселье. Поддержка соглашается вернуть нам деньги за жилье с клопами, но заявляет, что нам сейчас отменят квартиру и мы должны пожить в отеле, так как жили там, где были клопы. Итак, мы в Фетхие, наши два чемодана со всеми вещами в Анталье в квартире, которую нам хотят отменить. Чтож. И вот здесь помог ChatGPT - мой мат и объяснения ситуации он превращал в прекрасные сообщения на английском, которые в итоге убедили поддержку нас не выселять. Было нервно.
Как уже рассказывал раньше, последний год живу цифровым кочевником, проводя не больше месяца в одном городе. Путешествия для меня - это, пожалуй, то, что позволяет не поехать кукухой от хтони, происходящей в мире, но не все в них идеально. Очередной переезд, очередная новая страна - это потенциальные новые проблемы, тревога и напряжение.
Расскажу несколько забавных историй (все с хорошим концом), случившихся за последние года полтора. Сегодня в подборке - Дубайск (и немного Армении), Черногорские авиалинии, клопы и ChatGPT. Начнем-с.
🛫 Первое (и пожалуй мое любимое). Надо было мне улететь из Тивата в Черногории в Турцию. За несколько недель до отправления мне прилетает изменение в рейсе, о том, что улетаю на пару часов позже, в целом мне так даже удобнее. Так я, уверенный в том, что все хорошо, собираюсь, и просто на всякий случай проверяю билет. На часах два часа ночи. Вылет в десять утра. И неожиданно для себя понимаю, что вылетаю я из Подгорицы. Напоминаю, я в другой части страны. Потом у меня пересадка, на которую я бы очень хотел успеть, а билеты невозвратные. Чтож (сильно матерюсь, глубоко дышу и решаю что делать), спасает автобус в пять утра, который приезжает в Подгорицу за час до вылета. В итоге, на самолет я успел, на красивый восход посмотрел, и урок о том, что рейс может быть перенес в другой город и надо тщательно проверять билеты выучил.
🛩️ Второе. Опять про Montenegro (мать их) airlines. Здесь все банально, но опять неожиданно. Мы в Стамбуле, летим в Черногорию. На посадке узнаем, что нас не хотят пускать на рейс без обратных билетов из страны. Опять глубоко подышав, я покупаю билеты на каком-то левом сайте из Черногории в Боснию и Герцеговину, и бесплатный интернет заканчивается через минуту после оплаты. Успех. Это сейчас я понимаю, что интернет можно было спокойно докупить, но на стрессе ситуация не очень. В итоге в Черногорию мы долетели, это теперь одна из любимых стран, а граница между Черногорией и Боснией - лучшая из границ. Но про нее в другой раз.
🫖 Третье. Теперь про Дубайск. Одна из неприятных сторон в путешествиях - на тебе все пытаются заработать. Так вот, я до сих пор не понимаю как так получилось, но я купил на базаре грамм сто чая за две тысячи рублей. Чай был вкусным, но немножко лохом я себя чувствую до сих пор.
🐢 Четвертое. Одно из самых крутых воспоминаний из Дубая - снорклинг и плавать вместе с черепахами. Если вы бледные поганки, то мазать спину и все, что будет под солнцем надо лучше. У жены подгорела пятая точка (буквально, говорит сидеть три часа в самолете было неприятно), а у меня сгорела спина. Проблема в том, что когда мы на следующий день прилетели в Армению, у меня началась сильная аллергическая реакция - безумно стала чесаться спина. Решили вызывать скорую. Прикол начинается в этот момент - мы дозваниваемся до скорой, говорим здравствуйте, и нас сбрасывают. Раз на четвертый становится не смешно. В итоге помог вызов 911, и спина был спасена.
⛵️Пятая и заключительная. Как мы боролись с клопами, поддержкой Airbnb и при чем здесь ChatGPT. Мы заселились в очередную квартиру на Airbnb, в которой ночью жену начали кусать клопы. Причем найти мы их не можем, а у Airbnb странные требования, из разряда сфотографируйте нам пятна крови и только тогда мы вам поверим. Спустя пару ночей мы поняли, что оставаться там нельзя, и, все-таки найдя одного несчастного клопа и продолжая переписку с поддержкой, переехали в новую квартиру. На следующий день мы уезжаем в другой город на парусный яхтинг. И тут начинается веселье. Поддержка соглашается вернуть нам деньги за жилье с клопами, но заявляет, что нам сейчас отменят квартиру и мы должны пожить в отеле, так как жили там, где были клопы. Итак, мы в Фетхие, наши два чемодана со всеми вещами в Анталье в квартире, которую нам хотят отменить. Чтож. И вот здесь помог ChatGPT - мой мат и объяснения ситуации он превращал в прекрасные сообщения на английском, которые в итоге убедили поддержку нас не выселять. Было нервно.
😁12
Справедливости ради, клопов мы вряд ли занесли, так как жену перестали кусать. В следующие несколько дней мы попали в небольшой шторм, с фонариками на айфонах пытались в ночи не разбить яхту о камни, но это уже другая история.
Получился длиннопост, но что поделать. Прикладываю фото (в основном) из мест, где происходили описанные события.
Делитесь, а что случалось с вами в путешествиях?
Получился длиннопост, но что поделать. Прикладываю фото (в основном) из мест, где происходили описанные события.
Делитесь, а что случалось с вами в путешествиях?
🔥8
💡 Инсайты из анализа 127000 экспериментов
Недавно прочитал масштабное исследование от Optimizely на основании анализа их тестов, пользовательского опыта и академических исследований. Рассказывают про текущее состояние сферы экспериментов, культуру и как улучшать процессы и извлекать больше пользы от экспериментов. Мало у кого есть возможность проанализировать столько тестов и поделиться результатами с комьюнити, это очень круто. Там много чего интересного, рекомендую всем заинтересованным ознакомиться.
- Вот краткая выжимка от самих Optimizely
- Тут можно почитать исследование целиком
Из интересных инсайтов:
🎯 88% экспериментов не выигрывают. Это число отличается от сферы к сфере и от стадии развития компании, но стоит иметь в виду, что средний Success Rate по больнице - 12%. Но те тесты, которые прокрашиваются, и несут в себе главный импакт, и ради них то и надо экспериментировать.
🔄 Больше тестируемых вариантов - больше импакт. Для экспериментов с 4+ вариантами он в два раза больше по сравнению с классическими А/Б тестами.
🚀 В среднем компании запускают 34 экспериментов в год. Только 3% компаний проводят более 500 экспериментов в год.
🔬 Перфоманс команд по кол-ву запускаемых экспериментов остается примерно одинаковым в течение трех лет. И только направленные усилия на развитие культуры и инвестирования в эксперименты может это поменять в лучшую сторону.
💡 Персонализация важна. В персонализированных экспериментах импакт больше на 41% (ML входит в чат).
Хотя некоторые выводы кажутся несколько очевидными и применимы только к большим компаниям с огромной аудиторией - проводите больше экспериментов, от масштабных изменений можно ожидать больший результат, тестируйте больше вариантов и будет вам счастье. Но для себя все равно в очередной раз вынес то, что в платформу и культуру экспериментов в компании надо инвестировать, потому что это непосредственно влияет на развитие продукта.
Делитесь с коллегами и пишите в комментариях, что думаете о выводах исследования?
Недавно прочитал масштабное исследование от Optimizely на основании анализа их тестов, пользовательского опыта и академических исследований. Рассказывают про текущее состояние сферы экспериментов, культуру и как улучшать процессы и извлекать больше пользы от экспериментов. Мало у кого есть возможность проанализировать столько тестов и поделиться результатами с комьюнити, это очень круто. Там много чего интересного, рекомендую всем заинтересованным ознакомиться.
- Вот краткая выжимка от самих Optimizely
- Тут можно почитать исследование целиком
Из интересных инсайтов:
🎯 88% экспериментов не выигрывают. Это число отличается от сферы к сфере и от стадии развития компании, но стоит иметь в виду, что средний Success Rate по больнице - 12%. Но те тесты, которые прокрашиваются, и несут в себе главный импакт, и ради них то и надо экспериментировать.
🔄 Больше тестируемых вариантов - больше импакт. Для экспериментов с 4+ вариантами он в два раза больше по сравнению с классическими А/Б тестами.
🚀 В среднем компании запускают 34 экспериментов в год. Только 3% компаний проводят более 500 экспериментов в год.
🔬 Перфоманс команд по кол-ву запускаемых экспериментов остается примерно одинаковым в течение трех лет. И только направленные усилия на развитие культуры и инвестирования в эксперименты может это поменять в лучшую сторону.
💡 Персонализация важна. В персонализированных экспериментах импакт больше на 41% (ML входит в чат).
Хотя некоторые выводы кажутся несколько очевидными и применимы только к большим компаниям с огромной аудиторией - проводите больше экспериментов, от масштабных изменений можно ожидать больший результат, тестируйте больше вариантов и будет вам счастье. Но для себя все равно в очередной раз вынес то, что в платформу и культуру экспериментов в компании надо инвестировать, потому что это непосредственно влияет на развитие продукта.
Делитесь с коллегами и пишите в комментариях, что думаете о выводах исследования?
👍5❤1
🎲 A/B-тесты и Монте-Карло?
И речь идет не о казино (хотя интересно, есть ли там продуктовые аналитики), а про моделирование и то, как оно может помочь вам в проведении экспериментов.
Рокет-саенса в технической стороне использования моделирования нет, скорее интересны кейсы применения. Думаю не для всех они очевидны, хотя зачастую важны, поэтому хочу поделиться. И очень уж мне нравится заниматься моделированием (возможно это просто отголоски боли от обучения на кафедре вычислительной физики, где в одной из лабораторных мне надо было посчитать с помощью Монте-Карло скольки-то-мерный интеграл).
📊 Первое - это проверка корректности применения статистических тестов для ваших метрик. Все мы прекрасно знаем из теории, для каких распределений какие применять стат. тесты, однако на практике все может ломаться. Возможно у ваших данных странное распределение, вы забыли что нельзя обычный t-test применять к ratio-метрикам или в данных есть выбросы. Поэтому для каждой метрики и стат. теста стоит на исторических данных проверить, будет ли заданная вами мощность и уровень ошибки первого рода для рассчитанного размера выборки согласовываться с их значениями на моделировании.
👥 Второе - АА-тесты. Тут скорее проверяется корректность работы АБ-платформы. Сэмплируя исторические данные и применяя к ним ваш метод разбиения, получаем одинаковые АА группы (по крайней мере, они такими должны быть). На них можно проверить вашу систему на уровень ошибки первого рода, а также на то, нет ли для вашего метода сплитования проблемы Sample Ratio Mismatch.
🧮 Третье - дизайн тестов. Не всегда очевидно, как рассчитать размер выборки. Понятно, что есть классическая формула, но на самом деле она применима только к метрикам с распределениями, для которых можно применять t-test (i.i.d. и вот это все). Однако нам хочется дизайнить тесты для ratio-метрик, квантилей и много чего еще. И тут может пригодиться моделирование - берете много исторических данных с вашей метрикой, много раз ее бутстрапите с итеративно увеличивающимся размером, проводите моделирование из первого пункта и ждете, пока размер выборки не будет достаточным, чтобы альфа и мощность были равны заданным вами (для применяемого стат. теста). Очень долго и немного больно, но зато действенно.
💡 И две отличные статьи, где показано на практике, как все это применять:
- Про корректность стат. тестов от X5
- Про расчет размера выборки с помощью моделирования от expf
И речь идет не о казино (хотя интересно, есть ли там продуктовые аналитики), а про моделирование и то, как оно может помочь вам в проведении экспериментов.
Рокет-саенса в технической стороне использования моделирования нет, скорее интересны кейсы применения. Думаю не для всех они очевидны, хотя зачастую важны, поэтому хочу поделиться. И очень уж мне нравится заниматься моделированием (возможно это просто отголоски боли от обучения на кафедре вычислительной физики, где в одной из лабораторных мне надо было посчитать с помощью Монте-Карло скольки-то-мерный интеграл).
📊 Первое - это проверка корректности применения статистических тестов для ваших метрик. Все мы прекрасно знаем из теории, для каких распределений какие применять стат. тесты, однако на практике все может ломаться. Возможно у ваших данных странное распределение, вы забыли что нельзя обычный t-test применять к ratio-метрикам или в данных есть выбросы. Поэтому для каждой метрики и стат. теста стоит на исторических данных проверить, будет ли заданная вами мощность и уровень ошибки первого рода для рассчитанного размера выборки согласовываться с их значениями на моделировании.
👥 Второе - АА-тесты. Тут скорее проверяется корректность работы АБ-платформы. Сэмплируя исторические данные и применяя к ним ваш метод разбиения, получаем одинаковые АА группы (по крайней мере, они такими должны быть). На них можно проверить вашу систему на уровень ошибки первого рода, а также на то, нет ли для вашего метода сплитования проблемы Sample Ratio Mismatch.
🧮 Третье - дизайн тестов. Не всегда очевидно, как рассчитать размер выборки. Понятно, что есть классическая формула, но на самом деле она применима только к метрикам с распределениями, для которых можно применять t-test (i.i.d. и вот это все). Однако нам хочется дизайнить тесты для ratio-метрик, квантилей и много чего еще. И тут может пригодиться моделирование - берете много исторических данных с вашей метрикой, много раз ее бутстрапите с итеративно увеличивающимся размером, проводите моделирование из первого пункта и ждете, пока размер выборки не будет достаточным, чтобы альфа и мощность были равны заданным вами (для применяемого стат. теста). Очень долго и немного больно, но зато действенно.
💡 И две отличные статьи, где показано на практике, как все это применять:
- Про корректность стат. тестов от X5
- Про расчет размера выборки с помощью моделирования от expf
❤12👍1
Признаюсь, я не умею нормально отдыхать.
После работы мозг не расслабляется, а продолжает требовать новой информации в виде книг, фильмов, сериалов. Либо включаются тревожные мысли про неопределенность в будущем, что делать со своей жизнью, как развиваться, в какой стране жить, и все в таком духе.
Нашел для себя один способ, который немного скрашивает вечера - втыкать на закат и строить башенки из камней. На фоне все равно обычно играет подкаст или аудиокнига, но монотонное собирание камней, шум волн и лучи закатного солнца делают жизнь немного приятней, да и мозг немного отдыхает.
Есть ли у кого-то такие же проблемы? Расскажите, как отдыхаете и расслабляетесь?
После работы мозг не расслабляется, а продолжает требовать новой информации в виде книг, фильмов, сериалов. Либо включаются тревожные мысли про неопределенность в будущем, что делать со своей жизнью, как развиваться, в какой стране жить, и все в таком духе.
Нашел для себя один способ, который немного скрашивает вечера - втыкать на закат и строить башенки из камней. На фоне все равно обычно играет подкаст или аудиокнига, но монотонное собирание камней, шум волн и лучи закатного солнца делают жизнь немного приятней, да и мозг немного отдыхает.
Есть ли у кого-то такие же проблемы? Расскажите, как отдыхаете и расслабляетесь?
❤18👍2