JuniorData Analyst > Метрики и эксперименты > A/B-тесты
Короткий ответ Конверсия считается как отношение числа пользователей с целевым событием к общему числу пользователей в группе; lift — это относительная разница конверсий тестовой группы относительно контрольной. Как это работает подробнее сначала агрегируем число уникальных пользователей и число сконвертировавшихся по каждой группе, затем делим одно на другое и сравниваем результат между группами. Пример кода Что использовать на практике важно считать конверсию на уровне пользователя (DISTINCT user_id), а не на уровне событий, иначе активные пользователи с повторными действиями искажают метрику. Ожидаемый результат: строки A и B с cr_A и cr_B; lift = (cr_B - cr_A) / cr_A. Проверка: users в сумме по группам должен совпадать с общим числом назначений в таблице ab_assignments. Подводные камни забывают учитывать пользователей, которые попали в группу, но не совершили ни одного события вообще (их нет в таблице событий) — тогда знаменатель конверсии считается неверно.
ab-testclickhouse
JuniorData Analyst > SQL и данные > Продуктовые и бизнес-метрики
Короткий ответ Нужно посчитать число уникальных user_id среди событий, попадающих в выбранный календарный месяц. Как это работает подробнее фильтруем события по диапазону дат месяца и считаем COUNT(DISTINCT user_id); важно использовать правильные границы интервала, чтобы не захватить первый день следующего месяца или потерять последний день текущего. Пример кода Что использовать на практике Практика. для сравнения MAU между месяцами разной длины (28-31 день) иногда дополнительно нормируют на число дней или используют DAU/MAU как более устойчивую метрику; также стоит явно зафиксировать таймзону, если пользователи распределены по разным часовым поясам. Подводные камни Частые ошибки. используют event_date BETWEEN '2024-03-01' AND '2024-03-31' без учёта типа данных (если это timestamp, то такой BETWEEN отсечёт события после полуночи 31 марта) — безопаснее использовать полуоткрытый интервал >= месяц AND ; забывают DISTINCT и считают число событий вместо числа пользователей.
active-usersmau
SeniorData Analyst > SQL и данные > Аналитическое мышление
Короткий ответ Использую квазиэкспериментальный метод, например difference-in-differences, сравнивая изменение метрики у затронутых клиентов с изменением у похожей контрольной группы (например, из региона/сегмента, где изменение не применялось или применилось позже), явно проверяя допущение параллельных трендов. Как это работает подробнее diff-in-diff сравнивает не абсолютный уровень метрики после изменения, а разницу в изменении метрики между «обработанной» и контрольной группами до и после события, что позволяет вычесть общие для обеих групп тренды (сезонность, макроэффекты) и приблизиться к причинной оценке при отсутствии рандомизации. Пример кода Что использовать на практике На практике: ищу валидную контрольную группу — похожую по характеристикам и по динамике метрики до изменения (проверяю допущение параллельных трендов на историческом периоде); если такой группы нет, рассматриваю альтернативы (synthetic control, regression discontinuity, если изменение вводилось по порогу). Явно документирую все допуще
analytical-thinkingcausal-inference
MiddleData Analyst > SQL и данные > Аналитическое мышление
Короткий ответ Группирую пользователей в когорты по месяцу регистрации, считаю долю каждой когорты, оставшейся активной на 1-й, 2-й, 3-й... месяц после регистрации, и сравниваю кривые retention между когортами, чтобы увидеть, ухудшается ли удержание со временем. Как это работает подробнее когортный анализ разделяет «эффект времени с момента регистрации» (естественное снижение активности) и «эффект календарного периода» (изменение продукта/привлечения), что невозможно увидеть в агрегированном по всем пользователям retention. Пример кода Что использовать на практике На практике: для каждого пользователя фиксирую месяц регистрации (cohort_month) и для каждого последующего календарного месяца проверяю, было ли активное событие; свожу в таблицу cohort_month × month_number с долей активных. Сравниваю кривые разных когорт: если retention у новых когорт хуже, чем у старых на том же шаге — это сигнал о проблеме в продукте/привлечении за последнее время, а не об общем «естественном» оттоке. Проверка: разделить active_u
analytical-thinkingcohort-analysis
JuniorDevOps Engineer > Контейнеры и доставка > Файловые системы Linux
Короткий ответ /etc хранит конфигурацию, /var — изменяемые во время работы данные (логи, кэш, очереди), /usr — программы и библиотеки, /tmp — временные файлы, /home — данные пользователей; разделение упрощает резервное копирование и вынос на отдельные разделы. Как это работает подробнее Иерархия задаётся стандартом FHS (Filesystem Hierarchy Standard), благодаря чему любой администратор и программа предсказуемо находят файлы независимо от дистрибутива. Пример кода Что использовать на практике Практика. /var и /tmp часто выносят на отдельные разделы или точки монтирования, чтобы разрастание логов или временных файлов не заполнило корень диска и не уронило систему; /etc удобно держать под системой контроля версий. Подводные камни Риск. Частая ошибка — складывать логи и данные приложений прямо в корень или /usr/local без отдельного раздела: при переполнении диска падает вся система, включая службы, нужные для загрузки и восстановления.
fhsfilesystems
JuniorSMM Manager > Общее > SMM-аналитика и метрики
Короткий ответ Охват — это количество уникальных пользователей, которые хотя бы раз увидели публикацию, а показы — суммарное количество раз, когда публикация была показана, включая повторные показы одному и тому же человеку. Как это работает подробнее платформа считает уникальных пользователей (reach) отдельно от общего числа отображений ленты (impressions); один человек может увидеть пост несколько раз, что увеличивает impressions, но не увеличивает reach. Пост набрал reach = 10 000, impressions = 25 000. Значит, в среднем каждый уникальный пользователь увидел пост около 2,5 раз (impressions/reach = frequency). Проверка: если в следующем отчётном периоде reach не растёт, а impressions растут — это рост частоты показов тем же людям, а не охват новой аудитории. Что использовать на практике Практический подход. если impressions значительно выше reach, это говорит о высокой частоте повторных показов (см. метрику frequency); для оценки «сколько людей узнали о посте» смотрят на reach, а для оценки «насколько часто
impressionsmetrics
JuniorData Analyst > Метрики и эксперименты > A/B-тесты
Короткий ответ p-value — это вероятность получить наблюдаемую (или более выраженную) разницу между группами при условии, что на самом деле никакого эффекта нет (верна нулевая гипотеза). Маленькое p-value говорит, что такая разница случайно при отсутствии эффекта маловероятна. Как это работает подробнее p-value считается относительно нулевой гипотезы «различий нет» и конкретного статистического теста (например, z-теста для долей); это не вероятность того, что гипотеза верна, и не вероятность того, что эффект есть. Пример: тест показал конверсию 5.0% в A и 5.4% в B, p-value = 0.02 при alpha = 0.05. Корректная формулировка: «если бы истинного эффекта не было, такая или более сильная разница наблюдалась бы с вероятностью 2%». Это не означает автоматически, что стоит раскатывать B — нужно смотреть ещё и на размер эффекта. Что использовать на практике p-value сравнивают с заранее выбранным уровнем значимости alpha (обычно 0.05); если p-value меньше alpha, результат называют статистически значимым на этом уровне. По
nulevaya-gipotezap-value
JuniorSMM Manager > Общее > Рекламные платформы и медиазакупка
Короткий ответ Таргетированная реклама показывается по характеристикам аудитории (интересы, демография, поведение) внутри площадки, а контекстная — по поисковым запросам и контексту страниц; в Яндекс Директе есть и то, и другое (поиск и РСЯ), поэтому разделение не абсолютно. Как это работает подробнее таргетированная реклама использует данные профиля пользователя и его поведение в соцсети для подбора аудитории до того, как он выразил явный интерес; контекстная реагирует на явный сигнал (поисковый запрос) или тематику сайта. Что использовать на практике Подход. таргетированную рекламу хорошо использовать для формирования спроса и охвата, контекстную — для захвата уже сформированного спроса; в Директе РСЯ по факту работает похоже на таргетинг по интересам. Пример. Бренд одежды запускает VK Реклама на аудиторию интересов «мода» (охват/осведомлённость) и параллельно Яндекс Директ на поиск по запросу «купить куртку [бренд]» (захват спроса). Результат проверяется раздельно: для VK — охват и CTR, для Директа — конве
audience-targetingcampaign-optimization
JuniorDevOps Engineer > Контейнеры и доставка > CI/CD и управление релизами
Короткий ответ CI — автоматическая сборка и тестирование кода при каждом изменении; Continuous Delivery — пайплайн доводит изменение до состояния «готово к выкладке», но выпуск в прод подтверждает человек; Continuous Deployment — выпуск в прод происходит автоматически без ручного шага. Как это работает подробнее при CI каждый коммит или pull request запускает сборку и тесты, чтобы быстро находить поломки. Continuous Delivery добавляет к этому автоматическую подготовку релизного артефакта и деплой на staging, но перед продакшеном стоит ручной approve. Continuous Deployment убирает этот ручной шаг — если все автоматические проверки прошли, изменение само попадает к пользователям. Пример кода Что использовать на практике На практике. многие команды, особенно в регулируемых отраслях (банки, медицина) или с высокой ценой ошибки, останавливаются на Continuous Delivery — им важен контроль момента релиза (например, не выкатывать в пятницу вечером). SaaS-продукты с хорошим покрытием тестами чаще выбирают полный Contin
cicd-and-release-managementcontinuous-delivery
JuniorPython Developer > Основы Python > Docker и контейнеры
Короткий ответ Docker-образ — неизменяемый «шаблон» с файловой системой и метаданными приложения, а контейнер — запущенный экземпляр этого образа с собственным изолированным процессом; это похоже на отношение класса и объекта — образ — класс, контейнер — конкретный объект. Как это работает подробнее образ состоит из read-only слоёв, объединённых union-filesystem; при docker run Docker добавляет сверху записываемый слой и создаёт изолированный процесс с собственными namespace и cgroups. Пример кода Что использовать на практике Рекомендация. из одного образа можно запустить сколько угодно независимых контейнеров; изменения внутри контейнера не влияют на образ и теряются при удалении контейнера, если не вынесены в volume. Образ хранится в registry, контейнер — эфемерная рантайм-единица. Подводные камни Риск. хранить важные данные только в писаемом слое контейнера — при пересоздании они пропадают; путать docker build (создание образа) и docker run (создание и запуск контейнера).
containerizationcontainers