Продуктовый взгляд | Аналитика данных – Telegram
Продуктовый взгляд | Аналитика данных
2.04K subscribers
29 photos
1 video
5 files
34 links
Этот канал посвящён аналитике данных, продуктовой аналитике и стажировкам.
Download Telegram
МЛ секция в Яндекс (2025)

Только на той недели мой ученик успешно прошел мл секцию в Яндекс, делюсь с вами вопросами, товарищи. Да его и ответами тоже)
Еще больше инсайдов будет на курсе Старт МЛ и на курсе Хард МЛ. Всех жду, товарищи!

1. Что такое Bias Variance Decomposition. Интервьюер акцентировал внимание на математике, отсюда вытек следующий вопрос.
2. Расписать математически, что такое разброс.
3. Что такое Бэггинг? В чем смысл данной композиции и почему она хорошо работает. (Я написал, что смещение примерно остается то же, а вот дисперсия (разброс) падает. Общий вид predict в дереве для регрессии и классификации.
4. Какие Impurity знаешь? Как высчитывается разделяющее правило?
5. Какие знаешь методы борьбы с переобучением при обучении нейронных сетей? Как дропают отличается в train mode и eval mode.
6. Устная задача - как бы ты решал задачу сетками технически, если тебе нужно было бы по картинкам определить токсичность изображения? (Ну типо взять хороший Бэкбоун, приделать свою голову с out_features=2 и дообучить). На каком слое получаются эмбеддинги картинки?
7. Базовые метрики, как считаются,в чем физический смысл. Написать их формульно.

BVD = ШУМ + Разброс + Смещение

Разброс = E_x E_X(model(X)(x) - E_X(model)(x))^2

БЭГГИНГ - композиция

X_1, X_2, ..., X_n - бутср выборок

model_1(X_1), model_2(X_2), ....

a(x) = 1/n sum (model_i(x))

bias(a) ~ bias(b_i)

variance(a) -> variance(b_i) / N + (n*(n-1)) / n^2 * sum * cov()


H(R_m) ->_split |L|/|TOTAL| * H(L) + |R|/|TOTAL| * H(R) -> min

H(R) = sum_i_k (p_k * (1 - p_k))

1) Аугментации
2) DropOut

train_mode: p
eval_mode: 1/p

precision = (TP) / (TP + FP)
recall = (TP) / (TP + FN)

roc_auc = (y_i, p_i) -> sort p_i по убыванию

thr > p_i -> 0 0 | 1
thr <= p_i -> 1 1 | 1

TPR=recall FPR=(FP)/(FP + FN)


@ProdAnalysis
🔥84👍1
Авито стажировка (Аналитика).pdf
1 MB
Стажировка в Авито (Аналитика)

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

@ProdAnalysis
🔥23
Аналитика_Авитo.pdf
1.3 MB
Стажировка в Авито (Аналитика)

Прикрепляю тестовое задание, давайте 500 шэров (поделиться с другом) и делаем разбор. Дедлайн до 6 апреля.

@ProdAnalysis
🔥17❤‍🔥9
Благодаря этой задаче нашему подписчику дали оффер в авито на продакта 200к+!!!😎

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

Условие:
Вам дана выше схема канализации "поломанного" города, на каждой точке находятся заслоны труб и они с вероятностью p закрыты и не пропускают сточные воды, а с вероятностью q - открыты и пропускают (в случае развилки вода потечёт по обоим путям). Вам требуется посчитать с какой вероятностью сточные воды попадут в реку, а также посчитайте вероятность, что заслон Г был закрыт, если вода попала в реку.

Подсказка: Воспользуйтесь формулой полной вероятности

Решение:
Обозначим событие, что сточная вода попадет в реку - x. Распишем P(x) по формуле полной вероятности.

P(x) = P(x | Г) * P(Г) + P(x | not(Г)) * P(not(Г)), тогда остаётся выразить условные вероятнсти, для этого удобно будет воспользоваться формулой включения исключения:

P(x | Г) = P(not(AБ) ⋃ not(ВД)) = P(not(АБ)) + P(not(ВД)) - P(not(АБВД)) = 2q^2 - q^4

P(x | not(Г)) = 1 - P(not(x) | not(Г)) = 1 - P(АБ ⋃ ВД) = 1 - P(АБ) - P(ВД) + P(АБВД) = 1 - 2p^2 + p^4

Далее просто подставляем считаем P(x).

Далее по формуле Байеса, посчитаем вероятность, что заслон Г был закрыт, при условии воды в реке.

P(Г | х) = P(х | Г) * P(Г) / P(x) - здесь остаётся просто подставить посчитанные значения.


@ProdAnalysis
👍9🔥42🤣1
Оконные функции в SQL — твой секретный инструмент для прохождений собеседований!

📌Формальное определение:
Оконные функции — мощный инструмент языка SQL, позволяющий проводить сложные вычисления по группам строк, которые связаны с текущей строкой.

🧐Углубимся в теорию


Классификация оконных функций:
1. Агрегирующие (sum, avg, min, max, count)
2. Ранжирующие (row_number, rank, dense_rank)
3. Смещения (lag, lead, first_value, last_value); функции смещения используются с указанием поля.

Ранжирующие функции:
row_number() – нумеруем каждую строку окна последовательно с шагом 1.
rank() – ранжируем каждую строку окна с разрывом в нумерации при равенстве значений.
dense_rank() – ранжируем каждую строку окна без разрывов в нумерации при равенстве значений.

Функции смещения:
lag(attr, offset (сдвиг), default_value(дефолтное значение в случае, если наша строка окажется первой)) – предыдущее значение со сдвигом.
lead(attr, offset, default_value) – следующее значение со сдвигом.
first_value(attr) – первое значение в окне с первой по текущую строку.
last_value(attr) – последнее значение в окне с первой по текущую строку.

💡Оконные функции нашли свое применение во многих компаниях. В LinkedIn оконные функции используют для расчета «силы» профиля (ранжирование пользователей по активности). А в Uber с их помощью анализируют динамику цен в режиме реального времени.

Ключевые компоненты:
1. OVER() — задает «окно»

-- Средняя зарплата ВО ВСЕЙ таблице (окно = все строки)
SELECT name, salary, AVG(salary) OVER() AS avg_salaryFROM employees;


2. PARTITION BY — разбивает на группы
-- Средняя зарплата ПО ОТДЕЛАМ (окно = строки отдела)
SELECT     name,
    department,
    salary,
    AVG(salary) OVER(PARTITION BY department) AS dept_avg
FROM employees;


3. ORDER BY — сортировка внутри окна
-- Накопительная сумма зарплат по дате приема
SELECT     name,
    hire_date,
    salary,
    SUM(salary) OVER(ORDER BY hire_date) AS running_total
FROM employees;


💻 Задача для практики:

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

Решение:
SELECT name, department, salary
FROM (    SELECT
        name,
        department,
        salary,
        AVG(salary) OVER(PARTITION BY department) AS dept_avg
    FROM employees
) t
WHERE salary > dept_avg;


#SQL #ОконныеФункции

@ProdAnalysis
👍124🤮1
Фреймворки для приоритезации фичей.

Проблема

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

💡 Решение

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

Фреймворки быстрых приоритизаций:

📌 Reach / Frequency

Для оценки требуется заполнить следующую матрицу фичами:
строки(Frequency): частота использования функционала, 4 деления (редко, иногда, часто, постоянно)
столбцы(Reach): охват пользователей, 4 деления (мало, некоторые, большинство, все)
Каждая фича получит количество баллов равное сумме координат ячейки, куда она попала (например если элемент попал в (часто, все) то его значение будет 3 + 4 = 7). Далее отсортируем все метрики по их значению и выберем наилучшие.

📌 Opportunity scoring (Оценка возможностей)

Как проходит оценка: предоставим клиентам все фичи и попросим выписать этот список два раза, первый нужно отсортировать по важности внедрения, второй - по удовлетворенности нынешним решением. Затем мы составим график по оси x будет важность, по оси y - удовлетворённость. Получившийся график поможет дать представление о востребованности каждой из фич.

Фреймворки нагруженных приоритизаций:

📌 WSJF(Weighted Shortest Job First) - метод приоритизации фичей/задач в рамках agile подхода, он чувствителен ко времени выполнения фичи и к ценности для бизнеса. Этот метод может выявить фичи, которые дадут импакт в ближайшей перспективе
WSJF = Cost of Delay / job size

Cost of Delay = Ценность для бизнеса + срочность задачи + снижение рисков или возможности
job size - оценка объёмов предстоящих работ.

📌 RICE

Считаем значение метрики RICE и ранжируем по ней, выбираем лучших.
RICE = (Reach * Impact * Confidence) / Effort

Reach - оценка охвата пользователей, которые столкнулись с этой фичей
Impact - оценка полезности данной фичи для пользователей
Confidence - уверенность в своей оценки reach и impact
Effort - сложность реализации.

Все эти оценки можно оценивать от 1 до 10, но также можно и масштабировать тот или иной параметр по вашему усмотрению.

📌 Иерархия метрик

Здесь просто строится иерархия метрик, начиная от главной метрики, затем требуется найти метрику, на которую непосредственно повлияет фича и оценивается влияние этой на главную метрику.

@ProdAnalysis
Please open Telegram to view this post
VIEW IN TELEGRAM
3👍3🔥2🤮2😁1
Вопрос с собеседования:

- Как вы будете работать с недостающими данными или аномалиями в наборе данных?

💡 Ответ:
Работа с недостающими и аномальными данными включают себя множество способов, некоторые из них приведу ниже:

Обработка недостающих данных:

- Удаление: в некоторых случаях можно удалить строки или столбцы с пропущенными значениями, особенно если их мало и они не влияют на общую картину.
- Замена: можно заменить пропущенные значения средним, медианой, модой или другими статистическими величинами
- Вменение: использовать методы вменения, такие как K-ближайших соседей или множественное вменение.


Обработка аномальных данных:

- Выявление аномалий: использовать методы статистического анализа, такие как Z-оценка или IQR , для выявления выбросов.
- Удаление или корректировка: аномальные данные могут искажать результаты анализа, поэтому их можно удалить или скорректировать.
- Исследование: в некоторых случаях аномальные данные могут указывать на ошибки в данных.


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

@ProdAnalysis
Please open Telegram to view this post
VIEW IN TELEGRAM
👍116😁2🤮2💩2
Методы обнаружения выбросов (Часть 1)

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

📌 Z-оценка

Метод Z-Score определяет выбросы, измеряя отклонение точки данных от среднего значения в единицах стандартного отклонения. Если Z-Score
(Z = (x - mean) / sd, где x - точка данных, mean - среднее значение, sd - стандартное отклонение)

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

📌 Interquartile Range (IQR)

Посчитаем разницу между первым и третьим квантилем (то есть возьмём средние 50% данных и разницу между максимальным и минимальным) - это значение называется IQR, а теперь рассчитаем нижнюю и верхнюю границы
(Q1 - 1.5 * IQR, Q3 + 1.5 * IQR)

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

📌 Критерий Граббса

Важно, что этот критерий требует нормальность, поэтому предварительно нужно проверить (например с помощью Шапиро-Уилка), также этот критерий предназначен для обнаружения одного выброса. Затем считаем статистику Граббса:
G = max(|x_i - X_mean|) / sd
X_mean - среднее значение, sd - среднее отклонение

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

@ProdAnalysis
Please open Telegram to view this post
VIEW IN TELEGRAM
7🤯4🤮3💩3👍2😁2🔥1
Яндекс_ml.pdf
106.3 KB
🎁 Публикуем разбор отборочного контекста на стажировку в яндекс по ML. Успейте пройти, у вас уже есть готовые решения, остаётся дело за малым!

Ещё больше разборов и полезных материалов на канале:
@ProdAnalysis
Please open Telegram to view this post
VIEW IN TELEGRAM
11💊4🔥3😁3
Руководство по A/B-тестированию: от основ до продвинутых техник

A/B-тестирование — ваш научный компас в мире продуктовых решений. Вот как сделать его по-настоящему эффективным:

📊 1. Типы метрик: что и зачем измеряем

Целевые метрики (Primary Metrics) - прямо отвечают на вопрос гипотезы
Примеры: конверсия в покупку, LTV, retention на 7-й день
Вспомогательные метрики (Guardrail Metrics) - контроль "побочек" эксперимента
Примеры:
- Технические: время загрузки, частота ошибок
- Бизнесовые: средний чек, возвраты
❗️ Если вспомогательная метрика ухудшилась на >2% — стоп-сигнал для анализа!

🔄 2. Продолжительность теста: наука против практики

Идеальный срок: 2 недели — охватывает (10 будних дней, 4 выходных), избегает аномалий (праздники/каникулы)

Почему не "чем дольше, тем лучше"?
Эффект новизны: Пользователи могут временно реагировать на изменения
Внешние факторы: Чем дольше тест, тем выше риск влияния незапланированных событий
❗️ Для fast-moving markets (например, финтех) допустимы 3-5-дневные тесты, но только для высокотрафичных продуктов, с поправкой на день недели.

🎛 3. Рандомизация: как избежать смещений?

Методы разделения трафика:
1. User-ID хеширование (надежнее всего)
2. Device-based (для мобильных приложений)
3. Geo-split (если тестируете региональные особенности)

📈 4. Продвинутый анализ и многоуровневая проверка:

1. Первичный анализ (p-value < 0.05)
2. Сегментный разрез (например по платформам (iOS/Android), впоследствии можно применять результаты лишь для удачных сегментов)
3. CUPED-коррекция (учет исторических данных для уменьшения дисперсии)

🗑 5. Когда прерывать тест? Red flags

1. Серьезное ухудшение guardrail-метрик
2. Технические сбои
3. Внешние события
Новостные тренды, сбои платежных систем
❗️ Проводите retrospective после каждого теста

"Если вы не тестируете — вы гадаете. Данные — это новый oil, а A/B-тесты — ваш нефтеперерабатывающий завод."
— Эксперт по продуктам из FAANG

🎓 Также хотим напомнить, что у поступашек открыта запись на курс по А/Б тестированию! Не упускайте возможность набраться опыта в тестировании и пишите администратору

@ProdAnalysis
Please open Telegram to view this post
VIEW IN TELEGRAM
10😁3🙈2👍1
Визуализация данных: как превратить цифры в истории.

Данные — это новая нефть. Но без правильной визуализации они остаются просто цифрами в таблице. Давайте разберём, как делать графики, которые не просто красивые, но и действительно полезные.

Пять принципов эффективной визуализации

1. Выбирайте правильный тип графика
- Тренды
→ Линейный график (matplotlib, plotly)
- Сравнение → Столбчатая диаграмма (seaborn)
- Доли → Круговая или кольцевая диаграмма (но только если сегментов <5!)
- Распределение → Гистограмма или boxplot

2. Убивайте "мусор"
Уберите лишние линии, 背景色 и анимации, если они не несут смысла.
Используйте минималистичные темы

3. Цвет — ваш союзник (или враг)
Для категорий
: Пастельные тона (например, #66c2a5, #8da0cb).
Для акцентов: Яркий цвет (один!), например, красный для негатива.
Проверка: Распечатайте график в ЧБ — если всё читаемо, вы молодец.

4. Аннотации решают всё
Добавляйте подписи к выбросам

5. Интерактивность ≠ сложность

Для дашбордов: Plotly или Tableau.
Простой пример:

import plotly.express as px
fig = px.bar(df, x='город', y='доход', color='месяц', noscript='Доход по городам')
fig.show()

Инструменты
Python:
Matplotlib, Seaborn, Plotly.
BI: Tableau, Power BI, Metabase.
Быстрые правки: Canva для презентаций.

📌 Правило: Хорошая визуализация — та, после которой не остаётся вопросов.

🎓 Напоминаем, у поступашек открыта запись на курс по А/Б тестированию!

@ProdAnalysis
Please open Telegram to view this post
VIEW IN TELEGRAM
😁8🔥3🙈3🤷‍♂1
Полный цикл отбора в Яндекс (Аналитика 2025)

Сейчас в полном разгаре летняя волна стажировок, выпускники наших курсов делятся нашими впечатлениями. Алексей, студент 2 курса бизнес информатики НИУ ВШЭ, решил поделиться своим опытом прохождения на продуктовую аналитику.

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

Аналитическая секция
В начале интервьювер представился, прорекламил свою команду и попросил рассказать о себе в двух словах. Затем мы перешли к задачам.
Алгоритмическая задача:
  Дан массив чисел и значение x, требуется найти минимальный по длине подотрезок массива, такой, что количество уникальных значений на этом отрезке >= x.
Задачка простенькая на два указателя (+хешмапа). Здесь интервьювер максимально задушнил и асимптотику спросил с подробным объяснениям, также ссылаясь ещё на работу хешмапы, и начал выяснять как работает лист внутри и почему добавление O(1), но я выстоял, а задачку решил довольно быстро.
АБ:
На удивление ни единой задачки на ТВ не было, сразу перешли к дизайну АБ и критериям. В принципе здесь всё стандартно, просто обычный кейс, поспрашивал сколько человек разумно брать в эксперимент и какой критерий подойдёт, пытался вытянуть из меня идею применения CUPED (P.S. кстати на новом курсе по тестам будет даже разбираться и cuped, и стратификация, и прочие заумные методы), я даже вспомнил про его существования, но объяснил интервьюверу, что пока что мимо обошёл.
Метрики/unit экономика:
Дали кейс и попросили посчитать с unit экономику, здесь справился быстро и без нареканий.

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

Интервью с командой
В основном на финале были пустые разговоры про мотивацию и прочее + задавали вопросы на продуктовое мышление. В двух командах были простенькие sql запросы. В третьей же задали целый ряд задач:
1. У нас есть два варианта рекомендательной системы. В A-группе конверсия 10% (на 1000 пользователей), в B-группе — 12% (на 1000). Достаточно ли этого, чтобы считать разницу значимой? Как проверить? Что делать, если выборка небольшая?
2. Компания запускает голосового ассистента для банка. Какие метрики стоит отслеживать в первые 3 месяца? Как понять, что продукт успешен?
Далее простенькие задачки на sql и итоговая болтовня.

По итогу меня взяли в последнюю команду. Подводя итоги, могу рассказать свой бэкграунд. Естественное ни о какой нормальной математики на БИ ВШЭ говорить и нельзя, всё я ботал сам, либо по курсам (но хочу отметить, что на собеседованиях естественно и не смогут проверить в полной мере твои харды, так что это легко можно и замаскировать). Курс алгосов в БИ относительно нормальный, для прохождения собесов с головой хватит (конечно тут говориться про именно знание тем, а не умение пользоваться алгоритмическим аппаратом, последнее естественно нужно будет тренить самому/либо у вас сразу пойдут простенькие задачи с собесов). Сама прога посредственная на БИ (но для аналитика собственно ничего трудного в проге и не нужно знать). SQL я выучил на курсах поступашек, как и прочую гуманитарщину, связанную с продкутовой частью. Что касается АБ, также базовые навыки изучил на курсах и сам ещё почитал другие материалы. Резюмируя, в принципе всё что мне понадобилось для отбора, я выучил за месяц и никаких особых хардов и не нужно, чтобы попасть на стажировку.

@ProdAnalysis
👍11😁41
Тест на знaние SQL.pdf
1 MB
Вот и разбор теста на знание SQL стажировки в Т-банк. А разбор SQL задач и экзамена по математике уже на нашем курсе по AB тестам, на который только сегодня дарим 30% скидку!

@ProdAnalysis
🔥9😁3🥰1💔1
Как выбрать правильные продуктовые метрики?

Каждый продукт — это живая система, и чтобы им управлять, нужно измерять то, что действительно важно. Но как не утонуть в сотне графиков и сосредоточиться на главном?

Какие метрики бывают?

📎 Оценка роста
DAU/WAU/MAU — кто и как часто возвращается
Retention — «выживаемость» пользователей через N дней
Virality (K-фактор) — насколько продукт сам себя продвигает

📎 Экономика продукта
LTV — сколько денег приносит клиент за всё время
CAC — сколько стоит его привлечение
ROI — окупаемость вложений

📎 Качество продукта
NPS — лояльность пользователей
CES — простота решения задач
CR (Conversion Rate) — сколько доходят до цели

💡 Как не ошибиться?
Фокус на 3-10 вторичных, и 1 KPI — остальное шум.
Связывайте метрики с целями — если хотите удержание, смотрите Retention, а не CAC.
Segmentируйте данные — поведение новых и старых пользователей может сильно отличаться.

@ProdAnalysis
6🔥2😁1
Media is too big
VIEW IN TELEGRAM
По многочисленным просьбам разбираем 7ую задачу со стажировки в Т-банк. Код уже здесь.

@ProdAnalysis
😁11🍌5🔥3
Как найти своего идеального клиента? Сегментация аудитории.

Каждый продукт создаётся для людей, но не все люди одинаково полезны для вашего бизнеса.
Одни клиенты приносят 80% прибыли, другие — просто создают нагрузку на поддержку.

Инструмент, который поможет найти паттерны ваших идеальных клиентов — сегментация аудитории.

Зачем сегментировать аудиторию?
Сегментация помогает:
Точечно улучшать продукт под нужды ключевых пользователей.
Повышать конверсию за счёт персонализированных коммуникаций.
Увеличивать LTV (Lifetime Value), удерживая лучших клиентов.

Есть 4 основных подхода:
1. Демографическая сегментация
2. Поведенческая сегментация
3. Психографическая сегментация.
4. RFM-анализ (Recency, Frequency, Monetary)

Основные ошибки в сегментации
1. Слишком много сегментов → невозможно персонализировать.
2. Сегменты без действий → просто анализ ради анализа.
3. Игнорирование динамики → клиенты меняются, сегменты тоже должны.

@ProdAnalysis
6👍2🔥2