Как понять, что ML-фича принесла пользу
Интервьюер спрашивает: какие метрики отслеживали и как понимали, что внедренное ML-решение действительно приносит пользу?
Сначала проговорите ответ вслух или тезисами.
Формулы, план решения, риски и примеры.
Откройте разбор только после своей попытки.
Показать разбор
Короткий ответ
Нужно связать offline metrics с product/business metrics: recall/nDCG/precision для модели, CTR/conversion/GMV/acceptance rate для продукта, guardrails по latency, качеству и негативу.
Подробный разбор
Хороший ответ начинается с типа задачи. Для рекомендаций offline можно смотреть recall@k, nDCG, hit rate, precision@k. Для классификации — precision/recall/F1/ROC-AUC/PR-AUC. Но это только proxy: они показывают качество модели на данных, а не бизнес-эффект.
Дальше нужны online/product metrics. Для рекомендаций это CTR, conversion, GMV, доля успешных действий, retention, средний чек или другой бизнес target. Для moderation — доля автоматизированных решений, нагрузка на ручную модерацию, false positive/false negative и complaints.
Сильный ответ обязательно добавляет A/B или controlled rollout, guardrails, сегментный анализ и проверку, что offline uplift действительно переносится в online поведение.
Типичные ошибки
- Говорить только про nDCG или AUC.
- Не назвать бизнес-метрику.
- Не обсудить A/B и guardrails.
Как сказать на собеседовании
- Разделяй offline, online и business metrics.
- Добавь пример из домена: рекомендации, модерация, поиск или агент.
Линейная регрессия и проблемы аналитического решения
Как объяснить линейную регрессию, MSE и почему аналитическое решение через матрицу не всегда удобно?
Сначала проговорите ответ вслух или тезисами.
Формулы, план решения, риски и примеры.
Откройте разбор только после своей попытки.
Показать разбор
Короткий ответ
Линейная регрессия минимизирует MSE; normal equation требует работы с X^T X, что дорого и нестабильно на больших или плохо обусловленных данных.
Подробный разбор
Модель строит прогноз как линейную комбинацию признаков и обычно оптимизирует сумму квадратов ошибок. Аналитически можно решить через normal equation, но инверсия или решение системы с X^T X может быть дорогим и численно нестабильным.
Проблемы возникают при больших матрицах, мультиколлинеарности и плохо обусловленных признаках. Поэтому часто используют gradient descent, регуляризацию, QR/SVD или готовые численно устойчивые solver-ы.
Чем логистическая регрессия похожа на линейную
Интервьюер спрашивает: если рассматривать логистическую регрессию, чем она похожа на линейную и чем отличается?
Сначала проговорите ответ вслух или тезисами.
Формулы, план решения, риски и примеры.
Откройте разбор только после своей попытки.
Показать разбор
Короткий ответ
Обе модели считают линейную комбинацию признаков. Линейная регрессия предсказывает число, а логистическая пропускает linear score через sigmoid и интерпретирует результат как вероятность класса.
Подробный разбор
Общая часть — линейный скор: w*x + b. В линейной регрессии этот скор напрямую является прогнозом вещественного target. В логистической регрессии скор проходит через sigmoid, поэтому результат лежит от 0 до 1 и может интерпретироваться как вероятность положительного класса.
Отличается и функция потерь. Для линейной регрессии часто используют MSE, для логистической — log loss / binary cross-entropy. Decision boundary у логистической регрессии при пороге 0.5 все равно линейная в пространстве признаков.
Важно не говорить, что логистическая регрессия — это просто линейная регрессия с округлением. Это классификационная вероятностная модель с другой функцией потерь.
Типичные ошибки
- Сказать, что logistic regression предсказывает классы напрямую.
- Забыть про sigmoid и log loss.
- Путать regression в названии с регрессионной задачей.
Как сказать на собеседовании
- Формула: sigmoid(w*x + b).
- Назови отличие target, output range и loss.
ROC AUC как качество ранжирования
Что означает ROC AUC и почему его можно понимать как метрику ранжирования?
Сначала проговорите ответ вслух или тезисами.
Формулы, план решения, риски и примеры.
Откройте разбор только после своей попытки.
Показать разбор
Короткий ответ
ROC AUC - вероятность, что случайный positive получит score выше случайного negative; поэтому это threshold-free метрика порядка объектов.
Подробный разбор
ROC строит TPR против FPR при разных thresholds. AUC не зависит от одного выбранного порога и показывает качество порядка объектов по score.
Полезная интерпретация: вероятность, что случайный positive окажется выше случайного negative. При сильном дисбалансе классов ROC AUC может выглядеть слишком оптимистично, поэтому для rare positives часто дополнительно смотрят PR-AUC, precision@K или recall@K.
Precision или Recall на разных этапах рекомендаций
В recommender system где важнее recall, а где precision?
Сначала проговорите ответ вслух или тезисами.
Формулы, план решения, риски и примеры.
Откройте разбор только после своей попытки.
Показать разбор
Короткий ответ
На candidate generation важнее recall, на финальном ранжировании и выдаче сильнее важны precision, nDCG и качество top-K.
Подробный разбор
Первый этап должен не потерять хорошие варианты, поэтому оптимизирует coverage и recall@K. Если early stage потерял объект, ranker уже не сможет его восстановить.
Финальный ranker работает с меньшим набором и должен поставить лучшие объекты наверх: precision@K, nDCG, CTR, add-to-cart или conversion. В production рядом держат guardrails: latency, diversity, novelty, empty recommendations и бизнес-ограничения.
Градиентный бустинг против Random Forest
Чем gradient boosting отличается от Random Forest и где в бустинге появляется градиент?
Сначала проговорите ответ вслух или тезисами.
Формулы, план решения, риски и примеры.
Откройте разбор только после своей попытки.
Показать разбор
Короткий ответ
Random Forest строит независимые деревья и усредняет их, boosting строит деревья последовательно, исправляя ошибки текущего ансамбля.
Подробный разбор
В Random Forest деревья обучаются параллельно на bootstrap samples и случайных подмножествах признаков, поэтому усреднение снижает variance.
В gradient boosting новая модель аппроксимирует антиградиент функции потерь по текущим предсказаниям. Для MSE это похоже на обучение по residuals, для logloss - по градиентам logloss. Boosting часто точнее, но чувствительнее к learning rate, depth, leakage и переобучению.
Top-50 товаров на пользователя
Есть таблица candidates с ответами рекомендательной модели.
Схема
CREATE TABLE candidates (
user_id INTEGER NOT NULL, -- пользователь
item_id INTEGER NOT NULL, -- товар
score REAL NOT NULL -- релевантность, чем выше тем лучше
);
Для каждого пользователя оставьте top-50 товаров по score.
Результат должен содержать user_id, item_id, score и быть отсортирован по user_id ASC, затем score DESC, затем item_id ASC.
Решение прямо на странице
Напишите код, запустите проверки и только потом открывайте разбор.
Нажмите «Запустить проверки» или Ctrl+Enter.
Показать разбор
Подсказки
- Оконная функция
Нужен ROW_NUMBER() OVER (PARTITION BY user_id ORDER BY score DESC).
- Фильтр top-k
Заверните оконную функцию в CTE или подзапрос и отфильтруйте rn <= 50.
Идея решения
Используем ROW_NUMBER() с разбиением по пользователю и сортировкой по score DESC.
После этого оставляем строки с rn <= 50. Для стабильного результата добавляем item_id ASC в сортировку.
Эталонный код
WITH ranked AS (
SELECT
user_id,
item_id,
score,
ROW_NUMBER() OVER (
PARTITION BY user_id
ORDER BY score DESC, item_id ASC
) AS rn
FROM candidates
)
SELECT
user_id,
item_id,
score
FROM ranked
WHERE rn <= 50
ORDER BY user_id ASC, score DESC, item_id ASC;