TGViewer
Б/У ml Б/У ml @ml_bu · 696 subscribers
Post #17 1.04K
Учтем иерархию элегантно

В задачах связанных с маркетплейсами и e-commerce появляются категории товаров. Часто эти категории разбиваются на подкатегории, а те уже на микро категории и т д . Принято даже называть деревом категорий. Часто такая разбивка создается людьми на основе уже состоявшихся товаров на платформе - принадлежность айтема к одной из микро-нано-категории однозначно определяет часть свойств товара и хочется этот сигнал учесть в рекомендательной системе

В классическом подходе берут эмбеддинг миро категории и подмешивают например к векторам тайтла, описаний при построении вектора айтема. Вектор микро категории будет в себе содержать информацию о родителях-категориях , так как система. И это неплохо работает - классическая категорийная фича


В статье Deep Hierarchical Classification for Category Prediction in E-commerce System предложили методы, как учесть ветку товара. Например если товар ложка, то полезно учесть, что это из категории “посуда”, из подкатегории ”столовый прибор”, тогда для других “посуд” , по которым меньше статистик, будет полезна информации о родителях-категорий.

Сама статья про классификацию айтемов по дереву, но ее идеи можно переиспользовать для рек системы.

Я выделил 2 полезные:
Учет в векторе айтема всех категорий в дереве, к которым принадлежит
Сохранить информацию о иерархии в векторах категорий

1) Все категории в товаре
Идея в том, чтобы проинициализировать вектор каждого уровня иерархии в дереве, кроме рутовой, и матрицу весом W размера (l * emb_dim, n_l) , где n_l - количество категорий на данном уровне для каждого уровня дерева. Изначально инитим вектор айтема на основе его описания тайтла и параметров (предположим мы это уже умеем делать). Далее обогащаем вектор с предыдущего уровня вектором иерархии, то конкатенировать все вектора в ветке и умножить на матрицу W (картинка 1). Полученный вектор имеет размерность (n_l) - к нему применяют софтмакс и обучают логлосс. Метка класса - категория товара на уровне l . Такую операцию проделываем для каждого уровня.

2) Сохранение иерархии
После получения логитов иерархии закидывают их в доп лосс функцию. Идея в том, чтобы добавить параметр Dl . Если предсказанный на l-1 уровне категория не является отцом-категория для l уровня то дополнительно штрафовать при обучении


Мое мнение
Подход не сложно реализуемый - является надстройкой поверх существующего метода. Когда рек система уже развита и есть хорошие вектора объявлений, это будет плюсом. Я бы попробовал подать на вход вектор пользователя и попробовать угадать какие категории товаров интересны ему. Также можно находить интересный параметры. Метод использует простые линейные умножения, что легко поддерживать в проде и объяснять, что происходит.

С точки зрения вклада в изучение глубины данных в эпоху развития CRS (рекомендации с помощью llm) данный способ выглядит замудренным - гораздо проще закинуть в llm и попросить отыскать параметры-категории для айтема и пользователя. Но можно попробовать в тандеме - LLM создает разметку для этого метода, а матрички будут аппроксимировать работу LLM
  • 🔥 6
More from @ml_bu
  1. Sep 24, 2026Лента Постов в АВИТО 🚀 Data Scientist (Recommendation Systems) в Авито Middle / Senior /…
  2. Sep 24, 2026Выходит так, что команда расширяется и появляются новые ставки.
  3. Sep 4, 2026Заходите на авито в рекомендации на главной. Сегодня раскатил генеративную модельку - AviR…
  4. Aug 19, 2026Post #82
  5. Aug 19, 202629 лайков - не ожидал :) Расскажу еще пару инсайдов. Этот пр не очень большой по объему но…
  6. Aug 19, 2026Я в телевизоре Не секрет, что последние полгода занимаюсь задачами связанными с семантикам…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →