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

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

Чат: https://t.iss.one/my_it_frogs
Download Telegram
🐧 ИЕРАРХИЯ МЕТРИК
или как научиться понимать свой продукт

☺️ В этом посте хочу рассказать про то, зачем нужна иерархия метрик в продукте, какая мощь кроется за этим и рассмотреть пример с реального собеседования в крупную компанию.

🍿 Метрики бывают разные, за всеми не уследить, а структуризация необходима для более понятной работы с продуктом.

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

Так вот, иерархия помогает определить взаимосвязи между различными метриками и понять, почему изменилась «North Star».

Почему это необходимо? По моему мнению, это нужно для ускоренного принятия решений и понимания взаимосвязей между компонентами

😢 Например, у нас упала конверсия в покупку, потому что упало количество активных лидов. Упал средний чек, потому что выросло количество заказов или уменьшилась сумма заказов и т.д.

😭 Согласитесь, что если готовить витрину с данными по метрикам в различных разрезах (то, что придет в голову), получится не совсем понятно, а что дальше делать с этим, как говорить бизнесу почему у нас упали метрики.

📝 На собеседованиях обычно и спрашивают про подобного рода кейсы, когда необходимо определить основную метрику и уже дальше раскручивать в сторону принятия решений.

👮 Например, в одну из компаний был подобный кейс: компания X является агрегатором продуктовых магазинов по типу Пятерочки, Перекрестка, Магнита и др. Мы хотим внедрить механику как в сети «МЕТРО», покупаешь больше товаров одного вида - платишь меньше. Вопрос, как оценить денежно эффект, который мы могли бы получить, если бы внедрили это раньше.

😎 Пишите в комментариях, какие вы еще знаете методы измерения продукта, как правильно оценивать внедрения фич. Будет интересно почитать!
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥159🐳63🦄3🌭1
🙊 ОБСУЖДЕНИЕ
(пока название не придумал).

Какие основные навыки нужны в сфере Data Science?

📝 Давайте поговорим о том, что не относится к хардам (Python, SQL, A/B, статистика, ML / DL и др.)

Одно из ключевых для меня это:

1. Умение задавать вопросы. Вас никто за это не съест. Большинство боятся показаться глупыми, хотя не совсем оправданно, т.к. любая корпорация обладает тонкостями, которые можно и не знать, это нормально. Лучше спросить и показаться дураком, чем не спросить и оказаться им.

🧠 2. Обучаемость. Да, тот самый уверенный пользователь ПК на hh. Умение понимать процессы в компании, технологии в кратчайшие сроки, совершенствоваться и т.д.

💺 3. Усидчивость и концентрация внимания. Избитые 10 000 часов, которые скажут тебе о том, что ты являешься классным специалистом. Но вопрос, качественно потрачено это время или нет? Готов ли ты себе сказать о том, что провел это время с пользой?

🍪🍪 4. Умение доносить до людей свои мысли. Здесь бы я выделил умение интерпретировать бизнесу результаты своих трудов. Будь то проведение A/B теста, исследования, обучение модели. Людям важно понимать друг друга.

А как вы считаете, что является одним из самых важных навыков, что бы вы выделили для себя? Пишите в комментариях свой ТОП-3, ставьте 🕺
Please open Telegram to view this post
VIEW IN TELEGRAM
237👍4🔥3🐳2👎1🌭1
🎲 Задача на статистику и теорию вероятностей в компанию X.

Заезженная задача, которую регулярно дают на собеседованиях.

🐙 Осьминог Пауль 16 раз пробовал угадать победителя футбольного матча. 14 раз он угадал правильно, 2 раза ошибся.
Проверьте гипотезу H0: Пауль выбирает победителя футбольного матча случайно. Сделайте вывод.


💡Подсказка 1: Задача на понимание что такое p-value

💡 Подсказка 2: перед тем, как решать, подумайте какие исходы вам нужно учитывать

💡 Подсказка 3: Подумайте, как дополнительно можно интерпретировать полученные результаты. Что можно сказать про Осьминога?

🍪🍪 Пишите то, как бы вы решали эту задачу, что бы дополнительно уточнили у интервьюера. Отпишите, по поводу того, как вам вообще такой формат, ставьте 🕺
Please open Telegram to view this post
VIEW IN TELEGRAM
244❤‍🔥4🐳3🔥1🌭1
Всех с праздниками 🙂

А какой вы тип? Пишите в комментариях ❤️
Please open Telegram to view this post
VIEW IN TELEGRAM
😁268🔥32👍2🌭1
🆎 Что такое p-value и почему оно меньше alpha?

🎧 Работая в компании и проводя эксперименты, мы перестаем задумываться о таких вещах и пользуемся этим утверждением (если изменения статзначимы) как данность. В этом посте я расскажу почему это так.

🐶 Обычно трактуют несколько определений.

p-value – это вероятность получить значение статистики критерия равное наблюдаемому или более нетипичное по сравнению с наблюдаемым при условии, что нулевая гипотеза верна


p-value – это минимальный уровень значимости, на котором нулевая гипотеза может быть отвергнута.


🔥 Давайте разберём более подробно. Предположим, у нас есть какая-то статистика (фиксируем H0). Это может быть среднее, какое-то число, полученное эмпирическим методом. В целом общем то, что имеем мы СЕЙЧАС.

🍑 Построили распределение статистики до проведения эксперимента. Например, выборочное среднее. Получили нормальное распределение, H0 в этом случае верна. Обычно в индустрии берут уровень значимости равный 0.01, 0.05.

😑 Что это значит для нас? Мы можем задать числом вероятность получить такие же или более экстремальные значения. В этом случае мы фиксируем alpha и можем взять то значение статистики, получая которое в дальнейшем мы отвергаем H0. Без изменений это будет FPR (False Positive Rate). Тут вопрос бизнесу, в каких случаях мы хотим ошибаться. Понятно, что если мы выберем медиану распределения статистику FPR будет 50%, что является недопустимым.

🤗 Получили числено наше критическое значение, относительно которого мы будем считать критическую область (обычно это является излишком, так как мы фиксируем alpha на уровне 0.05, 0.01)

😎 Если мы проводим эксперимент и получаем значение больше нашей отсечки при верной H0, то H0 отвергается.

🙂 Давайте разберемся с p-value.

Давайте пока остановимся на односторонней гипотезе stat > val


🚙 Это значит, что мы должны найти значение функции распределения в точке для исходного распределения статистики.

Точнее, 1 - distr.cdf(stat)


😐 Почему так? Потому что для статистики при верной H0 мы хотим получим вероятность получения таких же или более экстремальных значений статистики.

🕺 p-value < alpha. Эта запись эквивалентна тому, что ФАКТИЧЕСКОЕ значение статистики оказалось БОЛЬШЕ (в нашем случае) КРИТИЧЕСКОГО значения статистики при верной H0.

🍺 Ставьте 🕺, если пост оказался полезным, делитесь с коллегами, друзьями, а я пойду дальше.

Поддержать канал
Please open Telegram to view this post
VIEW IN TELEGRAM
287👎4🔥4👍1🌭1
С 1 мая! Придем на работу, а там такое. Ваши действия? 🙂
Please open Telegram to view this post
VIEW IN TELEGRAM
😭159😁4👾21👍1🌭1
🆎 MDE и Uplift в A/B тестах

MDE - минимальный детектируемый эффект в A/B тестах. Тот эффект, который мы планируем задетектировать при заданном уровне мощности и ошибке первого рода.

Например, мы рассчитали критическое значение из нулевого распределения статистики (верной H0). Придумали критерий и зафиксировали alpha на уровне 0.05.

1️⃣ Что в данном случае ошибка первого рода?
Это вероятность того, что мы примем альтернативную гипотезу при условии, что нулевая верна. Поэтому заранее всегда и определяют ошибку первого рода.

2️⃣ Что такое ошибка второго рода?
Теперь представьте, что у нас есть альтернативное распределение статистики (H1). Мощность - это вероятность того, что мы отклонили нулевую гипотезу, при условии, что альтернатива верны (TP).

😙 Так вот, MDE говорит следующее. При заданном уровне мощности и ошибки первого рода найди мне МИНИМАЛЬНЫЙ ЭФФЕКТ.

Напоминаю, что формула MDE выглядит так, в предыдущем посте есть:

import numpy as np
from scipy.stats import norm

alpha = 0.05
power = 0.8
std = 20
sample_size = 10000

(norm.ppf(1 - alpha) + norm.ppf(power)) * std / np.sqrt(sample_size)


🐍 Самостоятельно можно запрогать и посмотреть следующим образом:

from scipy.stats import norm

mu_h0 = 100
std = 20
alpha = 0.05
power = 0.8

crit_value = norm(mu_h0, std).ppf(1 - alpha)
diff = np.linspace(0, 100, 10000)
powers = 1 - norm(mu_h0 + diff, std).cdf(crit_value)
mu_h1 = mu_h0 + diff
mu_actual_power = mu_h1[powers >= power].min()

print(mu_actual_power)

print(mu_h0 + (norm.ppf(1 - alpha) + norm.ppf(power)) * std)


Как мы видим: минимальное значение статистики при условии, что мощность = 0.8.

😱 А когда мы сравниваем наблюдаемый аплифт с MDE, подставляя фактические значения после теста, мы можем получить, например, мощность, которая оказалась меньше, чем при дизайне

✝️ Означает ли это то, что критерий плох?
Нет, потому что в ситуации получения статзначимых результатов нас волнует только значение p-value при верной H0 (при односторонней гипотезе).

🥂 Дополнительные материалы, которые советую почитать по этой теме:
1. Статья на Хабр. Как же мощно я провел A/B-тест, или почему не стоит сравнивать наблюдаемый аплифт с MDE.
2. Статья на Medium. Когда останавливать A/B-тест? Часть 1: MDE
3. Статья на X engineering. Power, minimal detectable effect, and bucket size estimation in A/B tests
4. Хабр. Шесть причин, почему ваши A/B-тесты не работают

Ставьте 🕺, если пост был интересным, делитесь с друзьями, пишите комментарии

🍔 Если захотите какие-то кастомные реакции, оформление текстов, велком (буст).
Поддержать канал
Please open Telegram to view this post
VIEW IN TELEGRAM
244🔥3🤔1🕊1🐳1🌭1🤪1👾1
Ну так-то да, выбирай... 🏃‍♂️
Please open Telegram to view this post
VIEW IN TELEGRAM
1713🔥6🌭2
👍 Парадоксы-парадоксы-парадоксы 👍

🚙 Парадокс — противоречие, которое возникает из-за общепринятых мнений.

👾 Предположим, у нас есть 2 категории товаров, в каждой из них средний чек растет, но общий средний чек (без разбивки) падает. С первого раза, может показаться, что такое невозможно. Оказывается, это парадокс Симпсона. Чтобы было понимание контраста, давайте рассмотрим смартфоны и карандаши. Средний чек тех, кто покупает смартфоны, вырос. Аналогично с карандашами.

🤔 Из-за чего упала общая метрика? Например, сейчас август, родители собирают детей в школу, карандаши стали покупать чаще, средний чек упал.

🍭😡 Парадокс Берксона. Два независимых события могут становиться условно зависимыми, если возникает третье событие. Например, в статье на Хабр, приводится пример с двумя переменными и следующим коллайдером: Курение сигарет, заболевание от ковида и госпитализация. Курение сигарет и заболевание от ковида никак не связаны, но из-за появления «коллайдера», мы получаем условную связь: если у пациента легкая форма COVID-19, он имеет больше шансов оказаться курильщиком!

🫣 Скрытые переменные.
Предположим, у нас есть две метрики. Количество людей по дням, кто купил мороженое и количество купленных солнцезащитных очков. Это не означает, что солнцезащитные очки покупают, потому что покупают мороженое 🍦

🔥 Скрытая переменная:
Температура. Из-за повышения температуры люди чаще покупают мороженое. Как правило, повышение температуры свидетельствует о частом появлении солнца. Тем самым, количество продаж солнцезащитных очков увеличивается.

🎂 Парадокс дней рождения.
Если вкратце, то задача трактуется следующим образом. Предположим, у нас в комнате сидит 23 человека. Какова вероятность того, что хотя бы у одной пары будет день рождения в один день? Ошибочно, мы считаем, что 23 / 365, на самом деле ~ 50%. В общем случае, это не парадокс, а то, что мы изначально думаем о другом.

А какие вы еще знаете парадоксы, с какими сталкивались? Пишите комментарии, ставьте 🕺

Поддержать канал
Please open Telegram to view this post
VIEW IN TELEGRAM
1810🔥7
Наткнулся на митап от EXPF, который я пропустил

🔄 Здесь рассматривается то, как наладить процесс A/B тестов, как вообще выглядит весь жизненный цикл.

☝️Как проверить валидность A/B тестов? Предположим, что мы наблюдаем Sample Ratio Mismatch. Можем ли мы доверять A/B после проведения?

📊 Как подобрать прокси-метрику? Если вкратце, наша метрика должна обладать двумя свойствами: Сонаправленность с таргетом и повышенная чувствительность

👍 Сбор качественных данных для A/B тестирования. Тут про Data Quality, как команда проверяет данные + даны некоторые рекомендации по сбору и обработке данных.

Ставьте 🕺 если пост оказался полезным, пишите комментарии.

Поддержать канал
Please open Telegram to view this post
VIEW IN TELEGRAM
216🔥5
Junior-Lead, based 🤝🤝
Please open Telegram to view this post
VIEW IN TELEGRAM
😁2310🐳2
🐱 Бутстрап или как оценить неопределенность в данных.

Всем привет! В этом посте затронем бутстрап, рассмотрим основные аспекты и ограничения.

😼 Этот метод позволяет построить эмпирическое распределение статистики на основе имеющейся выборки (как правило, мы работаем именно с ней).

Стандартный алгоритм выглядит следующим образом:

1️⃣ Берём выборочное распределение метрик, из которых впоследствии мы будем строить распределение статистики (среднее, n-ый квантиль и др.)
2️⃣ Выбираем количество бутстрап-итераций, т.е. сколько мы раз будем генерировать подвыборку
3️⃣ Семплируем подвыборку с возвращением ровно столько раз, сколько элементов в изначальной выборке
4️⃣ Повторяем это n раз, указанных на 2 шаге
5️⃣ Получаем распределение статистики.

🍦 Что это означает для нас?

То, что мы можем оценивать доверительные интервалы для статистик (обычно в индустрии используют разницу между двумя статистиками), использовать более сложные метрики для анализа (например, Ratio-метрики), рассчитать p-value и сделать какие-то выводы.

К ограничениям я бы отнес следующее:

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

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

📚 Полезные материалы по теме:

https://habr.com/ru/amp/publications/679842/

https://habr.com/ru/amp/publications/762648/

😇 Понравился пост? Ставьте реакции, пишите комментарии, а я напишу в дальнейшем про виды бутстрапа

UPD. Предпосылка бутстрапа:
Разница между статистикой, вычисленной по случайной выборке, и статистикой, вычисленной по генеральной совокупности, должна аппроксимироваться разницей между статистикой, вычисленной по случайной выборке, и статистикой, вычисленной по выборке с возвращением из этой случайной выборки
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥22118👍1
CUPED с несколькими ковариатами

🏆 В оригинальной статье CUPED говорится о том, что возможно использование нескольких ковариат на предэкспериментальном периоде.

Для понимания того, что здесь происходит, советую ознакомиться с предыдущим постом

🔍 Для поиска коэффициента theta в оригинальной интерпретации используется метод наименьших квадратов (МНК) для линейной регрессии со свободным коэффициентом и одним регрессором (нашей ковариатой).

Наткнулся на статью, в которой один phd показывает, что возможно использовать несколько ковариат и указывает на основные моменты. Статья называется CUPED with Multiple Covariates and A Simpler the Delta Method Calculation. Недавно узнал, что с этим работают в Booking, но статьи не нашёл)

Если здесь сидят ребята, которые занимаются продвинутыми методами A/B тестирования, скажите, вы использовали это раньше или нет? Как по мне, рабочий вариант, но ковариаты нужно подбирать таким образом, чтобы не было основной метрики в предэкспериментальном периоде, как мне кажется, поскольку возникнет мультиколлинеарность.

Пока не тестил, как это может снизить метрику, но в статье с CUPED with Multiple Covariates... есть пример с генерацией вектора theta для каждой из метрик, можно покрутить.

Если вы хотите бустануть канал, видеть истории с полезными материалами или просто кастомные реакции, делайте тык.
Please open Telegram to view this post
VIEW IN TELEGRAM
108🔥3
Brrrrr 😆
Please open Telegram to view this post
VIEW IN TELEGRAM
33😁8😱51
Propensity Score. Как оценить эффект без стандартных A/B тестов.

Доклад от 😀, в котором говорится о том, как правильно измерять эффект при условии того, что мы раскатили фичу на всех (есть ограничения на проведения A/B теста)

Здесь освещаются основные моменты, связанные с Look-a-like, diff-n-diff, IPTW, как бороться со смещениями при оценке эффекта и др.

👍 Советую к просмотру, достаточно годно.

📚 Короткая статья на Хабре от Лида промо Сбермаркета про Propensity Score Matching

🕺 Если на посте наберется N реакций, постараюсь написать более подробно про это
Please open Telegram to view this post
VIEW IN TELEGRAM
3211🔥6👍1
DROP DATABASE CASCADE 😁
Please open Telegram to view this post
VIEW IN TELEGRAM
😁2512😭3🤡1🤝1
2️⃣0️⃣0️⃣0️⃣❗️

Ура! Мы сделали это. Спасибо, что продолжаете активно следить за каналом. Всех люблю 🙏

🦌 Скажите, что бы хотели видеть на канале в дальнейшем?

Возможно разбор заданий, материалы, которые я читаю, либо что-то для вката в IT. Очень интересен ваш фидбек!
Please open Telegram to view this post
VIEW IN TELEGRAM
186🔥5
такс, поступило предложение разбирать задачи с собесов, если наберется 100 (150?) реакций, будем качать эту тему 😁

Зовите друзей! Добьем 😑
Please open Telegram to view this post
VIEW IN TELEGRAM
141🔥3224👍9
Заскуль питона (Data Science)
такс, поступило предложение разбирать задачи с собесов, если наберется 100 (150?) реакций, будем качать эту тему 😁 Зовите друзей! Добьем 😑
🍔 Набрали > 100 реакций, спасибо, значит задачам с собесов и разборам быть.

Начнем с достаточно распространенной задачи. Представьте, что у вас есть игровой автомат, он выдает значение X и равномерного распределения [0, 1]. Игрок может забрать выигрыш после первого нажатия в качестве выигрыша, либо еще раз сыграть и забрать выигрыш последней попытки. Как нужно действовать игроку? Какое матожидание данной стратегии? Вариаций у задачи много, но в классической вариации она выглядит именно так.

Пишите, в комментариях рассуждения. Разбор будет через какой-то промежуток времени, пока не решил как выкладывать.
Please open Telegram to view this post
VIEW IN TELEGRAM
9🔥63