TGViewer
Channel Public Channel
Заскуль питона (Аналитика данных)

Заскуль питона (Аналитика данных)

@zasql_python

Канал про Python, аналитику, Data Science, SQL и многое другое

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

Сайт: zasqlpython.ru
Subscribers
8.94K
Photos
236
Videos
19
Links
236

Showing posts older than #290 · Back to latest

Older Posts 19 shown
Post #288 4.58K
Дизайн 🆎 экспериментов и почему это важно.

😱 Ранее я считал, что важнее всего подводить итоги, но как оказалось не только. Дизайн эксперимента подразумевает определенную структуру, комплекс действий, направленных для корректного запуска и последующего анализа эксперимента. Подразумевается, что разметка уже готова (более подробно хочу рассказать в следующих постах).

🎄 При проектировании A/B эксперимента учитывайте сезонность, например, в Новый Год пользователи могут вести себя по-другому

💡 Нужно определиться с гипотезой. Проводя A/B тестирование, мы всегда говорим о постановке различных гипотез, как на языке бизнеса (в понятном для всех формате), так и на языке статистики, когда говорим про нулевые и альтернативные гипотезы. Важно понимать, что от гипотезы зависит многое. По сути, как мы дальше будем интерпретировать различные варианты.

🙅‍♂️ Риски. Какие могут быть риски для компании? Если что-то резонирующее, которое сразу улетит в СМИ - тест можно перезапускать, можем получить при анализе невалидные результаты. Например, если мы просто убираем точку входа или полностью меняем популярное приложение при раскатке 50/50.

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

☕ Сегменты пользователей. Хотим мы катиться на всех или нет зависит от сетапа эксперимента, возможно, нам нужно брать определенный срез пользователей (старички/новички, пользователи, обладающие каким-то признаком).

🌳 Дерево принятия решений. Если метрик несколько, мы должны определиться с различными вариантами, когда эксперимент катим, а когда нет. Если метрика серая, то..., а если нет, то. Базово должно фиксироваться до проведения эксперимента.

😁 Определение MDE / размера выборки / длительности эксперимента. Мы должны понять на истории, а действительно ли мы сможем прокрасить эксперимент? По сути, тот же MDE нужен нам для определения примерной длительности эксперимента или ответа на вопрос, а эта метрика чувствительна вообще будет на данном срезе или нет?

🥪 Другие слои. А считаем ли мы корректным проводить эксперимент, если слои забиты, а насколько забиты, все ли окей в этом плане?

📱 Если есть своя команда разработки и платформа, то с заведением пользователей (кому какой флаг навешиваем) проблем нет, а если самому, то нужно продумать. Не все могут себе позволить запускать так тесты. Если нет, то со старичками понятно, мы отдаем контроль и тест списком, с новичками сложнее, как будто нужно раз в какое-то время на дню отдавать пользователей списками с айдишниками.

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

✅ Корректное логирование эксперимента. Можно раскатить на себя, посмотреть, собрать различные события в тестовой группе, попробовать посчитать метрики (просмотр, клик по фиче X, которую мы запускаем на тестовую группу).

🚀 Запуск эксперимента

От вас жду 100
🐳 за пост. Далее пройдемся по вопросам, касаемых разметки и ТЗ для команды разработки и я продолжу писать посты из списка.
  • 🐳 87
  • ❤ 3
  • 🌚 1
Post #286
Заскуль питона (Аналитика данных) pinned «🍪🍪 Понравился формат, когда спрашиваю про то, о чем хотите видеть посты. Давайте постараемся внедрить. О чем пишем на следующей неделе? Выберу среди топа залайканных комментариев. Формат: 💻 Пост про какую-то область в ML, практические кейсы в работе аналитика…»
Post #285 4.11K
🍪🍪 Понравился формат, когда спрашиваю про то, о чем хотите видеть посты. Давайте постараемся внедрить. О чем пишем на следующей неделе? Выберу среди топа залайканных комментариев.

Формат:

💻 Пост про какую-то область в ML, практические кейсы в работе аналитика

🆎 Пост про дизайн экспериментов. Про какие-то статьи. Хочу понять, почему так считаем.

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

📝 Если вам нравится формат, могу разбирать различные интересные статьи, только дайте знать.

Можно накидать под этот пост комментариев на несколько недель вперед, возьму в соответствующий спринт 😱
  • 🔥 10
  • 🐳 4
  • ❤‍🔥 1
Post #284 3.65K
Заскуль питона (Аналитика данных) Вы набрали достаточное количество реакций, поэтому привожу 1 кейс - это когортный анализ в SQL. ☕️ Этот подход важен, когда нужно понять, что происходит с пользователями спустя какое-то время после их взаимодействия с продуктом. Например, они пользуются новой…
Да, я 🤔
  • 😁 21
  • 🔥 2
Post #283 3.92K
Заскуль питона (Аналитика данных) Где практиковать SQL? 😮 Давно не было постов вообще про SQL. Не знаю даже почему, хотя самый важный инструмент в нашей работе. Представьте, что вы прошли какие-то курсы, примерно понимаете как все решать, знаете основные концепции, но хочется потрогать задачи…
Вы набрали достаточное количество реакций, поэтому привожу 1 кейс - это когортный анализ в SQL.

☕️ Этот подход важен, когда нужно понять, что происходит с пользователями спустя какое-то время после их взаимодействия с продуктом. Например, они пользуются новой фичей или заходят в продукт через 1, 7, 14, 30 дней после регистрации? Когортный анализ помогает ответить на такие вопросы.

🍪🍪 Пример задачи

Допустим, у вас есть продукт, где пользователи регистрируются и совершают действия. Нужно определить, сколько пользователей из каждой когорты (группы, зарегистрированной в один день) возвращаются через разные промежутки времени.

🤔 Что сделаем?

1. Разделим пользователей на когорты по дате регистрации.
2. Посчитаем, сколько пользователей из каждой когорты совершили хотя бы одно действие через 0, 1, 7, 14 и 30 дней.
3. Рассчитаем удержание в процентах относительно размера когорты.


with cohort_base as (
select
u.user_id,
date(u.registration_date) as cohort_date,
datediff(e.event_date, u.registration_date) as days_since_registration
from users u
left join events e
on u.user_id = e.user_id
where e.event_date is not null
),
cohort_activity as (
select
cohort_date,
days_since_registration,
count(distinct user_id) as active_users
from cohort_base
where days_since_registration between 0 and 30
group by cohort_date, days_since_registration
),
cohort_size as (
select
date(registration_date) as cohort_date,
count(distinct user_id) as cohort_size
from users
group by cohort_date
)
select
ca.cohort_date,
ca.days_since_registration,
round(ca.active_users * 100.0 / cs.cohort_size, 2) as retention_rate
from cohort_activity ca
join cohort_size cs
on ca.cohort_date = cs.cohort_date
order by ca.cohort_date, ca.days_since_registration;


😱 Что делает этот запрос?

cohort_base - объединяем таблицу пользователей и таблицу событий, чтобы определить, на какой день с момента регистрации пользователь совершил событие.

cohort_activity - считаем количество уникальных пользователей, которые были активны через 0, 1, 7, 14 и 30 дней после регистрации, для каждой когорты.

cohort_size - определяем размер каждой когорты — количество пользователей, зарегистрировавшихся в конкретный день.

🐸 Рассчитываем удержание (retention_rate) как процент активных пользователей от общего числа зарегистрированных в когорте.

Можно выявить, как изменения в продукте (новая фича, интерфейс) влияют на удержание пользователей. Если retention сильно падает после первых дней, это сигнал, что пользователи теряют интерес или сталкиваются с трудностями.

Обратная задача рассчитать Churn Rate, нужно просто сделать 1 - Retention Rate

Если наберется 100 🐳, выложу еще пост с практическим применением SQL, есть еще что рассказать 🔥
  • 🐳 88
  • 👍 4
  • 🤓 2
Post #282 3K
Вопрос с собеседования в продуктовую команду

🍴 Всем привет! Этот пост будет сочетать в себе две темы: практические продуктовые кейсы + вопрос с собеседования. В компании вы можете столкнуться с тем, что какая-то метрика (возьмем для примера конверсию в покупку) упала (например, увидели в отчетности или посмотрели в данных), вопрос, почему такое может быть? Сформулируйте ряд гипотез, на что бы вы посмотрели в первую очередь?

Давайте попробуем разогнать в комментариях.

Следующий пост (если наберется 100 🐳) - будет решение, как бы я подступился к этой задаче

UPD: Давайте возьмем сервис размещения объявлений для примера
  • 🐳 92
Post #281 3.61K
Как доверительные интервалы помогают решать задачи бизнеса?

