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