ML system design: похожие товары
Вопрос
Спроектируйте блок «Похожие товары» на карточке товара.
Попробуйте сами
Ответьте вслух за 2 минуты, как на собесе. Потом сверьтесь с тезисами: что прозвучало, а что нет.
Показать ответ и разбор
Коротко
Что должно прозвучать в ответе
Уточнить смысл: похожие (замена) или сопутствующие (дополнение)
Сигналы: совместные просмотры в сессии, контент (текст, фото), атрибуты
Эмбеддинги и ANN-поиск, гибрид для холодного старта
Фильтры: наличие, категория, цена, дубли
Оценка: офлайн по совместным просмотрам, онлайн CTR и конверсия
Что могут спросить следом
- Как отличить похожие товары от сопутствующих в данных?
- Как быстро добавить в выдачу только что созданный товар?
Разбор
Уточняю задачу: «похожие» это альтернативы для выбора, а не аксессуары. Поэтому сигналом служат товары, которые смотрят в одной сессии перед покупкой одного из них, а не те, что покупают вместе. Строю эмбеддинги товаров двумя способами: поведенческие (item2vec на последовательностях просмотров или two-tower) и контентные (текстовая модель по названию и описанию, визуальная по фото, атрибуты). Для новых товаров с малой историей опираюсь на контентный эмбеддинг или смешиваю оба. Похожие ищу ANN-поиском, топ-100 кандидатов предрасчитываю для каждого товара батчем, а для новых считаю на лету. Пост-фильтры: тот же тип товара, в наличии, разумный ценовой диапазон, без дублей одного товара от разных продавцов. Офлайн оцениваю, насколько часто следующий просмотренный в сессии товар попадает в блок, онлайн CTR блока и конверсию в покупку в A/B.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.
Предыдущий вопрос
ML system design: рекомендации товаров на главной
Следующий вопрос
Петля обратной связи