Учтем иерархию элегантно
В задачах связанных с маркетплейсами и 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
Post #17
1.04K
- 🔥 6