😏 Всем привет! В этом посте вообще опишу то, с какой ситуацией можно столкнуться, анализируя эксперименты. Представим, что мы задизайнили эксперимент, определили слои, запустили эксперимент, собрали все требования, ожидания, выбрали целевые метрики и вот мы уже подводи итоги эксперимента. Бизнесу важны по большей части деньги и пользовательский опыт. Так вот, смотрим на метрики, видим, что p-value > alpha - уровня значимости, который определили заранее (возможно даже с какими-то поправками), сразу опускаем руки, ведь эффекта не нашли (нет). Как нам ответить на вопрос бизнесу, а что дальше делать с этой информацией?

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

Мы раскатили на любой из поверхностей фичу, ожидали получить рост конверсии в оплату.


import scipy.stats as stats
import numpy as np

control_conversions = 500
control_total = 10000
test_conversions = 555
test_total = 10000

control_rate = control_conversions / control_total
test_rate = test_conversions / test_total

effect = test_rate - control_rate

se = np.sqrt((control_rate * (1 - control_rate)) / control_total +
(test_rate * (1 - test_rate)) / test_total)

z_score = effect / se
p_value = 2 * (1 - stats.norm.cdf(abs(z_score)))

ci_low, ci_high = effect - 1.96 * se, effect + 1.96 * se

print('Разница средних, %')
print(np.round(effect, 3) * 100)

print('Доверительный интервал, %')
print([np.round(ci_low, 3) * 100, np.round(ci_high, 3) * 100])

print('p-value')
print(np.round(p_value, 2))

# Разница средних, %
# 0.5
# Доверительный интервал, %
# [-0.1, 1.2]
# p-value
# 0.08


😭 Видим, что p-value низкий, можно даже прокрасить CUPED, стратификацией, но давайте посмотрим более детально. Истинное значение конверсии лежит в промежутке от -0.1% до 1.2%, но что значит для бизнеса?

Предположим, что мы сервис доставки продуктов. ARPPU составляет 1000 рублей => мы можем рассчитать эффект в деньгах, возьмем крайние границы доверительного интервала:


arppu = 1000
low_effect_arppu = ci_low * control_total * arppu
high_effect_arppu = ci_high * control_total * arppu
print([low_effect_arppu, high_effect_arppu])

# [-6955.767415148702, 116955.76741514866]

😮 Истинное значение эффекта конверсии лежит в диапазоне от -0.1% до 1.2%. Небольшое ухудшение или хорошее улучшение. Это значит, что при текущем дизайне эксперимента мы не можем с уверенностью сказать, что новая фича улучшает метрику. Однако, если перейти на бизнес-язык, мы видим следующий эффект в деньгах.

➖ Потенциальный минус: -7 000 рублей
➕ Потенциальный плюс: +116 955 рублей

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

Если наберется 150 🐳, выложу пост про подборку статей по 🆎
  • 🐳 110
  • 🔥 8
  • 👍 7
  • ❤ 2
Post #279 3.5K
  • ❤ 8
  • 🐳 3
  • 🔥 2
Post #278 4.52K
Где практиковать SQL?

😮 Давно не было постов вообще про SQL. Не знаю даже почему, хотя самый важный инструмент в нашей работе. Представьте, что вы прошли какие-то курсы, примерно понимаете как все решать, знаете основные концепции, но хочется потрогать задачи реальных компаний. Помню, когда сам проходил различные курсы (в том числе всем известный sql-ex, который форсили постоянно), не хватало какой-то практической составляющей, возможно задач с собеседований компаний.

Какие платформы я советую?

1. StrataScratch - здесь представлены задачи различных зарубежных компаний по SQL и не только. Различные вариации оконных функций, подзапросы, сложные структуры и все это заправлено под задачи с собеседований. https://www.stratascratch.com

2. LeetCode - по SQL я встречал не так много задач, но тем не менее, были интересные над которыми можно подумать. Есть нетипичные, которые не решить просто оконкой и взять актуальное значение данных, надо реально подумать. https://leetcode.com/

Понятно, что есть какие-то курсы, про которые я писал выше. Хочу отметить, что я смотрел. Есть DataCamp, кому-то нравится, кому-то нет. Для меня проблема, что большая часть практики - это просто дополнение запроса из предыдущего шага (с нуля что-то ты можешь и не писать вовсе).

У меня был пост с роадмапом, где я затрагивал SQL, поэтому если вам интересно, тыкайте сюда

🍪🍪 В скором времени я планирую выкладывать какие-то практические задачи сюда, с которыми реально может столкнуться каждый аналитик, поэтому, если наберется 100 🐳, делаем! Retention, пенетрации, воронки, критерии для A/B тестов и др.

А чем пользовались вы, когда изучали SQL?
  • 🐳 100
  • ❤ 1
Post #277 3.94K
Зачем нужен хэш с солью в A/B экспериментах?

😭 Начнем с хэширования. Когда мы запускаем тест, нужно понять, в какую группу попадет пользователь? В контрольную или тестовую? Чтобы сделать это случайным образом, но при этом всегда стабильно, используется хэширование. Берем уникальный идентификатор пользователя, например user_id, пропускаем его через хэш-функцию (чаще MD5), а результат делим по модулю. Например, если результат деления на 2 равен 0, пользователь идет в группу A, если 1, то в группу B. Это гарантирует, что один и тот же пользователь всегда будет попадать в одну и ту же группу.


import hashlib

user_id = "12345"
hash_value = int(hashlib.md5(user_id.encode()).hexdigest(), 16)
group = "A" if hash_value % 2 == 0 else "B"
print(group)


🧂 Теперь про соль. Если пользователь участвует сразу в нескольких тестах, его распределение в группы может повторяться. Например, в тесте кнопки “Купить” он будет в группе A, и в тесте фильтра товаров он тоже будет в группе A. Это создает пересечения экспериментов и искажает результаты (особенно, когда речь идет про разные слои, которые могут с собой конкурировать). Соль решает эту проблему. Это уникальная строка для каждого теста, которую мы добавляем к user_id перед хэшированием. Она изолирует тесты друг от друга, даже если пользователь участвует сразу в нескольких. То есть соль + хэш позволяет перемешать пользователей псевдорандомом, обеспечивая воспроизмодимость сплитования на платформе.


experiment_name = "new_checkout_flow"
salted_id = f"{experiment_name}_{user_id}"
hash_value = int(hashlib.md5(salted_id.encode()).hexdigest(), 16)
group = "A" if hash_value % 2 == 0 else "B"


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


print(int(hashlib.md5(f'salt2_{123}'.encode()).hexdigest(), 16)), print(int(hashlib.md5(f'salt9_{123}'.encode()).hexdigest(), 16))


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

И еще один плюс: если вы решите изменить пропорцию распределения, например, сделать 70% пользователей тестовыми, а 30% контрольными, это легко сделать с помощью хэширования. Нужно просто поменять границы.


split_percentage = 70
group = "A" if hash_value % 100 < split_percentage else "B"


Понравился пост? Если соберется 100 🐳, выложу пост про виды хэшей и чем они различаются (ну или про слои в A/B экспериментах)
  • 🐳 94
  • 👍 4
  • 🔥 2
  • ❤ 1
Post #274 4.26K
Так и в реальной жизни 💀

#мемы@zasql_python
  • 😁 33
  • 🆒 2
Post #273 4.8K
😲 Для продуктовых аналитиков нужно находиться на одной волне с продуктом, в котором они работают. Это дизайнеры, продакт-менеджеры, разработчики. Есть бесплатный «онлайн-тренажер» по продуктовому мышлению, на который я натыкался для расширения экспертизы с различными кейсами, подходами к анализу продуктов.

😎 На Хабре есть статья про различные продуктовые кейсы, где можно самому подумать + еще скормить какой-то LLM вариант ответа, тем самым иметь «эталонное решение».

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

А вообще классный вариант просто ходить на собесы, набирать опыт оттуда, обычно на них транслируют фактические проблемы, с которыми сталкиваются различные команды.

Дополнительно можно почеленджить ChatGPT с различных продуктов и попросить его валидировать результаты, предоставить лучший вариант и сложить себе куда-то для упрощенного усвоения.

Те, кто любит подкасты, советую Make Sense. Очень разносторонние кейсы + подходы, а также подкасты различных продуктовых команд.
  • ❤ 3
  • 👍 3
Post #272 5.49K
Seeing Statistic Theory

😡 Это то, с чего я начинал, когда начал копать в сторону аналитики данных и статистики в целом, так как понимание статистики и теории вероятностей давалось очень тяжело (начинал с курсов по статистике от Анатолия Карпова). Как понимание с оттачиванием практических примеров - кайф. Только нужно сразу закинуть пару примеров и решать в Python, например, без этого никак.

