Загрузка…
Загрузка…
ml / middle / system_design
Формат
online
Стадия
system_design
Когда
within_week
Длительность
—
01
Теория
Случайный лес и градиентный бустинг над деревьями: что они из себя представляют, чем отличаются, какие у них особенности?
Открывающий теоретический вопрос секции; за ним серия уточняющих вопросов
02
Теория
Почему в градиентном бустинге берётся именно антиградиент функции потерь и по какой переменной происходит дифференцирование?
Follow-up к вопросу про бустинг; интервьюер уточнил, что это не вопрос с подвохом
03
Теория
Как думаешь, почему вообще придумали такую конструкцию с антиградиентом функции потерь в бустинге?
Follow-up; интервьюер сам пояснил интуицию через MSE для регрессии и обобщение на классификацию
04
Заметки
Транскрипт видео блогера, записывающего свои реальные собеседования. ML-секция в Яндексе (теория + практика машинного обучения); раньше эта секция шла после алгоритмов, теперь её поставили первой. Кандидат секцию прошёл; следующая секция — алгоритмы (её он, по его словам, тоже прошёл). Структура: ~20 минут теории, остальное (~полчаса) — практический кейс про рекомендательную систему для Яндекс Лавки. В конце кандидат задавал вопросы интервьюеру о «правильных ответах» и о том, как рекомендации устроены в реальности (несколько источников кандидатов, главный предиктор в доставке продуктов — повторные покупки, проблемы метрик сопокупаемости типа PMI на примере бананов и тунца, ANN-поиск для больших каталогов типа Яндекс Музыки). Интервьюер обещал, что рекрутёр вернётся с дальнейшими шагами в течение недели или быстрее.
Подготовка
Кандидат после собеседования советует повторить статистику: p-value, уровень значимости, ошибки первого и второго рода, мощность теста; рекомендует хороший курс по статистике на Stepik. Также отмечает, что сам шёл без подготовки и без повторения материала.
Стиль интервьюера
Доброжелательный, ведёт диалог в свободном режиме, по ходу кейса направляет кандидата наводящими вопросами и подсказками, сам раскрывает «правильные» решения после обсуждения. На ошибку кандидата в теории статистики отреагировал мягко (поправил, но не завалил) — по предположению кандидата, интервьюер сам лучше знает практику, чем теорию. Кейс без чёткого ТЗ — проверяется ход рассуждений, охват разных аспектов решения (модель, таргет, метрики, внедрение).
Теория
Почему в случайном лесе усреднение большого числа деревьев (бэггинг) даёт улучшение? В чём выгода усреднения тысячи деревьев?
Follow-up; обсуждали матожидание, снижение переобучения, подвыборки сэмплов и фичей
05
Теория
Если сравнивать случайный лес и градиентный бустинг на одной выборке при подборе гиперпараметров — что можно сказать про оптимальную глубину деревьев: она будет одинаковой, разной, или у одного всегда больше?
Follow-up к сравнению ансамблей
06
Теория
Что такое p-value в статистических тестах: откуда он берётся, что означает по смыслу и как на пальцах работают стат-тесты (при проверке гипотез / A/B-тестах)?
Кандидат ответил неправильно: перепутал p-value с уровнем значимости и ошибки первого/второго рода; интервьюер поправил, но не придал этому значения
07
System design
Кейс: Яндекс Лавка (сервис быстрой доставки продуктов) хочет показывать на экране корзины блок рекомендаций «может тебя ещё заинтересует» (3–10 товаров). Как бы ты подошёл к этой задаче, если на неё есть несколько месяцев? Зачем такое делать и как строить решение?
Основной практический кейс секции (~полчаса); кандидат прошёл от бейзлайна с популярными товарами до матричного разложения, сопокупаемости и моделей похожести
08
System design
Ты предложил несколько подходов (популярные товары, сопокупаемость, история покупок пользователя, похожесть корзин) — как объединить всё это в одну модель, чтобы модель сама решила, что важнее?
Follow-up к кейсу про рекомендации
09
System design
Матричное разложение не учтёт реалтайм-факторы (например, что на товар сегодня скидка) — ты же не будешь заново запускать разложение на каждую скидку. Как добавить в модель такие данные?
Follow-up; правильное направление — конкатенировать к эмбеддингам дополнительные handcrafted-фичи
10
System design
Что будем выбирать в качестве таргета для этой модели рекомендаций?
Follow-up к кейсу
11
System design
Допустим, модель разработана и даёт разумные предсказания — что будем делать дальше? Как применять её на большом каталоге (отбор кандидатов, инференс)?
Follow-up; кандидат предложил двухэтапную схему: быстрый отбор кандидатов по метрической близости векторов, затем ранжирование моделью
12
System design
Как будем оценивать и проверять это решение перед внедрением — какие онлайн- и оффлайн-метрики будем использовать?
Follow-up; обсуждали accuracy по корзинам оффлайн, CTR/добавления в корзину онлайн, рост среднего чека
13
System design
Проблема таргета: корзина пользователя фактически совпадает с заказом — если учить модель предсказывать, что человек купит, по содержимому корзины, непонятно, в чём разница. Как построить таргет и метрики, если хотим учитывать, что у пользователя уже есть в корзине?
Ключевой проблемный follow-up кейса
14
System design
Можно ли как-то обойти проблему того, что корзина — это и есть фактический заказ (мы не знаем, что человек купил бы ещё)?
Кандидат не смог придумать решение; интервьюер подсказал приём: по очереди выкидывать по одному товару из корзины и учиться его предсказывать (по аналогии с языковыми моделями)
15
System design
Проблема такого обучения: модель выучит рекомендовать товары, за которыми человек и так бы сам пришёл (молоко, макароны), хотя рекомендовать их бессмысленно. Как решить эту проблему?
Follow-up; обсуждали исключение регулярно покупаемых товаров из таргета
16
System design
Как сделать так, чтобы модель рекомендовала товары, о которых человек сам не думал, но которые могут его заинтересовать (мороженое в жару, новинки, товары со скидкой), а не просто то, что он и так купит?
Follow-up; интервьюер подвёл к ответу: учиться на логах прошлых показов рекомендаций (показали — купил/не купил), разнообразить показы для сбора данных