Comments 4
Привет, несколько вопросов.
1) Что будет лейблом при расчёте MAP@K? Переход от датасета с вложенными категориями к проставлению 0 и 1 для расчёта MAP@K не очень понятен.
2) Я правильно понял пайплайн?
1. Получение/обновление эмбеддингов постов с помощью item2vec. Видимо в оффлайне.
2. Получение краткосрочных и долгосрочных предпочтений. Я понял это как "вектор пользовотеля" через просмотренные посты. Наверное, помимо отбора постов там есть какая-то магия для получения результирующего вектора. Не возникает ли проблем при получении результирующего вектора?
3. Отбор кандидатов для пользователя с помощью краткосрочных и долгосрочных предпочтений - на выходе N векторов по числу товаров. Судя по
> с данными о краткосрочных и долгосрочных вкусах бэкенд обращается в Vector Index, где получает ближайшие посты
вы это в онлайне делаете.
4. Ранжирование xgboost-ом. Тут не очень понятно - вы ранжирование только над векторами постов делаете или что-то из фичей докидываете?
3) В feature store хранятся ID, а сами вектора предпочтений в векторной базе?
1) успехом считается попадание предложенных кандидатов в ту же группу или подгруппу что и пост, по которому мы ищем. Т.е. мы отдельно считаем map для групп и для подгрупп.
2)
2.1 получение эмбеддингов происходит в онлайне (см картинку Загрузка эмбеддингов в Vector Index)
2.2 да, плюс-минус верно, краткосрочные и долгосрочные вкусы пользователя это векторы постов. Краткосрочные вкусы это вектора постов, с которыми пользователь взаимодействовал недавно. Долгосрочные - медоиды кластеров из векторов постов, с которыми пользователь успешно провзаимодействовал за 6 месяцев.
2.3 на выходе для каждого долгосрочного и краткосрочного вкуса мы получаем по N наиболее похожи постов из Vector Index. Это происходит в онлайне.
2.4 Ранжирование происходит путем сбора набора фичей, который выходит за рамки данной статьи, вектора постов как фичи в ранкер не передаются.
3) Наш vector index позволяет искать похожие посты по id поста и по вектору поста. Для краткосрочных и долгосрочных вкусов хранимые данные в feature store отличаются:
для краткосрочных мы храним только ID поста,
для долгосрочных мы храним вектора постов-медоидов
Какой loss использовали при обучении, как я понял последовательно через модель проходит первый элемент пары, получаем embedding затем пропускаем второй элемент через сеть получаем embedding, затем считаем cosine similarity и используем какой-нибудь CosineEmbeddingLoss,
были ли негативные примеры в трейне, или только позитивные ?
Расчёт вкусов пользователя для ленты рекомендаций с применением item2vec-подхода