🤑 Сейчас я советую сразу присмотреться к курсу по статистике и теории вероятностей от ФЭН ВШЭ. Много практики, хорошо для общего понимания академической статистики и тервера. Будет тяжело, но на выходе получите помимо знаний, структуры особенный эффект после обучения.

♟ Если хотите, разберу относительной новый курс по прикладной статистике от ААА, делал анонс второй части тут
  • 👍 6
  • ❤ 2
  • 😭 1
Post #271 4.1K
Ждём сообщения от заказчиков, смежников, только так. Никаких похвал, только это. Высшая благодарность 👍

#мемы
  • 😁 24
  • 👍 1
Post #270 4.3K
🤔 Почему важно делать просто в продукте?

Представим, вы работаете в продукте, в котором есть разработчики, дизайнеры, аналитики, продакт-менеджеры, UX-исследователи и др. (весьма большой продукт с точки зрения наполняемости по выполняемым задачам). У каждого сотрудника есть своя зона ответственности. Тут приходит кому-то в голову гениальная идея о том, что нужно сделать фичу / процесс / продукт, который способен взорвать рынок (по его мнению). Понятно, что аналитик в этом плане может привести какую-то оценку на основе своих компетенций или идей в общем.

Вы идете к кому-то из списка выше, договариваетесь, считаете, но тут возникает момент истины, что любые процессы стоят денег / времены для команды. То есть команда будет тратить время на разработку чего-то нового, жертвуя тем, что можно было сделать проще. Например, добавить один виджет / сделать что-то простое и увидеть инкремент на бизнес или посмотреть на исследования других компаний, в т.ч. конкурентов. Тут можно еще затронуть базово концепцию MVP (Minimal Valuable Product), но тут, скорее, вопрос приоритезации и то, что случайно есть риск зарубить хорошие жирные гипотезы (есть же декомпозиция, все дела...)

Помню довольное старое (5 лет назад вышло) видео Ильи Красинского по поводу юнит-экономики, про стоимость гипотез я запомнил оттуда (в целом, тут про юнит-экономику, но все же, будет полезно).

Было бы классно в моменте оценить количество пропущенных классных дорогих гипотез или количество плохих дешевых гипотез, посмотреть на Confusion Matrix, так сказать, как-то свести это к эквиваленту и понять, компания делает нормальный tradeoff или все-таки нет и нужно пересмотреть решение по принятию или отвержению гипотез.

❤️ А что вы думаете по этому поводу, сталкивались ли вы с подобным? Если наберется много реакций продолжу дальше писать про продуктовые штуки.

ПОДДЕРЖАТЬ БУСТОМ
  • ❤ 14
  • 👍 2
Post #269 3.53K
🎲 Что такое predict_proba?

💻 Предположим, вы решаете задачу оттока и вам нужно понять с какой вероятностью пользователь будет оттекать из сервиса. Фактический флаг, обычно, это 1 и 0 ничего нам не скажут о том, что пользователи собирают покинуть наш сервис. Для этого вам нужны определенные вероятности отнесения к оттоку (1), далее можно с этим как-то работать, например, изучать распределения, тестировать определенные гипотезы и т.д.

predict_proba выдает на выходе вероятности отнесения к какому-либо классу. Мы решаем задачу с Propenity Score Matching, нам нужно в первой итерации (как бы сокращая размерность) для каждого объекта выборки определить вероятность отношения к тритменту (то есть определить 1 - пользователь совершил какое-то действие).

🤔 Как работает?

1. Сначала мы вычисляем линейную комбинацию векторов признаков и весов (с определенным байесом).
2. Результат подается в функцию активацию, например, классический вариант, это сигмоида (для бинарной классификации) и softmax (для многоклассовой классификации).
3. Определяем вероятности.

🐍 Пример отрабатывания вручную



from sklearn.datasets import make_classification
from sklearn.linear_model import LogisticRegression

X, y = make_classification()
lr = LogisticRegression()

lr.fit(X, y)

z = np.dot(X, lr.coef_.reshape(-1, 1)) + lr.intercept_

model_predict = lr.predict_proba(X)[:5, 1]

naive = 1 / (1 + np.exp(-z)).flatten()[:5]

print(model_predict)
print(naive)


🥰 Как видим, результаты идентичные (для вероятностей). Можно также поставить трешхолды и определить 1 или 0, чтобы замерять качество полученных моделей.

Дополнительные материалы:

1. How to Use Logistic Regression predict_proba Method in scikit-learn
2. CatBoost. Predict Proba
3. Predict_proba examples in MLflow - October 2024

❤️ Понравился пост? Поддержи бустом, пиши комментарии. Если наберется много реакций, выпущу пост про различные функционалы качества, функции ошибки в машинном обучении или про Sequential Testing 🔥
  • ❤ 22
  • 🐳 1
Post #267 3.89K
😵 Выбросы в A/B тестах. Проблема при дизайне, подведении результатов, планировании следующих экспериментов.

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

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

Объединение теста и контроля с едиными квантилем для обеих групп позволяет снизить ошибку первого рода, она даже в пределах нормы находится, но с ошибкой второго рода - беда.

Почему?

Разные группы (в одной есть тритмент, в другой нет), мы по сути перемешиваем группы и ищем квантиль обеих групп.

Что можно с этим сделать?

1. Убрать выбросы на предпериоде, топ n пользователей по целевой метрике в тесте

2. Заменить значение выбросов на максимальное значение по квантилям. Пример: пользователь принесу сервису 100 рублей, 99% квантиль - 80. Пользователя мы не убираем, заменяем значением 80. Более подробно про это могу написать, проведем симуляции, посмотрим как ведут себя распределения и др.

Материалы:

Как улучшить ваши A/B-тесты: лайфхаки аналитиков Авито.

АБ тесты и подводные камни при их автоматизации

Хорошая статья на Medium, про попытки исключения различным образом выбросов

Это одна из многих проблем, которая есть при проведении экспериментов.
  • ❤ 21
  • 🐳 10
Post #266 4.09K
Используете ли вы трекеры времени для продуктивной работы? Если да, то какие? Сколько примерно вы потратили дней / месяцев / лет, чтобы их внедрить в свою жизнь? Чувствуете ли вы импакт от этого?

🍅 У части людей, например, внедрено для работы Pomodoro. Это когда ты бьешь рабочее время на короткие интервалы для работы и отдыха. Базовый вариант - это когда одна сессия выглядит следующим образом: 25 минут работаешь, 5 отдыхаешь. Требуется больше времени, чтобы быть в фокусе, хотя можно разбить на более длительные сессии. В этой статейке 70 минут работаешь, 20 минут отдыхаешь, 40 минут еще чил. Суммарно 10.5 часов на работу, 3.3 часов на отдых. Итог ~ 14 часов на сессии.

🧠Я склоняюсь в сторону Deep Work - это когда у тебя рабочая сессия длится несколько часов. Фокусированно сидишь над задачей / задачами без отвлечения. На каком-то из часов начинаешь замечать, что делать достаточно. Главное - это подготовить рабочее место, предварительно отключив раздражители, приготовиться к сессии и плотно сидеть и работать, deep work... А еще важнее, на первых этапах, вырабатывая привычку - НЕ ВСТАВАТЬ (очевидно, по каким-то делам / встречкам это делать не получится, но сессию в календаре под это дело забить можно или стремиться к этому). Если брать 4 часа на сессию, а сессий 3, получается 12 часов на сессии.

📖 Дополнительные материальчики для чтения:

🔗LINK 🔗
🔗LINK 🔗

Если вам нравится формат таких постов, ставьте реакции, пишите комментарии
  • ❤ 23
  • 🔥 9
  • 🤣 3
Post #260 4.36K
💙 Яндекс Лавка. Что произошло за 6 месяцев?

Всем привет, хочу поделиться тем, что мы успели сделать за последние Q2-Q3 продуктовой командой. Несмотря на то, что я пришел ровно 4 месяца назад, видно, как продукт быстро растет, продуктово прорабатываются куча гипотез, а классные фичи до вас докатываются в самом лучшем виде. Здесь собраны очень сильные ребята из различных направлений, которые помогают вместе делать классный продукт

Теперь к главному:
Мы активно ищем сильных аналитиков, разработчиков, продактов, дизайнеров, чтобы расти быстрее, реализовывать самые бешеные и кайфовые идеи вместе.

Подборку вакансий прикреплю ниже, если появятся вопросы, пишите в личку @m459n9

💙 Вакансии в Лавке 💙

P.S. Следить за новостями Команды продукта Лавки теперь можно в Телеграме: @lavka_product_team. Присоединяйтесь! Давайте знакомиться ближе)
  • ❤ 9
  • 🔥 7
Older posts →
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →