Мои попытки увидеть Арарат во всей красе пока никак не увенчаются успехом.
Лучшее место для этого - Хор Вирап. Помимо монастыря, из которого начало распространяться христианство по Армении, это ближайшее место до Арарата и границы с Турцией.
Многие не знают, но Арарат, главный символ Армении, уже больше ста лет принадлежит Турции. За это можно сказать спасибо Ленину, который передал его Ататюрку в 1921 году на обещание сделать турцию коммунистической (как понимаете, не удалось).
В общем, сегодня я побывал тут в четвертый раз, но видна была только нижняя половина (до этого в основном видел только туман). Фото с вершиной с другой смотровой площадки. А ещё тут аисты живут.
А вообще, Арарат прекрасен, как и остальная природа Армении. Отличное место, чтобы встретиться с родными, если вы не живете в России, поесть и насладиться природой. Последние фото из Дилижана, Севана и Нораванка, мои любимые места.
Лучшее место для этого - Хор Вирап. Помимо монастыря, из которого начало распространяться христианство по Армении, это ближайшее место до Арарата и границы с Турцией.
Многие не знают, но Арарат, главный символ Армении, уже больше ста лет принадлежит Турции. За это можно сказать спасибо Ленину, который передал его Ататюрку в 1921 году на обещание сделать турцию коммунистической (как понимаете, не удалось).
В общем, сегодня я побывал тут в четвертый раз, но видна была только нижняя половина (до этого в основном видел только туман). Фото с вершиной с другой смотровой площадки. А ещё тут аисты живут.
А вообще, Арарат прекрасен, как и остальная природа Армении. Отличное место, чтобы встретиться с родными, если вы не живете в России, поесть и насладиться природой. Последние фото из Дилижана, Севана и Нораванка, мои любимые места.
❤8
Неочевидная причина, почему ваши А/Б-тесты могут быть некорректными.
Sample Ratio Mismatch (SRM) - когда отношение вариантов не равняется тому, которое вы задавали. Например, вы планировали распределение в тесте - 50/50, а в итоговых данных - 45/55. Это достаточно частая проблема, от которой страдают даже топовые компании, например, в LinkedIn порядка 10% тестов имели SRM, в Microsoft - 6%.
Почему это плохо? Некорректное распределение - это симптом того, что в вашем тесте что-то не так. Одно из основных предположений для корректного эксперимента - пользователи должны распределяться по вариантам независимо и случайно. Если нарушается распределение, то вероятно на ваш тест влияют какие-то переменные, вызывая разницу в том, какие и как пользователи попадают в группы. Это в свою очередь будет влиять на итоговую метрику. Тем самым, эксперимент становится недостоверным.
Перед тем как искать причины необходимо понять, что проблема вообще есть. Для обнаружения считают p-value с использованием chi-square тест. Вот калькулятор, который в этом поможет.
Ряд проблем, которые могут вызывать SRM:
- Некорректность сплитования
- Ломается код в одном из вариантов, из-за чего пользователи не попадают в тест
- Проблемы с логами и данными в целом
- Некорректный анализ данных при подсчете результатов
На картинке причины, которые могут появляться на каждом из этапов эксперимента, взято из стати ExP.
Как же найти причину?
- Посмотреть на сегменты. Возможно проблема есть для одного браузера или только для новых пользователей.
- Посмотреть на SRM в динамике. Сразу ли начались проблемы в тесте или появились начиная с какого-то момента?
- Попросить разработчиков проверить код распределения вариантов и реализацию новой фичи.
Более подробно про SRM можно почитать в блоге Microsoft и в статье от ExP.
Встречались ли вы с такой проблемой и как ее решали? И на каком уровне значимости вы определяете, что проблема есть? Делитесь в комментариях!
Sample Ratio Mismatch (SRM) - когда отношение вариантов не равняется тому, которое вы задавали. Например, вы планировали распределение в тесте - 50/50, а в итоговых данных - 45/55. Это достаточно частая проблема, от которой страдают даже топовые компании, например, в LinkedIn порядка 10% тестов имели SRM, в Microsoft - 6%.
Почему это плохо? Некорректное распределение - это симптом того, что в вашем тесте что-то не так. Одно из основных предположений для корректного эксперимента - пользователи должны распределяться по вариантам независимо и случайно. Если нарушается распределение, то вероятно на ваш тест влияют какие-то переменные, вызывая разницу в том, какие и как пользователи попадают в группы. Это в свою очередь будет влиять на итоговую метрику. Тем самым, эксперимент становится недостоверным.
Перед тем как искать причины необходимо понять, что проблема вообще есть. Для обнаружения считают p-value с использованием chi-square тест. Вот калькулятор, который в этом поможет.
Ряд проблем, которые могут вызывать SRM:
- Некорректность сплитования
- Ломается код в одном из вариантов, из-за чего пользователи не попадают в тест
- Проблемы с логами и данными в целом
- Некорректный анализ данных при подсчете результатов
На картинке причины, которые могут появляться на каждом из этапов эксперимента, взято из стати ExP.
Как же найти причину?
- Посмотреть на сегменты. Возможно проблема есть для одного браузера или только для новых пользователей.
- Посмотреть на SRM в динамике. Сразу ли начались проблемы в тесте или появились начиная с какого-то момента?
- Попросить разработчиков проверить код распределения вариантов и реализацию новой фичи.
Более подробно про SRM можно почитать в блоге Microsoft и в статье от ExP.
Встречались ли вы с такой проблемой и как ее решали? И на каком уровне значимости вы определяете, что проблема есть? Делитесь в комментариях!
👍4❤3
Моя главная боль аналитика - боль в спине (на втором месте стабильно идет качество данных).
Постоянная работа за компьютером в целом не очень полезна, а когда ты на удаленке, при этом без постоянного обустроенного рабочего места, то больно вдвойне (буквально). Один из минусов жизни цифрового кочевника - отсутствие почти во всех Airbnb нормальных стульев и столов, а возить их с собой несколько проблематично.
Решил наконец-то сделать подарок своей шее и купил подставку под ноутбук, клавиатуру и мышь, надеюсь это хоть немного поможет. Хотя все еще иногда нахожу себя сидящим на кухне или на диване просто с ноутбуком (совсем отвык от клавиатуры и мыши, пока непривычно).
Из того, что мне помогает - ежедневная недолгая гимнастика (того, что болит сильнее, в основном шеи) и ежедневные прогулки. А из плюсов жизни цифрового кочевника - возможность жить на море или у гор и после рабочего дня смотреть на закаты, а на выходных ходить в горы. Как-то мне это ближе, чем серый Питер (хотя он тоже прекрасен). А вот работать на улице не очень, в основном из-за солнца, иногда прилетают всякие осы, да и жарко бывает. Хотя встать, размять шею, постоять на балконе со стаканом чая, с видом на море и горы - кайф.
Есть ли у кого-то такие же проблемы с болью в спине? Поделитесь, что вы с этим делаете? Кажется, что только жесткая дисциплина и постоянные физические упражнения помогают, но на это не всегда есть силы.
Постоянная работа за компьютером в целом не очень полезна, а когда ты на удаленке, при этом без постоянного обустроенного рабочего места, то больно вдвойне (буквально). Один из минусов жизни цифрового кочевника - отсутствие почти во всех Airbnb нормальных стульев и столов, а возить их с собой несколько проблематично.
Решил наконец-то сделать подарок своей шее и купил подставку под ноутбук, клавиатуру и мышь, надеюсь это хоть немного поможет. Хотя все еще иногда нахожу себя сидящим на кухне или на диване просто с ноутбуком (совсем отвык от клавиатуры и мыши, пока непривычно).
Из того, что мне помогает - ежедневная недолгая гимнастика (того, что болит сильнее, в основном шеи) и ежедневные прогулки. А из плюсов жизни цифрового кочевника - возможность жить на море или у гор и после рабочего дня смотреть на закаты, а на выходных ходить в горы. Как-то мне это ближе, чем серый Питер (хотя он тоже прекрасен). А вот работать на улице не очень, в основном из-за солнца, иногда прилетают всякие осы, да и жарко бывает. Хотя встать, размять шею, постоять на балконе со стаканом чая, с видом на море и горы - кайф.
Есть ли у кого-то такие же проблемы с болью в спине? Поделитесь, что вы с этим делаете? Кажется, что только жесткая дисциплина и постоянные физические упражнения помогают, но на это не всегда есть силы.
👍10
Наконец добрался до ChatGPT 4o и нахожусь в абсолютном восторге от того, как с ее помощью теперь можно учить языки и готовиться к интервью в зарубежные компании.
Общее впечатление - это действительно выглядит как магия 🪄. И с одной стороны я понимаю, что под капотом всего этого лежит перемножение матриц и подсчет градиентов, но осмыслить то, как это натренировали и сделали из этого такой крутой и сложный продукт все равно не могу.
В целом, теперь у вас в кармане личный репетитор (бесплатный) языка, который может понять ваш уровень, составить план изучения и помогать вам действительно учиться говорить. Понятно, почему акции Дуолинго так резко упали (сова наверное сейчас очень злится).
И для подготовки к интервью это тоже бесценный инструмент. Потенциально, помимо практики всех технических скиллов, теперь вы можете попросить его побыть рекрутером из big tech, показать вакансию и провести mock собеседование. Что еще более круто, об модель можно без стеснения прорабатывать все, что связано с самопрезентаций, behavioral частью и soft скилами. И для меня, пока не имевшего большого опыта прохождения интервью на английском, это было бы супер важным. Причем, тебя ведь не просто слушают, но могут поправлять и помогать корректно на вопросы отвечать.
Причем, я намеренно употребил слово инструмент. Все еще не считаю, что ChatGPT пока может заменить ни учителей языка, ни нормальные моки с фидбэком от старших коллег. Мне кажется, в курсах и работе с человеком ты в основном платишь за свою мотивацию и хорошо укомплектованный материал. А бесплатного материала уже сейчас есть тонны, и без должной мотивации, с ChtaGPT или без него, что-то изучить все так же очень сложно. А пока за вау эффект и новые возможности определенно лайк, ждем полную раскатку всех новых фичей (и играемся с ними, пока машины не захватили мир).
Что думаете о новой версии? Будете использовать? Какие еще классные варианты применения можете предложить?
Общее впечатление - это действительно выглядит как магия 🪄. И с одной стороны я понимаю, что под капотом всего этого лежит перемножение матриц и подсчет градиентов, но осмыслить то, как это натренировали и сделали из этого такой крутой и сложный продукт все равно не могу.
В целом, теперь у вас в кармане личный репетитор (бесплатный) языка, который может понять ваш уровень, составить план изучения и помогать вам действительно учиться говорить. Понятно, почему акции Дуолинго так резко упали (сова наверное сейчас очень злится).
И для подготовки к интервью это тоже бесценный инструмент. Потенциально, помимо практики всех технических скиллов, теперь вы можете попросить его побыть рекрутером из big tech, показать вакансию и провести mock собеседование. Что еще более круто, об модель можно без стеснения прорабатывать все, что связано с самопрезентаций, behavioral частью и soft скилами. И для меня, пока не имевшего большого опыта прохождения интервью на английском, это было бы супер важным. Причем, тебя ведь не просто слушают, но могут поправлять и помогать корректно на вопросы отвечать.
Причем, я намеренно употребил слово инструмент. Все еще не считаю, что ChatGPT пока может заменить ни учителей языка, ни нормальные моки с фидбэком от старших коллег. Мне кажется, в курсах и работе с человеком ты в основном платишь за свою мотивацию и хорошо укомплектованный материал. А бесплатного материала уже сейчас есть тонны, и без должной мотивации, с ChtaGPT или без него, что-то изучить все так же очень сложно. А пока за вау эффект и новые возможности определенно лайк, ждем полную раскатку всех новых фичей (и играемся с ними, пока машины не захватили мир).
Что думаете о новой версии? Будете использовать? Какие еще классные варианты применения можете предложить?
❤5
Как бы я начал учить 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