Заскуль питона (Data Science)
6.2K subscribers
110 photos
15 videos
4 files
142 links
Канал про Python, Data Science, SQL и многое другое

По вопросам сотрудничества и рекламе: @m459n9

Чат: https://t.iss.one/my_it_frogs
Download Telegram
Мемы

Всем доброе утро! Сегодня суббота, а это значит, что нужно отдыхать, уделять время себе после рабочей неделе, предлагаю прислать любимые мемы про DS / IT / работу в комментарии.

😏 Если мемы будут классные, то я их выложу в @ds_memes, а пока начну эстафету в комментариях.

Следующий пост выложу про то, как устроен пайплайн публикации мемов.

🐳🐳🐳

@zasql_python
Please open Telegram to view this post
VIEW IN TELEGRAM
1😁11🐳421
😎 Крутые статьи на Хабре про A/B-тестирование от крупных компаний

A/B-тесты кажутся простыми: разделили аудиторию, сравнили метрики, сделали вывод. Но на практике можно легко допустить ошибку, которая приведёт к неправильным решениям. Собрал полезные статьи с Хабра, которые помогут разобраться в нюансах экспериментов и избежать классических фейлов и узнать что-то новое.

Топ постов от IT-компаний, в которых активно используется 🆎.

💙 Ozon

🟢Шесть причин, почему ваши A/B-тесты не работают
🟢Без А/B результат XЗ, или Как построить высоконагруженную платформу А/B-тестов

🖤 X5 Tech

🟢А/Б тесты с метрикой отношения. Дельта-метод
🟢Как проводить A/B-тестирование на 15 000 офлайн-магазинах
🟢50 оттенков линейной регрессии, или почему всё, что вы знаете об A/B тестах, помещается в одно уравнение
🟢Varioqub: за Mann-Whitney замолвите слово

🛒 Купер (ex. СберМаркет)

🟢Линеаризация: зачем и как укрощать ratio-метрики в A/B-тестах
🟢База: айсберг A/B-тестов

🌏 Авито

🟢Как устроено A/B-тестирование в Авито
🟢Как улучшить ваши A/B-тесты: лайфхаки аналитиков Авито. Часть 1
🟢Как улучшить ваши A/B-тесты: лайфхаки аналитиков Авито. Часть 2
🟢Сетап А/В-теста, который помог снизить MDE выручки в 2 раза
🟢Как мы в Авито проводим A/B-тесты CRM-рассылок

🤪 Lamoda Tech

🟢Как же мощно я провел A/B-тест, или почему не стоит сравнивать наблюдаемый аплифт с MDE

❤️ Яндекс

🟢10 мифов об A/B-тестировании: как избежать распространённых заблуждений в статистическом анализе

🏦 Т-банк

🟢Использование последовательного тестирования для уменьшения размера выборки

Ставьте 🐳, если подборка была полезной, сохраняйте к себе, чтобы не забыть! Следующую подборку сделаю по методам оценки эффекта без A/B тестирования

@zasql_python 👉 @ds_memes

Что-то забыл? Пишите в комментариях!
Please open Telegram to view this post
VIEW IN TELEGRAM
🐳599🔥95👍42
Forwarded from Data Science Memes
Пятница, играем в русскую рулетку.

😏 @ds_memes
Please open Telegram to view this post
VIEW IN TELEGRAM
😁33🤣10😎21🤯1
Буквально 2 дня назад вышла статья Avito 🌍 по 🆎. Разбираем по шагам механику A/B-тестирования: математика, интуиция и код

Почитал, в целом могу сказать, что хорошее чтиво для разбора A/B тестов.

Обычно, я смотрю графически на то, как изменяется MDE (тут это написано в зависимости от длительности эксперимента), также смотрю и по количеству пользователей в эксперименте (10/10, 20/20 и тд), только равные группы пользователей.

🧑‍🎓 Теоретическое
def compare_mde(current_a, current_b, new_a, new_b):
return np.sqrt(1/current_a + 1/current_b) / np.sqrt(1/new_a + 1/new_b)

# здесь смотрят на то, а как изменится mde, если мы перейдем от 10/10 к 50/50 разбиению
compare_mde(0.1, 0.1, 0.5, 0.5) # ~2.236


💻 Практическое
def check_mde_reduce_from_size(grouped_dataset, current_t, current_c, new_t, new_c):
"""
Функция для сравнения MDE в текущем варианте сплитования и в новом.
Параметры:
- grouped_dataset: сгруппированный поюзерный датасет, на осоновании которого будут сравниваться MDE
- current_t: доля пользователей в тесте в текущем сетапе
- current_c: доля пользователей в контроле в текущем сетапе
- new_t: доля пользователей в тесте в новом сетапе
- new_c: доля пользователей в контроле в новом сетапе
Возвращает:
- отношение MDE_current / MDE_new
"""


grouped_dataset['group_current'] = np.random.choice(['test', 'control', '-'],
p=[current_t, current_c, 1 - current_c - current_t],
size=len(grouped_dataset))
grouped_dataset['group_new'] = np.random.choice(['test', 'control', '-'],
p=[new_t, new_c, 1 - new_t - new_c],
size=len(grouped_dataset))
metric = 'promotion_revenue'


test_curr = np.array(grouped_dataset[(grouped_dataset['group_current'] == 'test')][metric])
control_curr = np.array(grouped_dataset[(grouped_dataset['group_current'] == 'control')][metric])

test_new = np.array(grouped_dataset[(grouped_dataset['group_new'] == 'test')][metric])
control_new = np.array(grouped_dataset[(grouped_dataset['group_new'] == 'control')][metric])

MDE_current = get_relative_MDE(test_curr, control_curr, alpha=0.05, beta=0.2)
MDE_new = get_relative_MDE(test_new, control_new, alpha=0.05, beta=0.2)
return MDE_current / MDE_new


Из формулы MDE зачастую мы работаем с равными дисперсиями в выборкам, поэтому можно вынести из под корня константу в виде дисперсии и размера выборки, это вот тут.

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

Написано еще тут и про прокси-метрики, что их нужно выбирать в зависимости от каждого кейса, про оценку эффекта при переходе от обычной метрики к прокси-метрике, интерпретацию прокси-метрик

+ итоги правильной подготовки сетапа теста, где выбрали

а) сплит 50/50, а не 10/10
б) выбрали прокси-метрику, а не основную (которая обладает меньшей чувствительностью)
в) держать тест не 1, а 7 недель.

🔽 как результат, получили сокращение MDE в 9.2 раза!

Ну и дополнительно рассказали про контр-метрики, в очередной раз упомянули линеаризацию + доверительный интервал для оценки эффекта Ratio-метрик.

В целом, хорошая и ненапряжная статья, которую я вам советую прочитать, если хотите начать разбираться в A/B тестах + подметить для себя что-то новое)

Ставьте 🐳, если понравился пост, делитесь своими мыслями в комментариях.
Please open Telegram to view this post
VIEW IN TELEGRAM
🐳33🔥85
вот и думаем! Garbage in -> Garbage Out.

@zasql_python 👉 @ds_memes
Please open Telegram to view this post
VIEW IN TELEGRAM
18😁7🐳3