Анализ экспериментов с Ratio-метриками
Проводя эксперименты, обычно, мы используем базовые методы: t-test, z-test, bootstrap (если данных не так много). Это для одних метрик, но, предположим, мы работаем с метриками-отношения (представляют из себя деление суммы случайной величины X на сумму случайной величины Y).
В этом случае в группе A и группе B у нас нет дисперсии. В самом деле, рассмотрим средний чек - метрика отношения (сумма GMV / количество заказов), CTR (сумма кликов / количество показов). Получаем некоторую метрику Za и Zb для которой мы знаем значение, но дисперсии метрики не знаем.
Отсюда выход:
а) провести бутстрап, чтобы найти распределение этой метрики и узнать распределение статистики
б) бакетировать (меньше по ресурсам, чем бутстрап).
в) применять другие методы (например, линеаризацию или дельта-метод).
г*) что-то другое...
Бутстрап
Для оценки распределения метрики можем использовать выборочные значения в группе A и группе B и найти разницу, таким образом, мы получим «разницу средних». Из минусов: MDE не рассчитать (при дизайне эксперимента), очень долгий расчет при больших выборках, ресурсов может не хватить.
Расчет для конкретной выборки, можно разницу средних потом посчитать
Бакетизация
Делим также пользователей по бакетам (с их GMV и количеством заказов), распределение метрики будет нормальным, главное, чтобы в бакетах было достаточное количество наблюдений. Мы делаем n-подвыборок (где n - это количество бакетов). Из минусов: сложность работать с маленькими выборками, зависимость от количества бакетов (тонкая настройка).
Пару слов про дельта-метод и линеаризацию.
В общем-то это об одном и том же. Мы хотим найти дисперсию метрики для того, чтобы применить классические методы (например, t-test). В дельта-методе мы корректируем дисперсию на корреляцию двух случайных величин (числителя и знаменателя). Только есть разница: дельта-метод вычисляет дисперсию на уровне выборки сразу, а линеаризация позволяет Ratio-метрику превратить в поюзерную. Результаты сонаправлены.
Дельта-метод
Линеаризация
Дополнительные материалы для ознакомления: первый, второй, третий, четвертый, пятый
Понравился пост? Давайте наберем 150 🐳🐳🐳, если хотите продолжение, пишите в комментариях, часто ли используете подобные методы?
Проводя эксперименты, обычно, мы используем базовые методы: t-test, z-test, bootstrap (если данных не так много). Это для одних метрик, но, предположим, мы работаем с метриками-отношения (представляют из себя деление суммы случайной величины X на сумму случайной величины Y).
В этом случае в группе A и группе B у нас нет дисперсии. В самом деле, рассмотрим средний чек - метрика отношения (сумма GMV / количество заказов), CTR (сумма кликов / количество показов). Получаем некоторую метрику Za и Zb для которой мы знаем значение, но дисперсии метрики не знаем.
Отсюда выход:
а) провести бутстрап, чтобы найти распределение этой метрики и узнать распределение статистики
б) бакетировать (меньше по ресурсам, чем бутстрап).
в) применять другие методы (например, линеаризацию или дельта-метод).
г*) что-то другое...
Бутстрап
Для оценки распределения метрики можем использовать выборочные значения в группе A и группе B и найти разницу, таким образом, мы получим «разницу средних». Из минусов: MDE не рассчитать (при дизайне эксперимента), очень долгий расчет при больших выборках, ресурсов может не хватить.
Расчет для конкретной выборки, можно разницу средних потом посчитать
def bootstrap_ratio(data, nominator, denominator, group_column, group_value, n_iter=10000):
group_data = data[data[group_column] == group_value]
boot_ratios = []
for _ in range(n_iter):
sample = group_data.sample(len(group_data), replace=True)
ratio = sample[nominator].sum() / sample[denominator].sum()
boot_ratios.append(ratio)
return np.array(boot_ratios)
Бакетизация
Делим также пользователей по бакетам (с их GMV и количеством заказов), распределение метрики будет нормальным, главное, чтобы в бакетах было достаточное количество наблюдений. Мы делаем n-подвыборок (где n - это количество бакетов). Из минусов: сложность работать с маленькими выборками, зависимость от количества бакетов (тонкая настройка).
def bucketize(data, nominator, denominator, n_buckets=50, random_state=42):
data = data.sample(frac=1, random_state=random_state).reset_index(drop=True)
buckets = np.array_split(data, n_buckets)
bucket_ratios = [bucket[nominator].sum() / bucket[denominator].sum() for bucket in buckets]
return bucket_ratios
Пару слов про дельта-метод и линеаризацию.
В общем-то это об одном и том же. Мы хотим найти дисперсию метрики для того, чтобы применить классические методы (например, t-test). В дельта-методе мы корректируем дисперсию на корреляцию двух случайных величин (числителя и знаменателя). Только есть разница: дельта-метод вычисляет дисперсию на уровне выборки сразу, а линеаризация позволяет Ratio-метрику превратить в поюзерную. Результаты сонаправлены.
Дельта-метод
def calculate_ratio_variance(values_numerator, values_denominator):
mean_num = np.mean(values_numerator)
mean_denom = np.mean(values_denominator)
variance_num = np.var(values_numerator, ddof=1)
variance_denom = np.var(values_denominator, ddof=1)
covariance_num_denom = np.cov(values_numerator, values_denominator)[0, 1]
ratio_variance = (
(variance_num / mean_denom ** 2)
- (2 * (mean_num / mean_denom ** 3) * covariance_num_denom)
+ ((mean_num ** 2 / mean_denom ** 4) * variance_denom)
)
return ratio_variance
Линеаризация
# ratio_control - ratio-метрика в контрольной группе (для теста также рассчитывается)
def calculate_ratio_control(numerator_control, denominator_control):
return sum(numerator_control) / sum(denominator_control)
ratio_control = calculate_ratio_control(numerator_control, denominator_control)
def linearization(numerator, denominator, ratio_control):
return numerator - ratio_control * denominator
Дополнительные материалы для ознакомления: первый, второй, третий, четвертый, пятый
Понравился пост? Давайте наберем 150 🐳🐳🐳, если хотите продолжение, пишите в комментариях, часто ли используете подобные методы?
🐳67❤5 3 2🖕1
Как считать пенетрацию пользователей в продукте на SQL?
🎮 В сервисе у нас есть чарт, характеризующий количество пользователей в сервисе (MAU / DAU / WAU), мы смотрим за определенный промежуток времени количество пользователей. Этот график интуитивно понятен, есть практически во всех продуктах и является одной из тех метрик, которую отслеживают.
Тут достаточно понятно, берем группировку по дням / неделям / месяцам, считаем уникальных пользователей в приложении и готово!
❓ Пенетрация позволяет ответить на вопрос: "Сколько всего пользователей пользуются продуктом в динамике?". В сервисе есть старички, которые регулярно продукт используют и за время мы их учитываем несколько раз (по дням). Мы можем взять весь год и посмотреть сколько всего пользователей использовали фичу X и посчитать статично, найти долю и все. Но хочется понимать как инициативы влияют на абсолютные значения / доли относительно всех пользователей продукта до момента T.
⬆️ Выше представлен скрипт, который считает накопительно пользователей по дням, теперь мы можем это применить для ответа на вопрос: "Какой процент пользователей когда-либо использовал продукт на момент времени T?". Это нам может быть нужно для отслеживания доли использования от всей аудитории накопительно. Мы можем более явно отслеживать как наша база (в тотале) реагирует по дням, когда мы используем какие-то механики, например, или запускаем новые фичи
⬆️ Выше представлен код, как мы считае долю тех, кто использовал фичу относительно всех пользователей до момента T.
🐖 Используете ли вы пенетрацию для отслеживания доли относительно всех пользователей? Был ли этот пост полезен? Ставьте 100 🐳 и я выложу еще что-нибудь по этой тематике)
Тут достаточно понятно, берем группировку по дням / неделям / месяцам, считаем уникальных пользователей в приложении и готово!
WITH daily_users AS (
SELECT
event_date,
user_id
FROM user_events
WHERE event_date BETWEEN '2024-01-01' AND '2024-01-30'
),
date_series AS (
SELECT DISTINCT event_date
FROM daily_users
),
cumulative_users AS (
SELECT
d.event_date,
COUNT(DISTINCT u.user_id) AS cumulative_unique_users
FROM date_series d
LEFT JOIN daily_users u ON u.event_date <= d.event_date
GROUP BY d.event_date
ORDER BY d.event_date
)
SELECT * FROM cumulative_users;
WITH daily_feature_users AS (
SELECT
event_date,
user_id
FROM user_events
WHERE event_name = 'feature_x'
AND event_date BETWEEN '2024-01-01' AND '2024-01-30'
),
daily_total_users AS (
SELECT
event_date,
user_id
FROM user_events
WHERE event_date BETWEEN '2024-01-01' AND '2024-01-30'
),
date_series AS (
SELECT DISTINCT event_date
FROM daily_total_users
),
cumulative_feature_users AS (
SELECT
d.event_date,
COUNT(DISTINCT u.user_id) AS cumulative_feature_users
FROM date_series d
LEFT JOIN daily_feature_users u ON u.event_date <= d.event_date
GROUP BY d.event_date
ORDER BY d.event_date
),
cumulative_total_users AS (
SELECT
d.event_date,
COUNT(DISTINCT u.user_id) AS cumulative_total_users
FROM date_series d
LEFT JOIN daily_total_users u ON u.event_date <= d.event_date
GROUP BY d.event_date
ORDER BY d.event_date
)
SELECT
cfu.event_date,
cfu.cumulative_feature_users,
ctu.cumulative_total_users,
ROUND(100.0 * cfu.cumulative_feature_users / (ctu.cumulative_total_users, 0), 2) AS penetration_rate
FROM cumulative_feature_users cfu
JOIN cumulative_total_users ctu ON cfu.event_date = ctu.event_date
ORDER BY cfu.event_date;
Please open Telegram to view this post
VIEW IN TELEGRAM
1🐳50 11 4👍3
Как стать тимлидом? [статья]
Тут описано со стороны разработки, но с какой-то погрешностью можно переложить на аналитику
У тимлида основные фокусы:
1. Delivery - чтобы все заказчики были довольны и команда закрывала проблемы в бизнесе. Различные исследования, проверка гипотез.
2. Team Development - построение эффективной команды, выстраивание определенной культуры, найм новых сотрудников. Тут может быть и помощь в решении различных вопросов взаимодействия и т.д.
3. Technical - технические скиллы у тимлида, он должен быть источником знаний, готовым помочь линейным сотрудникам.
Как стать тимлидом в компании?
Автор указывает четыре пункта:
1. Проактивность. Брать на себя больше ответственности, покрывать больше зон в бизнесе. Также это может развитие новых инструментов, генерация гипотез по росту продукта.
2. Самостоятельное решение задач. Я бы еще добавил тут то, что хороший аналитик может сам сгенерировать гипотезу, сходить ко всем, решить задачу, дать рекомендации по росту продукта. Довести задачу от гипотезы до реально работаюещго варианта на проде
3. Развитие хардов (тут для разработки). Для аналитики важны софты также. Мы очень часто работаем с бизнесовыми заказчиками, нужно проще объяснять сложные вещи. Не вдаваться в работу алгоритмов, а попытаться объяснить на простых примерах.
4. Обращать внимание на эмпатию. Умение сочувствовать, сопереживать коллегам. Тут блок про мотивацию, делегирование, что нужно чувствовать свою команду, эмоции.
Тут про заблуждения в работе тимлида.
А вы что думаете? Как считаете, сочетание этих пунктов позволят вырасти или есть еще другие составляющие? Пишите в комментариях!
Тут описано со стороны разработки, но с какой-то погрешностью можно переложить на аналитику
У тимлида основные фокусы:
1. Delivery - чтобы все заказчики были довольны и команда закрывала проблемы в бизнесе. Различные исследования, проверка гипотез.
2. Team Development - построение эффективной команды, выстраивание определенной культуры, найм новых сотрудников. Тут может быть и помощь в решении различных вопросов взаимодействия и т.д.
3. Technical - технические скиллы у тимлида, он должен быть источником знаний, готовым помочь линейным сотрудникам.
Как стать тимлидом в компании?
Автор указывает четыре пункта:
1. Проактивность. Брать на себя больше ответственности, покрывать больше зон в бизнесе. Также это может развитие новых инструментов, генерация гипотез по росту продукта.
2. Самостоятельное решение задач. Я бы еще добавил тут то, что хороший аналитик может сам сгенерировать гипотезу, сходить ко всем, решить задачу, дать рекомендации по росту продукта. Довести задачу от гипотезы до реально работаюещго варианта на проде
3. Развитие хардов (тут для разработки). Для аналитики важны софты также. Мы очень часто работаем с бизнесовыми заказчиками, нужно проще объяснять сложные вещи. Не вдаваться в работу алгоритмов, а попытаться объяснить на простых примерах.
4. Обращать внимание на эмпатию. Умение сочувствовать, сопереживать коллегам. Тут блок про мотивацию, делегирование, что нужно чувствовать свою команду, эмоции.
Тут про заблуждения в работе тимлида.
А вы что думаете? Как считаете, сочетание этих пунктов позволят вырасти или есть еще другие составляющие? Пишите в комментариях!
1 14 7❤6🗿2
Когда дашборд превращается в хаос
Когда только начинал работать аналитиком, казалось, что чем больше метрик в отчёте, тем лучше. Детализация, графики, таблички - это красиво, значит полезно. Сделать какую-то сложную логику, добавить парочку элементов, которые оказываются полезными для вас, но решения по ним вы не принимаете. Всю эту историю можно обсудить с продуктом на предмет полезности при принятии важных решений.
Но потом оказывалось, что в реальности смотрят на 3-5 ключевые метрики и пару срезов. А если дашборд перегружен ненужными деталями, он не помогает принимать решения, а мешает. В результате смежникам он может перестать быть интересен и на него могут забить.
___________________________
Частая ошибка: не уточнить контекст задачи. Получил запрос, построил отчёт, принёс и тут начинаются уточнения:
(вопросов может быть много)
1.
Не зафиксировали цель дашборда. Какую проблему позволяет решить данный дашборд?
Не проверили, а покрывает ли эту задачу существующая отчётность?
Не уточнили, какие срезы реально важны. Заказчик сам может не знать, пока не увидит готовый отчёт.
В итоге аналитик теряет время на правки (вместо каких-то исследований, решений проблем), а бизнесу приходится разбираться в ненужных метриках.
2.
1️⃣ Сначала обсуждать контекст задачи. Зачем решили делать этот отчёт именно сейчас?
2️⃣ Формулировать основные показатели заранее. Бизнесу нужна конкретика, а не “что-нибудь полезное”.
3️⃣ Закладывать время на доработки, но минимизировать их за счёт хорошего брифинга на старте. Каждую отчетность важно документировать и подсветить основным пользователям за что он отвечает и почему он выглядит именно так.
4️⃣ Понять, кто будет пользоваться дашбордом. Одним важно смотреть верхнеуровнево, другим необходима детализация
5️⃣ Спроектировать с заказчиком то, как будет выглядеть дашборд, накидать примерные чарты, блоки, которые потенцииально решают проблемы в нужных метриках.
Было у вас такое, что делали сложный отчёт, а потом оказалось, что его никто не смотрит или вы постоянно вносили в него правки? Делитесь в комментариях!
Понравился формат? Ставьте🐳 , буду рассказывать подробнее с чем сталкивался и чего бы я не хотел допускать в будущем.
Когда только начинал работать аналитиком, казалось, что чем больше метрик в отчёте, тем лучше. Детализация, графики, таблички - это красиво, значит полезно. Сделать какую-то сложную логику, добавить парочку элементов, которые оказываются полезными для вас, но решения по ним вы не принимаете. Всю эту историю можно обсудить с продуктом на предмет полезности при принятии важных решений.
Но потом оказывалось, что в реальности смотрят на 3-5 ключевые метрики и пару срезов. А если дашборд перегружен ненужными деталями, он не помогает принимать решения, а мешает. В результате смежникам он может перестать быть интересен и на него могут забить.
___________________________
Как сделать дашборд, который реально нужен бизнесу?
Частая ошибка: не уточнить контекст задачи. Получил запрос, построил отчёт, принёс и тут начинаются уточнения:
“А это для выгрузок или для ежедневного контроля?”
“Нам вообще-то важен срез по регионам, почему его нет? А по приложениям? Точкам входа в продукт?”
“А где сравнение с прошлым месяцем?”
"А нам еще важно следить за этим, сделаешь парочку графиков?
"Смежникам важно смотреть на это, а давай еще сделаем так: на одной вкладке будет общая информация, а на второй возможность для финансов грепнуть
(вопросов может быть много)
1.
Почему так произошло?
Не зафиксировали цель дашборда. Какую проблему позволяет решить данный дашборд?
Не проверили, а покрывает ли эту задачу существующая отчётность?
Не уточнили, какие срезы реально важны. Заказчик сам может не знать, пока не увидит готовый отчёт.
В итоге аналитик теряет время на правки (вместо каких-то исследований, решений проблем), а бизнесу приходится разбираться в ненужных метриках.
2.
Как избежать переделок?
Было у вас такое, что делали сложный отчёт, а потом оказалось, что его никто не смотрит или вы постоянно вносили в него правки? Делитесь в комментариях!
Понравился формат? Ставьте
Please open Telegram to view this post
VIEW IN TELEGRAM
🐳25 5 5👍2❤1🔥1
Интересно, как это работает на тех, кто поставил статус "был(а) недавно".
По мне, очень классная фича, которая сразу позволяет скоммуницировать с собеседником (как он будет в сети) и тем самым повысить вероятность прочтения сообщения. Интересно, например, использовать в рассылках по какой-то базе пользователей или в других сценариях.
Если это катилось с экспериментом, то какие бы вы предложили метрики для эксперимента? Пишите в комментариях!
Please open Telegram to view this post
VIEW IN TELEGRAM
1🔥7👍2🤝1
В мире продуктовой аналитики A/B-тесты обычно ассоциируются с улучшением продукта (или его неухудшением). Однако существует менее очевидный, но крайне полезный метод — ухудшающие A/B-тесты. Давайте разберём, что это такое, зачем их проводят и какие преимущества они дают.
________________________
Что такое ухудшающие A/B-тесты?
Ухудшающий A/B-тест — это эксперимент, в котором намеренно ухудшаются определённые характеристики продукта, чтобы оценить их влияние на ключевые метрики. Вместо того чтобы улучшать элемент и смотреть на рост показателей, мы ухудшаем его и наблюдаем за снижением. Это помогает понять, насколько сильно данный элемент влияет на пользовательский опыт и бизнес-результаты. Ухудшающие тесты планируется проводить на очень узкий срез аудитории, так как реакция пользователей может быть негативной на какое-то изменение. При дизайне (если есть какой-то единый процесс заведения A/B экспериментов, может тикет), нужно указать, что эксперимент является ухудшающим.
____________________
Оценка значимости характеристик продукта. Не всегда очевидно, какие элементы продукта критичны для пользователей. Ухудшая или удаляя их, можно выявить, насколько они важны для аудитории.
Экономия ресурсов. Прежде чем инвестировать в улучшение определённой функции, стоит понять, насколько она влияет на метрики. Если ухудшение не приводит к значимым изменениям, возможно, улучшение не принесёт ожидаемой отдачи. За внедрение фичи отвечают 4 лица: менеджер, дизайнер, аналитик и разработчик.
Приоритизация задач. Понимание влияния различных элементов помогает расставить приоритеты в разработке и фокусироваться на действительно важных улучшениях.
____________________
Компания рассматривает возможность ускорения работы своего приложения, полагая, что это улучшит пользовательский опыт и повысит ключевые метрики. Вместо того чтобы сразу инвестировать ресурсы в оптимизацию, они проводят ухудшающий A/B-тест.
Гипотеза: Замедление работы приложения негативно повлияет на метрики.
Эксперимент: Создаются несколько тестовых групп с разной степенью замедления приложения.
Результат: Если замедление приводит к ухудшению метрик, это подтверждает гипотезу о важности скорости, и компания принимает решение об инвестировании в оптимизацию. Если изменений нет, ресурсы перенаправляются на другие задачи.
____________________
Глобальный контроль подразумевает наличие постоянной контрольной группы, которая не подвергается изменениям, для сравнения с тестовыми группами. Однако такой подход не всегда позволяет выявить влияние конкретных характеристик продукта. Ухудшающие A/B-тесты дают возможность точечно оценить значимость отдельных элементов, что особенно полезно при ограниченных ресурсах и необходимости быстрой проверки гипотез.
____________________
Про пользу ухудшающих тестов в статье Авито
Метрики перформанса могут влиять и на продуктовые показатели. К такому выводу мы пришли после проведения ухудшающих тестов.
Про ухудшающие A/B тесты
🔗 link3
А вы проводили ухудшающий эксперимент? Что проверяли? Наберется 100
Please open Telegram to view this post
VIEW IN TELEGRAM
2🐳54👍9 6 3❤2🤔1
Реально на мои апельсинки 🍊 кто-то позарился? Или кто-то пытается их мне втюхать?
Как относитесь к таким пушам? Заставляют ли они вас более активно реагировать на них или вообще все равно?
Как относитесь к таким пушам? Заставляют ли они вас более активно реагировать на них или вообще все равно?
Please open Telegram to view this post
VIEW IN TELEGRAM
Пользуемся продуктом (или собираем фидбек) для генерации новых гипотез
Если ты сам не пользуешься продуктом, многое ускользает. По факту на основе данных мы отвечаем на вопрос: «Что случилось?»
Ты не замечаешь очевидных неудобств, которые мешают пользователям. Ты видишь, что на этапе оплаты большой отток. Анализируешь данные, проверяешь A/B-тесты, но не находишь явной причины. А если бы ты попробовал оплатить заказ сам, то заметил бы, что в мобильной версии кнопка “Оплатить” уходит за границы экрана.
Данные могут показывать проблему, но не её причину. Например, ты понимаешь, что время нахождения на странице сильно меньше, чем ожидается (мы считаем, что просмотр контента этой страницы улучшает бизнес-показатели). Проблема могла быть с тем, что очень много текста, непонятное содержание страницы, техническая ошибка и т.д. Хорошее правило с ошибками: «Если воспроизводится у двух и более людей, значит проблема глобальная».
Гипотезы строятся в вакууме, а не на основе реального опыта. Можно бесконечно анализировать данные, но хорошие гипотезы могут рождаются, когда ты сталкиваешься с неудобствами. Видишь, что процесс сложный, что логика неочевидная — проверяешь на адекватность, тестируешь.
В продукте для себя я вижу возможность для генерации новых гипотез, которые основаны на пользовательском пути (точечно) или для группы лиц (по результатам исследований).
[Я понимаю, что для разных аналитиков в разных продуктах по-разному. Мы можем по факту и не трогать продукт, а получать фидбек по нему на основе обращений в саппорт или качественных исследований по интересующему направлению]
Ставьте реакции❤️ , если пост понравился, пишите комментарии.
А вы тестируете продукт, который анализируете? Как часто замечаете проблемы, которые не видно в метриках?
Если ты сам не пользуешься продуктом, многое ускользает. По факту на основе данных мы отвечаем на вопрос: «Что случилось?»
Ты не замечаешь очевидных неудобств, которые мешают пользователям. Ты видишь, что на этапе оплаты большой отток. Анализируешь данные, проверяешь A/B-тесты, но не находишь явной причины. А если бы ты попробовал оплатить заказ сам, то заметил бы, что в мобильной версии кнопка “Оплатить” уходит за границы экрана.
Данные могут показывать проблему, но не её причину. Например, ты понимаешь, что время нахождения на странице сильно меньше, чем ожидается (мы считаем, что просмотр контента этой страницы улучшает бизнес-показатели). Проблема могла быть с тем, что очень много текста, непонятное содержание страницы, техническая ошибка и т.д. Хорошее правило с ошибками: «Если воспроизводится у двух и более людей, значит проблема глобальная».
Гипотезы строятся в вакууме, а не на основе реального опыта. Можно бесконечно анализировать данные, но хорошие гипотезы могут рождаются, когда ты сталкиваешься с неудобствами. Видишь, что процесс сложный, что логика неочевидная — проверяешь на адекватность, тестируешь.
В продукте для себя я вижу возможность для генерации новых гипотез, которые основаны на пользовательском пути (точечно) или для группы лиц (по результатам исследований).
[Я понимаю, что для разных аналитиков в разных продуктах по-разному. Мы можем по факту и не трогать продукт, а получать фидбек по нему на основе обращений в саппорт или качественных исследований по интересующему направлению]
Ставьте реакции
А вы тестируете продукт, который анализируете? Как часто замечаете проблемы, которые не видно в метриках?
Please open Telegram to view this post
VIEW IN TELEGRAM
❤25🔥4🐳2
Материалы для прокачки навыков в pandas для начинающих 🐼 [ч. 1]
Хотите прокачаться в pandas, но не знаете, с чего начать? Собрал полезные инструменты, шпаргалки и ресурсы, которые помогут вам разобраться во всем шаг за шагом!
Можно основные операции потыкать на этом сайте (сводные таблицы, join'ы, сортировки и др.)
Есть официальная документация с быстрым стартом (как устроены данные, как создавать чарты, сводники)
В интернете присутствует очень много шпаргалок для различных инструментов (в т. ч. по pandas), одна из которых включает в себя практически всю документацию (очень много инфы тут) - ссылочка.
У Яндекс Образования в курсе по Python: блок по pandas
Шпаргалки по pandas (если нужно освежить быстро в памяти):
1. link1
2. link2
3. в одном PDF, во втором PDF, в третьем PDF
Была ли вам интересна подборка? Какие материалы помогли вам лучше всего разобраться в pandas? Делитесь в комментариях! А если пост соберёт 100 реакций, выложу следующую подборку с практическими задачами😏
#дляначинающих@zasql_python
UPD:
https://dfedorov.spb.ru/pandas/
Хотите прокачаться в pandas, но не знаете, с чего начать? Собрал полезные инструменты, шпаргалки и ресурсы, которые помогут вам разобраться во всем шаг за шагом!
Можно основные операции потыкать на этом сайте (сводные таблицы, join'ы, сортировки и др.)
Есть официальная документация с быстрым стартом (как устроены данные, как создавать чарты, сводники)
В интернете присутствует очень много шпаргалок для различных инструментов (в т. ч. по pandas), одна из которых включает в себя практически всю документацию (очень много инфы тут) - ссылочка.
У Яндекс Образования в курсе по Python: блок по pandas
Шпаргалки по pandas (если нужно освежить быстро в памяти):
1. link1
2. link2
3. в одном PDF, во втором PDF, в третьем PDF
Была ли вам интересна подборка? Какие материалы помогли вам лучше всего разобраться в pandas? Делитесь в комментариях! А если пост соберёт 100 реакций, выложу следующую подборку с практическими задачами
#дляначинающих@zasql_python
UPD:
https://dfedorov.spb.ru/pandas/
Please open Telegram to view this post
VIEW IN TELEGRAM
Формирование пользовательской привычки: почему одни продукты входят в повседневность, а другие нет?
Недавно наткнулся на интересную концепцию из книги Hooked от Нира Эяля.
Суть в том, что привычные продукты формируются на пересечении двух факторов:
1. Частоты использования – чем чаще мы совершаем действие, тем быстрее оно закрепляется
2. Воспринимаемой ценности – насколько полезным это кажется пользователю
🔍 Google – высокая частота использования, люди ищут информацию каждый день, поэтому привычка сформирована
🚔 Amazon – покупки совершаются реже, но воспринимаемая ценность высокая, поэтому пользователи возвращаются
Что здесь важно понимать?
Некоторые действия не становятся привычными, даже если они полезны, потому что происходят слишком редко. Например, покупка страховки – это важно, но никто не делает это регулярно, поэтому нет "привычки" взаимодействовать с сервисом.
Если продукт используется нечасто, но его воспринимаемая ценность огромна (например, Airbnb), пользователи всё равно возвращаются
Не всегда можно просто "увеличить частоту" – если пользователю не нужна ежедневная покупка товаров, пытаться формировать привычку через увеличение касаний может быть бесполезно
Как это применимо к продуктам и аналитике?
Если стоит задача увеличить вовлечённость, важно понимать, в какой зоне на графике находится продукт.
🍪 Высокая частота, но низкая ценность? Сделайте так, чтобы взаимодействие приносило больше пользы
🍪 Высокая ценность, но низкая частота? Напомните пользователю о возможностях продукта через персонализацию, дополнительной коммуникации.
Нет универсального рецепта, каждая компания решает эту задачу по-своему, опираясь на специфику продукта, аудитории и данных.
😏 Понравился пост? Наберется 100 рекций, продолжу дальше обозревать концепции из книг. А какие книги по продукту или аналитике читали вы? Какие концепции показались вам полезными?
Недавно наткнулся на интересную концепцию из книги Hooked от Нира Эяля.
Суть в том, что привычные продукты формируются на пересечении двух факторов:
1. Частоты использования – чем чаще мы совершаем действие, тем быстрее оно закрепляется
2. Воспринимаемой ценности – насколько полезным это кажется пользователю
Что здесь важно понимать?
Некоторые действия не становятся привычными, даже если они полезны, потому что происходят слишком редко. Например, покупка страховки – это важно, но никто не делает это регулярно, поэтому нет "привычки" взаимодействовать с сервисом.
Если продукт используется нечасто, но его воспринимаемая ценность огромна (например, Airbnb), пользователи всё равно возвращаются
Не всегда можно просто "увеличить частоту" – если пользователю не нужна ежедневная покупка товаров, пытаться формировать привычку через увеличение касаний может быть бесполезно
Как это применимо к продуктам и аналитике?
Если стоит задача увеличить вовлечённость, важно понимать, в какой зоне на графике находится продукт.
Нет универсального рецепта, каждая компания решает эту задачу по-своему, опираясь на специфику продукта, аудитории и данных.
Please open Telegram to view this post
VIEW IN TELEGRAM
2🐳27 16👍8 8
Пока Duolingo убивают сову, они выложили свою стратегию и принципы, которые позволяет им быть лучшим образовательным продуктом в мире
1️⃣ Работа в долгосрок
Работа в долгую лучше краткосрочных побед. Они не гонятся за хайпом и трендами, а создают вечнозеленый продукт, которым люди будут пользоваться через 10-20 лет.
2️⃣ Культура экспериментов: быстрые A/B тесты вместо долгих споров
> Ключевой принцип: тестирование в реальном мире всегда лучше, чем бесконечные внутренние обсуждения.
> В любой момент запущены сотни экспериментов, потому что неудачный эксперимент тоже полезен — он проверяет гипотезы.
3️⃣ Минимизация промежутков между действиями (Clock Speed)
Чем меньше времени между принятием решения и его реализацией, тем быстрее развивается продукт.
Duolingo сокращает все простои
> Быстро тестируют и вносят изменения.
> Важнее не избегать ошибок, а сохранять темп и минимизировать паузы между итерациями.
> Сразу получают обратную связь.
> Запускают гипотезу в бой, а не держат ее годами.
Это позволяет компании двигаться быстрее конкурентов.
4️⃣ Простота в продукте и фокус на миссии
В Duolingo нет перегруженных фич. Продукт интуитивно понятен, без сложного онбординга и обучающих экранов. Сотрудники делают только то, что укрепляет основную цель: помочь людям учить язык. Любая новая фича проходит фильтр: улучшает ли она долгосрочный пользовательский опыт?
5️⃣ Радикальные идеи приветствуются — «99 Bad Ideas»
В компании есть практика «99 плохих идей» — руководители и сотрудники предлагают самые безумные концепции. Многие идеи кажутся странными на старте, но потом становятся прорывом в области.
6️⃣ Меньше говорить, больше делать
> TL;DR-культура — вместо долгих обсуждений краткое выжимка из сути проблемы и решения.
> Говорить меньше — показывать больше (на примере прототипов).
> Когда в компании нет лишнего шума, решения принимаются быстрее.
7️⃣ Высокие планка: от команды до продукта
Duolingo строит культуру превосходства. Здесь ожидают, что сотрудники будут делать лучшую работу в своей карьере. Они не боятся ошибок, но главное правило — не обвинять, а разбираться в причинах:
Жесткие стандарты качества в продукте: Всё должно быть полезным, интуитивным, восхитительным и продуманным. Если фича требует пояснений — она сделана неправильно. Никаких избыточных функций и сложностей.
Темп + ориентация на долгосрок + простой UI = <3
🐳 🐳 🐳 А вы что думаете? Пишите в комментариях, ставьте реакции!
Работа в долгую лучше краткосрочных побед. Они не гонятся за хайпом и трендами, а создают вечнозеленый продукт, которым люди будут пользоваться через 10-20 лет.
If it helps in the short-term, but hurts Duolingo in the long-term, it’s not right
> Ключевой принцип: тестирование в реальном мире всегда лучше, чем бесконечные внутренние обсуждения.
> В любой момент запущены сотни экспериментов, потому что неудачный эксперимент тоже полезен — он проверяет гипотезы.
When we disagree, we test ideas and let the metrics decide.
Чем меньше времени между принятием решения и его реализацией, тем быстрее развивается продукт.
Duolingo сокращает все простои
> Быстро тестируют и вносят изменения.
> Важнее не избегать ошибок, а сохранять темп и минимизировать паузы между итерациями.
> Сразу получают обратную связь.
> Запускают гипотезу в бой, а не держат ее годами.
Это позволяет компании двигаться быстрее конкурентов.
В Duolingo нет перегруженных фич. Продукт интуитивно понятен, без сложного онбординга и обучающих экранов. Сотрудники делают только то, что укрепляет основную цель: помочь людям учить язык. Любая новая фича проходит фильтр: улучшает ли она долгосрочный пользовательский опыт?
Learners need to get utility out of whatever we’ve built. Otherwise, we’ve made something that adds more complexity to the app and distracts learners from what they’re here to do.
Every feature we ship must be intuitive, delightful, useful, and polished.
If a feature or screen requires explanation or additional context, it’s not right.
В компании есть практика «99 плохих идей» — руководители и сотрудники предлагают самые безумные концепции. Многие идеи кажутся странными на старте, но потом становятся прорывом в области.
Some of our best features and campaigns have come from asking ridiculous, unlikely questions
> TL;DR-культура — вместо долгих обсуждений краткое выжимка из сути проблемы и решения.
> Говорить меньше — показывать больше (на примере прототипов).
> Когда в компании нет лишнего шума, решения принимаются быстрее.
Talking about ideas is rarely as effective as building them
Duolingo строит культуру превосходства. Здесь ожидают, что сотрудники будут делать лучшую работу в своей карьере. Они не боятся ошибок, но главное правило — не обвинять, а разбираться в причинах:
We don’t chase blame. We dig in and figure out what happened. This is how we continuously raise the bar—not by being perfect, but by being a little bit better each day.
Жесткие стандарты качества в продукте: Всё должно быть полезным, интуитивным, восхитительным и продуманным. Если фича требует пояснений — она сделана неправильно. Никаких избыточных функций и сложностей.
Please open Telegram to view this post
VIEW IN TELEGRAM
1❤26🐳12 3🥴2 2
Please open Telegram to view this post
VIEW IN TELEGRAM
3😍29🥰10😁8❤7🔥1😱1
Что влияет на метрику X
В нашей работе может достаточно часто возникать задача в следующей формулировке: "А что влияет на метрику X?". Метрика X может быть произвольна. В дальнейшем бизнес может сделать упор над тем, а что можно улучшить, на что стоит обратить внимание. Для решения этой задачи можно подступиться следующим способом:
🆎 Проверить это на интересующей поверхности через A/B тест. Например, мы проводим ухудшающий эксперимент на главной и хотим понять какие метрики шатаются вместе с целевой (какие в общем бывают прокси). Эксперимент может показать насколько сонаправлены различные метрики + возможно его придется долго держать, чтобы проверить необходимые гипотезы.
💻 Собрать таблицу с фичами, которые экспертно могут быть выбраны для обучения модели машинного обучения.
Что здесь можно придумать?
📊 Линейная регрессия. Все мы любим линейную регрессию за ее простую интерпретируемость, но есть существенный минус: между фичой и таргетом должна быть линейная зависимость. Коэффициенты, которые мы получаем при обучении (coef_), по сути коэффициенты при которых минимизируется функция потерь. Кроме того, важно следить за мультиколлинеарностью, чтобы важность фичей не перераспределялась между различными признаками (для этого нужно определить насколько сильно они коррелируют друг с другом). doc
🌲 Деревья решений и градиентный бустинг. Когда мы работаем с нелинейными зависимостями, линейная регрессия уже не даёт нам полной картины. В таких случаях можно использовать деревья решений и градиентный бустинг. Эти модели оценивают важность признаков по тому, насколько они помогают уменьшать неопределённость (снижать критерий ошибки, например, Gini или MSE) при разбиениях. catboost doc
Здесь можно получить встроенную важность фичей. Это показатель, сколько раз признак использовался для разбиения и насколько он помог улучшить модель. Если признаки сильно коррелируют, модель может выбрать один из них, а другой посчитать неважным.
🤨 Permutation Importance. Метод, который отвечает на вопрос: "Что будет, если убрать этот признак?". doc
Шаги:
а) Перемешиваем значения одного признака случайным образом.
б) Смотрим, как падает качество модели.
в) Если качество сильно ухудшается, то признак важен.
Может долго считаться, если данных много + если есть коррелирующие признаки, можем не учесть важность одной из фич
🙄 SHAP. Когда важно не просто узнать, какие признаки важны, но и как именно они влияют. doc
🤔 Наберется 100 реакций, напишу более подробно про SHAP. А вы применяете эти методы или какие-то другие?
В нашей работе может достаточно часто возникать задача в следующей формулировке: "А что влияет на метрику X?". Метрика X может быть произвольна. В дальнейшем бизнес может сделать упор над тем, а что можно улучшить, на что стоит обратить внимание. Для решения этой задачи можно подступиться следующим способом:
🆎 Проверить это на интересующей поверхности через A/B тест. Например, мы проводим ухудшающий эксперимент на главной и хотим понять какие метрики шатаются вместе с целевой (какие в общем бывают прокси). Эксперимент может показать насколько сонаправлены различные метрики + возможно его придется долго держать, чтобы проверить необходимые гипотезы.
Что здесь можно придумать?
from sklearn.linear_model import LinearRegression
from sklearn.datasets import make_regression
import pandas as pd
X, y = make_regression(n_samples=1000, n_features=10, noise=10, random_state=42)
feature_names = [f"feature_{i}" for i in range(X.shape[1])]
model = LinearRegression()
model.fit(X, y)
importance = pd.Series(model.coef_, index=feature_names).sort_values(ascending=False)
Здесь можно получить встроенную важность фичей. Это показатель, сколько раз признак использовался для разбиения и насколько он помог улучшить модель. Если признаки сильно коррелируют, модель может выбрать один из них, а другой посчитать неважным.
from catboost import CatBoostRegressor
model = CatBoostRegressor(iterations=200, verbose=False)
model.fit(X, y)
feature_importance = pd.Series(model.get_feature_importance(), index=feature_names)
Шаги:
а) Перемешиваем значения одного признака случайным образом.
б) Смотрим, как падает качество модели.
в) Если качество сильно ухудшается, то признак важен.
from sklearn.ensemble import RandomForestRegressor
from sklearn.inspection import permutation_importance
from sklearn.model_selection import train_test_split
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
model = RandomForestRegressor(n_estimators=100)
model.fit(X_train, y_train)
perm_importance = permutation_importance(model, X_test, y_test, scoring="r2")
importance = pd.Series(perm_importance.importances_mean, index=feature_names)
Может долго считаться, если данных много + если есть коррелирующие признаки, можем не учесть важность одной из фич
import shap
explainer = shap.TreeExplainer(model)
shap_values = explainer.shap_values(X_test)
shap.summary_plot(shap_values, X_test, feature_names=feature_names)
Линейная регрессия подходит для простых зависимостей, деревья и бустинг – для сложных, Permutation Importance – когда нужна честная оценка вклада признаков, а SHAP – для объяснения модели
Please open Telegram to view this post
VIEW IN TELEGRAM
3 49🐳19 12👍8❤4🦄3
о чем пишем на следующей неделе? пишите в комментариях
можно подумать над тем, чтобы ввести какую-то еженедельную рубрику (новости недели, задачи с собеседований и тд). Если вам такой формат зайдет, отреагируйте реакциями.
а так, любые предложения приветствуются
Please open Telegram to view this post
VIEW IN TELEGRAM
1 32❤12 7👍3😁1🥴1👀1🤝1
Типы задач продуктового аналитика
за время работы, общения с коллегами, друзьями выявил для себя основные таски, которые приходится выполнять продуктовому аналитику каждую неделю
1. создание дашбордов. Как ты видишь срез продукта, как донесешь другим людям полную картину, что происходит в бизнесе. Сделать так, чтобы это очень легко считывалось - искусство.
2. доработка / фикс / поддержка дашбордов. Если аналитик это заметил (с помощью алертинга, например, - класс), если бизнес - не особо. Возникают вопросы к доверию данных, актуализации отчетности, люди могут меньше обращаться к ней из-за наличия таких косяков.
3. работа с архитектурой данных. Здесь речь и про разработку витрин (не только для отчетности), но и для решения других задач. Сюда можно включить и разметку для пользовательского приложения (в зависимости от внердяемой фичи) и занесения метрик в абшницу и feature store для ML расчетов (вариаций куча).
4. оценка и приоритизация. Планы, приоритизация задач (в рамках скоринга задач, в каком порядке должны подступаться продуктово к решению задач), трекшн (как должен двигаться бизнес в определенном срезе), что может быть в будущем. К этому также может относиться расчет юнит-экономики, когда мы ищем определенные точки роста в бизнесе (новые идеи).
5*. прогнозирование. Тут речь про построение планов на основе различных методов прогнозирования (временные ряды), не грубая прикидка, а хороший прогноз (etna, arima, sarimax, prophet etc)
6. выгрузки / адхоки. Включает в себя разные вопросы, которые могут решаться за 1 этап (просто выгрузка из БД без каких-то фокусов). Сегменты пользователей для рассылки / коммуникации, ответ на вопрос, одна чиселка в ответе, передать инфу другим аналитикам / командам и др.
7. исследования. Здесь обычно нет какой-то структуры, может быть по-разному. Исследования, когда можно взять готовые данные и ответить на вопрос - одно. А когда нужно их комбинировать между собой, ставить перед собой задачу декомпозиции и потихоньку приходить к ответу - другое. Пример: понять, почему в бизнес-юните такая маленькая конверсия на данном этапе?
8. эксперименты. Дизайн, запуск, валидация, мониторинг, завершение. Здесь можно посчитать еще и долгосрочный эффект*, либо, если эксперимент неудачный - сделать перезапуск
9. моделирование / оптимизация. Машинное обучение, оптимизация бизнес-процессов, автоматизация (в том числе и для настройки ETL, отдельным пунктом в дашборд не выводил, так как само собой разумеющееся). Может быть и аплифт-моделирование (ближе к маркетинговой аналитике) и различные приколы с эмбеддингами (в аналитике поиска).
Что-то забыл? Делитесь в комментариях! Какую задачу вам приходится решать чаще всего?
за время работы, общения с коллегами, друзьями выявил для себя основные таски, которые приходится выполнять продуктовому аналитику каждую неделю
1. создание дашбордов. Как ты видишь срез продукта, как донесешь другим людям полную картину, что происходит в бизнесе. Сделать так, чтобы это очень легко считывалось - искусство.
2. доработка / фикс / поддержка дашбордов. Если аналитик это заметил (с помощью алертинга, например, - класс), если бизнес - не особо. Возникают вопросы к доверию данных, актуализации отчетности, люди могут меньше обращаться к ней из-за наличия таких косяков.
3. работа с архитектурой данных. Здесь речь и про разработку витрин (не только для отчетности), но и для решения других задач. Сюда можно включить и разметку для пользовательского приложения (в зависимости от внердяемой фичи) и занесения метрик в абшницу и feature store для ML расчетов (вариаций куча).
4. оценка и приоритизация. Планы, приоритизация задач (в рамках скоринга задач, в каком порядке должны подступаться продуктово к решению задач), трекшн (как должен двигаться бизнес в определенном срезе), что может быть в будущем. К этому также может относиться расчет юнит-экономики, когда мы ищем определенные точки роста в бизнесе (новые идеи).
5*. прогнозирование. Тут речь про построение планов на основе различных методов прогнозирования (временные ряды), не грубая прикидка, а хороший прогноз (etna, arima, sarimax, prophet etc)
6. выгрузки / адхоки. Включает в себя разные вопросы, которые могут решаться за 1 этап (просто выгрузка из БД без каких-то фокусов). Сегменты пользователей для рассылки / коммуникации, ответ на вопрос, одна чиселка в ответе, передать инфу другим аналитикам / командам и др.
7. исследования. Здесь обычно нет какой-то структуры, может быть по-разному. Исследования, когда можно взять готовые данные и ответить на вопрос - одно. А когда нужно их комбинировать между собой, ставить перед собой задачу декомпозиции и потихоньку приходить к ответу - другое. Пример: понять, почему в бизнес-юните такая маленькая конверсия на данном этапе?
8. эксперименты. Дизайн, запуск, валидация, мониторинг, завершение. Здесь можно посчитать еще и долгосрочный эффект*, либо, если эксперимент неудачный - сделать перезапуск
9. моделирование / оптимизация. Машинное обучение, оптимизация бизнес-процессов, автоматизация (в том числе и для настройки ETL, отдельным пунктом в дашборд не выводил, так как само собой разумеющееся). Может быть и аплифт-моделирование (ближе к маркетинговой аналитике) и различные приколы с эмбеддингами (в аналитике поиска).
Что-то забыл? Делитесь в комментариях! Какую задачу вам приходится решать чаще всего?
3❤26 8👍7 1
Bayessian vs Frequient A/B testing [презентация]
Видео на Youtube: Александр Сахнов — Почему вам не стоит использовать байесовское A/B-тестирование
Нашел вначале шикарную презентацию от X5 по сравнению байесовского и частотного подхода к применению A/B тестов, потом нашел само видео)
Есть код на Python, можно сравнить методы на данных и посмотреть, как использовать.
Опровергаются различные мифы по поводу байесовского тестирования (про Peeking Problem, большую чувствительность, множественное тестирование)
В начале идет описание частотного A/B тестирования и пайплайн проведения:
1. Фиксирование допустимых вероятностей ошибок первого и второго рода
2. Фиксирование ожидаемого результата
3. Оцениваем по истории дисперсии
4. Оцениваем необходимый размер групп
5. Проводим эксперимент
6. Собираем данные и вычисляем p-value
7. Оцениваем результат
Говорится о сложности интерпретации p-value. Вводится статистика, у которого какое-то предельное распределение. По реализации выборки мы считаем реализацию статистики и смотрим куда попала. Про это я писал у себя в посте. Бизнесу нужно принять бинарное решение (внедряем / не внедряем).
Затем описывается пайплайн байесовского A/B тестирования:
1. Определение априорных распределений (для неизвестных для нас параметров). Далее мы переходим к апостериорному распределению с помощью правдоподобий и теоремы Байеса
2. Определение размера групп. Размер групп можем взять из частотного метода
3. Проведение эксперимента
4. Собираем данные и что-то вычисляем
5. Оцениваем результат
Частотный подход: Какая вероятность получить такое или более экстремальное значение статистики при верности H0?
Байесовский подход: Какая вероятность, что среднее уменьшилось / увеличилось по совместному апостериорному распределению?
Далее оцениваются ошибки первого и второго рода в частотном и байесовском методе. Мы можем задавать априорное распределение через uninformative prior, тогда оба метода показывают одинаковые результаты в симуляциях. Использование дополнительных знаний через prior не позволило на симуляциях контролировать ошибки первого и второго рода.
В частотном A/B-тесте у всех одни и те же результаты, но в Байесе все зависит от априорных знаний. Если два аналитика зададут разные априоры, они могут получить разные выводы по одному и тому же тесту! Представьте, что в A/B платформе такое внедряется — один продакт видит значимый эффект, а другой — нет. Как принимать решения?
Байесовские методы позволяют решать различные задачи. Например, многорорукие бандиты, EM-алгоритмы и многое другое.
🐳 Наберется 100 реакций, в следующем посте буду писать про байесовское тестирование более подробно
А вы используете байесовские методы? Если да, то какие? Пишите в комментариях.
Видео на Youtube: Александр Сахнов — Почему вам не стоит использовать байесовское A/B-тестирование
Нашел вначале шикарную презентацию от X5 по сравнению байесовского и частотного подхода к применению A/B тестов, потом нашел само видео)
Есть код на Python, можно сравнить методы на данных и посмотреть, как использовать.
Опровергаются различные мифы по поводу байесовского тестирования (про Peeking Problem, большую чувствительность, множественное тестирование)
В начале идет описание частотного A/B тестирования и пайплайн проведения:
1. Фиксирование допустимых вероятностей ошибок первого и второго рода
2. Фиксирование ожидаемого результата
3. Оцениваем по истории дисперсии
4. Оцениваем необходимый размер групп
5. Проводим эксперимент
6. Собираем данные и вычисляем p-value
7. Оцениваем результат
Говорится о сложности интерпретации p-value. Вводится статистика, у которого какое-то предельное распределение. По реализации выборки мы считаем реализацию статистики и смотрим куда попала. Про это я писал у себя в посте. Бизнесу нужно принять бинарное решение (внедряем / не внедряем).
Затем описывается пайплайн байесовского A/B тестирования:
1. Определение априорных распределений (для неизвестных для нас параметров). Далее мы переходим к апостериорному распределению с помощью правдоподобий и теоремы Байеса
2. Определение размера групп. Размер групп можем взять из частотного метода
3. Проведение эксперимента
4. Собираем данные и что-то вычисляем
5. Оцениваем результат
Частотный подход: Какая вероятность получить такое или более экстремальное значение статистики при верности H0?
Байесовский подход: Какая вероятность, что среднее уменьшилось / увеличилось по совместному апостериорному распределению?
Далее оцениваются ошибки первого и второго рода в частотном и байесовском методе. Мы можем задавать априорное распределение через uninformative prior, тогда оба метода показывают одинаковые результаты в симуляциях. Использование дополнительных знаний через prior не позволило на симуляциях контролировать ошибки первого и второго рода.
В частотном A/B-тесте у всех одни и те же результаты, но в Байесе все зависит от априорных знаний. Если два аналитика зададут разные априоры, они могут получить разные выводы по одному и тому же тесту! Представьте, что в A/B платформе такое внедряется — один продакт видит значимый эффект, а другой — нет. Как принимать решения?
Байесовские методы позволяют решать различные задачи. Например, многорорукие бандиты, EM-алгоритмы и многое другое.
🐳 Наберется 100 реакций, в следующем посте буду писать про байесовское тестирование более подробно
А вы используете байесовские методы? Если да, то какие? Пишите в комментариях.
1🐳69❤25 9
Каннибализация продуктов: когда новый продукт убивает старый, а бизнес теряет деньги
💰 Запускаем новый продукт — кажется, что все идет отлично. Начинаются покупки, растет выручка. Но спустя время бизнес замечает странную вещь: общая выручка не изменилась, а иногда даже начала падать 😢
🤔 Что случилось?
Пользователи просто переключились со старого продукта на новый, но новых клиентов не пришло. Это и есть каннибализация — когда новый продукт съедает аудиторию старого, а не привлекает новую.
🤔 Почему это проблема?
1. Думаем, что новый продукт взлетает, но на самом деле он просто перетягивает пользователей🍪
2. Если пользователи переходят на более дешевый тариф или менее маржинальный продукт, бизнес теряет прибыль🥗
3. Если новый продукт не оправдал ожидания, пользователь может уйти вообще из обоих продуктов🌟
Пример:
У вас был премиум-тариф, который приносил высокий доход, а вы запустили дешевый вариант (дискаунтер). Клиенты ушли в новый продукт, выручка просела.
Как найти каннибализацию?🍪 🍪
Смотрим, как изменилось поведение пользователей после запуска нового продукта.
👩💻 SQL-запрос ниже
❓ Что значит результат?
1. Перешли, но платят меньше → Упали чеки, возможно, продукт слишком дешевый или не дает ценности. Нужно тестировать upsell, дополнительные возможности для продажи товаров / услуг, рост GMV, маржинальности😵
2. Остались на старом → Им новый продукт не нужен? Разбираемся, что именно их удерживает. Возможно, просто пользователи привыкли к другому продукту, а пересаживаться не видят смысла🪑
3. Мало новых клиентов → Новый продукт не привлекает новую аудиторию. Возможно, нужно менять маркетинг, коммуникацию с пользователями. Доносить понятные смыслы🖼
📈 Далее из этого можно составить различные чарты и другие инструменты, которые позволяют отслеживать перетоки между бизнес-юнитами, продуктами.
Бизнес думает, что новый продукт приносит деньги, но на самом деле пользователи просто перераспределяются.
😊 Наберется 100 реакций, сделаю еще пост с практическим применением SQL на реальных задачах
UPD: для оценки каннибализации честнее всего запустить 🆎
Пользователи просто переключились со старого продукта на новый, но новых клиентов не пришло. Это и есть каннибализация — когда новый продукт съедает аудиторию старого, а не привлекает новую.
1. Думаем, что новый продукт взлетает, но на самом деле он просто перетягивает пользователей
2. Если пользователи переходят на более дешевый тариф или менее маржинальный продукт, бизнес теряет прибыль
3. Если новый продукт не оправдал ожидания, пользователь может уйти вообще из обоих продуктов
Пример:
У вас был премиум-тариф, который приносил высокий доход, а вы запустили дешевый вариант (дискаунтер). Клиенты ушли в новый продукт, выручка просела.
Как найти каннибализацию?
Смотрим, как изменилось поведение пользователей после запуска нового продукта.
WITH old_product AS (
SELECT
user_id,
COUNT(order_id) AS old_orders,
SUM(revenue) AS old_revenue
FROM orders
WHERE product_id = 'old_product'
AND order_date < '2024-01-01'
GROUP BY user_id
),
new_product AS (
SELECT
user_id,
COUNT(order_id) AS new_orders,
SUM(revenue) AS new_revenue
FROM orders
WHERE product_id = 'new_product'
AND order_date >= '2024-01-01'
GROUP BY user_id
)
SELECT
o.user_id,
o.old_orders,
n.new_orders,
o.old_revenue,
n.new_revenue,
CASE
WHEN o.old_orders > 0 AND n.new_orders > 0 AND n.new_revenue < o.old_revenue
THEN 'Перешли, но платят меньше'
WHEN o.old_orders > 0 AND n.new_orders > 0 AND n.new_revenue >= o.old_revenue
THEN 'Перешли, но выручка сохранилась'
WHEN o.old_orders > 0 AND n.new_orders = 0
THEN 'Остались на старом'
WHEN o.old_orders = 0 AND n.new_orders > 0
THEN 'Новый клиент'
ELSE 'Нет активности'
END AS user_behavior
FROM old_product o
LEFT JOIN new_product n ON o.user_id = n.user_id;
1. Перешли, но платят меньше → Упали чеки, возможно, продукт слишком дешевый или не дает ценности. Нужно тестировать upsell, дополнительные возможности для продажи товаров / услуг, рост GMV, маржинальности
2. Остались на старом → Им новый продукт не нужен? Разбираемся, что именно их удерживает. Возможно, просто пользователи привыкли к другому продукту, а пересаживаться не видят смысла
3. Мало новых клиентов → Новый продукт не привлекает новую аудиторию. Возможно, нужно менять маркетинг, коммуникацию с пользователями. Доносить понятные смыслы
Бизнес думает, что новый продукт приносит деньги, но на самом деле пользователи просто перераспределяются.
UPD: для оценки каннибализации честнее всего запустить 🆎
Please open Telegram to view this post
VIEW IN TELEGRAM
[пост с линкедин]
Нашел на линкедине пост, посвященный уничтожению чемпиона в своей команде. Сталкивались ли с этим в команде? Что думаете? Пишите в комментариях
Нашел на линкедине пост, посвященный уничтожению чемпиона в своей команде. Сталкивались ли с этим в команде? Что думаете? Пишите в комментариях
Заскуль питона (Data Science)
Материалы для прокачки навыков в pandas для начинающих 🐼 [ч. 1] Хотите прокачаться в pandas, но не знаете, с чего начать? Собрал полезные инструменты, шпаргалки и ресурсы, которые помогут вам разобраться во всем шаг за шагом! Можно основные операции потыкать…
Материалы для прокачки навыков в Polars для начинающих
Написал я пост про Pandas, теперь напишу про Polars, чтобы было логическое продолжение
🐼 Если вы работаете с большими данными и устали ждать, пока Pandas обработает ваш запрос, стоит попробовать Polars.
Это быстрый, многопоточный, ленивый (в хорошем смысле) и оптимизированный инструмент для работы с таблицами. Используется дата-инженерами и аналитики.
❓ С чего начать?
1. Официальная документация – базовые концепции и API docs.pola.rs
2. Подробный гайд по Polars с примерами – разбор синтаксиса и возможностей Polars Book (GitHub)
3. Работа со строками в Polars – как делать обработку текстов, разбирать email-адреса, чистить данные и т.д. Статья на Towards Data Science
4. Шпаргалка в Jupyter Notebook – можно сразу потыкать основные команды Cheat Sheet
5. Шпаргалка в PDF (с визуализацией для лучшего усвоения) - PDF Cheat Sheet
Но стоит отметить, что в индустрии чаще всего используют для работы с большими даннными PySpark. Настройка приложений, различные запросы, ML-методы с PySpark и т. д.
❤️🔥 Наберем 100 реакций, выложу такую же подборку по PySpark
Используете ли вы Polars? Пишите в комментариях
#дляначинающих@zasql_python
Написал я пост про Pandas, теперь напишу про Polars, чтобы было логическое продолжение
Это быстрый, многопоточный, ленивый (в хорошем смысле) и оптимизированный инструмент для работы с таблицами. Используется дата-инженерами и аналитики.
1. Официальная документация – базовые концепции и API docs.pola.rs
2. Подробный гайд по Polars с примерами – разбор синтаксиса и возможностей Polars Book (GitHub)
3. Работа со строками в Polars – как делать обработку текстов, разбирать email-адреса, чистить данные и т.д. Статья на Towards Data Science
4. Шпаргалка в Jupyter Notebook – можно сразу потыкать основные команды Cheat Sheet
5. Шпаргалка в PDF (с визуализацией для лучшего усвоения) - PDF Cheat Sheet
Но стоит отметить, что в индустрии чаще всего используют для работы с большими даннными PySpark. Настройка приложений, различные запросы, ML-методы с PySpark и т. д.
Используете ли вы Polars? Пишите в комментариях
#дляначинающих@zasql_python
Please open Telegram to view this post
VIEW IN TELEGRAM
❤98 16🐳13❤🔥7 6