Сначала зафиксируйте grain данных, допущения, метрику и риск leakage, затем обсуждайте модель, инструмент или инфраструктуру.
Вопросы и ответы
8 подробных ответов
01Интервьюер говорит: «Бизнес хочет снизить отток. Начинайте». Как развернуть ML-задачу из бизнес-запроса?
middle
Короткий ответ: Не начинать с модели. Сначала уточняющие вопросы: какое ДЕЙСТВИЕ бизнес совершит с прогнозом — оно задаёт горизонт предсказания и окно таргета. Затем не-ML бейзлайн, определение таргета, данные, оффлайн-метрика, привязанная к деньгам, и дизайн эксперимента.
Подробно:
- Действие — кто и что сделает со скорингом (звонок, скидка, push)? Действие определяет горизонт прогноза и цену ошибок.
- Определение таргета — что считаем «оттоком»: нет покупок 60 дней? отписка? Окно наблюдения фиксируем явно.
- Не-ML бейзлайн — правило «не заходил 30 дней» может закрыть 80% ценности; модель обязана его обыграть.
- Данные и фичи — только то, что известно на момент прогноза (as-of-time), иначе лик.
- Метрика — оффлайн-метрика (PR-AUC, precision@k) плюс связь с деньгами: стоимость удержания против ложного срабатывания.
- Валидация и эксперимент — time-based split, затем A/B на реальном действии.
бизнес-запрос → действие → таргет и горизонт → бейзлайн (правила)
→ данные as-of-time → оффлайн-метрика ↔ деньги → time split → A/B
⚠️ Частая ошибка: прыгнуть в «обучим XGBoost» до определения таргета и действия — ML-секция в Яндексе заваливает кандидата именно на этом шаге.
02Спроектируйте рекомендательную ленту для маркетплейса. Какая архитектура и где подводные камни?
senior
Короткий ответ: Двухэтапный каскад: отбор кандидатов (миллионы → сотни) лёгкими моделями, затем тяжёлое ранжирование кандидатов бустингом или нейросетью, сверху бизнес-правила. Главные камни: холодный старт, position bias в имплицитном фидбеке и разрыв оффлайн/онлайн-метрик.
Подробно:
- Отбор кандидатов — коллаборативная фильтрация (ALS), two-tower эмбеддинги + ANN-индекс (HNSW/FAISS): дёшево, с высоким recall.
- Ранжирование — бустинг/NN на фичах пользователя, айтема и контекста; таргет — клик/покупка с поправкой на position bias.
- Бизнес-правила — разнообразие, свежесть, фильтры (уже купленное), квоты категорий.
- Холодный старт — контентные фичи для новых айтемов, popularity prior для новых пользователей.
- Метрики — оффлайн recall@k/NDCG на логах ≠ онлайн CTR/GMV: логи смещены прошлой моделью (feedback loop), финальное слово за A/B.
каталог (10⁶)
│ отбор кандидатов: ALS / two-tower + ANN
▼
кандидаты (10²–10³)
│ ранжирование: бустинг/NN, фичи user × item × context
▼
топ-N → бизнес-правила (разнообразие, свежесть) → лента
⚠️ Частая ошибка: одноэтапный ответ «модель ранжирует весь каталог» и ни слова про холодный старт — сразу видно отсутствие продакшен-опыта.
03Спроектируйте систему детекции фрода по транзакциям в реальном времени.
senior
Короткий ответ: Антифрод — это экстремальный дисбаланс, жёсткий бюджет латентности, ЗАДЕРЖАННЫЕ метки и противник, который адаптируется. Дизайн: feature store с предрасчитанными агрегатами + лёгкие онлайн-фичи, модель + слой правил, precision@k под ёмкость команды разбора, частое переобучение и human-in-the-loop.
Подробно:
| Ограничение | Решение в дизайне |
|---|---|
| Дисбаланс ~0.1% | PR-AUC оффлайн; precision@k, где k = ёмкость очереди ручного разбора |
| Латентность < 100 мс | тяжёлые агрегаты предрасчитаны в feature store; онлайн — только лёгкие фичи (сумма, гео, девайс) |
| Задержка меток | chargeback приходит через недели: обучение на сдвинутом окне, прокси-метки, мониторинг без меток |
| Дрейф (adversarial) | фродеры адаптируются: частое переобучение + слой правил для мгновенной реакции |
| Асимметрия цен ошибок | порог из cost-матрицы (пропущенный фрод против ложной блокировки), а не 0.5 |
- Human-in-the-loop — скор → авто-блок / очередь аналитика / пропуск; разметка аналитиков возвращается в обучение.
⚠️ Частая ошибка: спроектировать «обычный классификатор», проигнорировав задержку меток и дрейф — в антифроде это ядро задачи, а не деталь.
04Кредитный скоринг: чем он отличается от обычной бинарной классификации?
middle
Короткий ответ: Ограничениями вокруг модели: регулятор требует интерпретируемость (скоркарты, WoE, монотонность), язык метрик — Gini, скор калибруется в PD (вероятность дефолта), стабильность популяции важнее последнего процента качества, а меток для отклонённых заявок вы не увидите никогда (reject inference).
Подробно:
- Интерпретируемость — логрег на WoE-фичах или бустинг с монотонными ограничениями; каждая фича обоснована (IV), причину отказа надо уметь объяснить.
- Язык метрик — Gini (= 2·AUC − 1): банковские команды говорят «Gini 55», а не «AUC 0.775».
- Калибровка в PD — от вероятности дефолта считаются ставка, лимит и резервы: калибровка важнее ранжирования.
- Стабильность — PSI отслеживает сдвиг популяции; нестабильная фича выбрасывается, даже если сильная.
- Reject inference — обучение только на одобренных = selection bias; отклонённых размечают суррогатно или моделируют.
- Лаг метки — дефолт виден через 12+ месяцев: валидация по винтажам.
| Обычный ML | Кредитный скоринг |
|---|---|
| max AUC | Gini + калиброванный PD + стабильность |
| любые фичи | интерпретируемые, монотонные, стабильные |
| вся выборка размечена | reject inference, метка через год |
⚠️ Частая ошибка: «возьму CatBoost и максимизирую AUC» — в банке модель без калибровки, PSI и объяснимости не пройдёт валидацию.
05Что такое uplift-моделирование и чем оно отличается от предсказания отклика? Кого таргетировать кампанией?
senior
Короткий ответ: Response-модель предсказывает P(купит | воздействие), uplift — ПРИРОСТ вероятности от самого воздействия (CATE): P(купит | промо) − P(купит | без промо). Таргетировать нужно только persuadables — тех, кого промо реально переключает.
Подробно:
| Квадрант | Без промо | С промо | Действие |
|---|---|---|---|
| Persuadables | не купит | купит | таргетировать — весь эффект здесь |
| Sure things | купит | купит | не трогать: скидка = сожжённая маржа |
| Lost causes | не купит | не купит | не трогать: бюджет впустую |
| Sleeping dogs | купит | НЕ купит | исключить: промо будит отток |
- Подходы — S-learner (воздействие как фича), T-learner (две модели), X-learner, uplift-деревья с критерием расщепления по разнице откликов.
- Данные — нужен рандомизированный эксперимент: без случайного назначения воздействия CATE не идентифицируется.
- Валидация — uplift@k, Qini-кривая: обычные AUC/logloss не работают, истинный uplift одного человека ненаблюдаем.
⚠️ Частая ошибка: таргетировать тех, у кого высокая P(купить) — это sure things: конверсия кампании красивая, инкрементальный эффект ноль. В СНГ (ритейл, телеком, банки) вопрос любят именно из-за этой ловушки.
06Как устроен learning-to-rank: pointwise, pairwise, listwise?
senior
Короткий ответ: Три способа превратить ранжирование в обучаемую задачу: pointwise предсказывает релевантность каждого документа независимо, pairwise учится на парах «A релевантнее B», listwise оптимизирует метрику всего списка (NDCG) напрямую.
Подробно:
| Подход | Лосс | Примеры | Слабость |
|---|---|---|---|
| Pointwise | регрессия/классификация на документ | линейные модели, бустинг | игнорирует взаимный порядок внутри запроса |
| Pairwise | P(A > B) на парах внутри запроса | RankNet, LambdaRank | пар квадратично много; без весов все пары равноважны |
| Listwise | метрика списка целиком | LambdaMART, YetiRank (CatBoost) | сложнее и дороже обучение |
- LambdaRank — мост между pairwise и listwise — градиент пары масштабируется |ΔNDCG| от их перестановки: формально pairwise, фактически оптимизирует листовую метрику.
- Практика — LambdaMART (бустинг + LambdaRank) — рабочая лошадка поиска; в CatBoost есть режимы YetiRank/PairLogit.
- Связь с метрикой — NDCG дисконтирует позицию логарифмом: ошибки в топе дороже, поэтому pointwise MSE плохо коррелирует с качеством выдачи.
⚠️ Частая ошибка: «обучу регрессию на клики и отсортирую по скору» без слов про порядок, позицию и NDCG — для поисковой команды это ответ уровня стажёра.
07Оффлайн-метрика модели выросла, а онлайн бизнес-метрика в A/B не сдвинулась. Ваши гипотезы?
middle
Короткий ответ: Классический offline-online gap. Гипотезы в порядке проверки: лик или неверная схема валидации, смещения логов (position/selection bias), модель — не бутылочное горлышко продукта, эффект меньше мощности эксперимента, деградация латентности съела выигрыш, feedback loop.
Подробно:
| Гипотеза | Как проверить |
|---|---|
| Лик / валидация | аудит фичей по as-of-time; time-based split вместо случайного |
| Смещение логов | оффлайн-оценка сделана на логах старой модели: position/selection bias; interleaving, off-policy оценки |
| Не то горлышко | +2% качества ранжирования незаметны, если доминируют UX, цена или ассортимент |
| Мощность | сравнить MDE с ожидаемым эффектом: возможно, эффект есть, но эксперимент его не видит |
| Латентность | тяжёлая модель отвечает дольше → таймауты и фолбэки съедают выигрыш |
| Feedback loop | новая модель меняет распределение данных, на которых её оценивали |
⚠️ Частая ошибка: сразу объявить «A/B сломан» или «оффлайн-метрика бесполезна» — интервьюер ждёт структурированный список гипотез с дешёвыми проверками, от вероятных к экзотике.
08Когда задачу НЕ надо решать машинным обучением?
middle
Короткий ответ: Когда правило или эвристика закрывает ценность дешевле: нет меток или фидбек слишком медленный, цена ошибки требует объяснимости и гарантий, данных мало, а стоимость сопровождения модели (дрейф, переобучение, мониторинг) выше выигрыша над бейзлайном.
Подробно:
Чек-лист «нужен ли здесь ML»:
□ Есть ли не-ML бейзлайн и сколько ценности он закрывает?
□ Есть ли метки? Как быстро приходит фидбек?
□ Терпит ли задача вероятностные ошибки? Нужна ли объяснимость (регулятор)?
□ Хватает ли данных на сигнал сложнее правила?
□ Кто будет сопровождать: дрейф, переобучение, мониторинг, on-call?
□ Окупает ли выигрыш над правилом всё перечисленное?
- Бейзлайн первым — всегда называть эвристику до модели: «сортировка по популярности», «правило 30 дней». Часто её и хватает.
- ML — это обязательство — не артефакт, а процесс: данные дрейфуют, пайплайны ломаются, модель тухнет без переобучения.
- Что проверяет интервьюер — зрелость: кандидат с «молотком ML» на любую задачу — красный флаг, этим вопросом фильтруют сеньорность.
⚠️ Частая ошибка: рефлекторно предлагать модель на вопрос, который начинался со слов «бизнес хочет…» — сначала правило, потом ML, если правило не дотягивает.
Источники
Источники и редакционная политика
Материалы RecallDeck сопоставлены с официальной документацией и открытыми публикациями компаний, когда первичный источник доступен. Мы не связаны с упомянутыми работодателями, не публикуем конфиденциальные задания и не продаём места в подборках. Формат найма может меняться — уточняйте его у рекрутера.
От чтения к воспроизведению
Отрепетируйте полный цикл интервью.
RecallDeck возвращает сложные темы по расписанию и помогает удерживать в памяти язык, SQL, архитектуру и поведенческие истории.