Skip to content

Latest commit

 

History

History
82 lines (67 loc) · 6.62 KB

case-description.md

File metadata and controls

82 lines (67 loc) · 6.62 KB

Рекомендательный ИИ для интернет-магазина

Датасет: ссылка

Проблематика, кейс: необходима разработка интеллектуальной рекомендательной системы для интернет-магазина, которая позволит увеличить продажи

Описание задачи:

Исходя из данных о поведении посетителей на сайте интернет-магазина, необходимо разработать модель для рекомендации товаров пользователям. Модель должна предсказывать топ 25 товаров, которые пользователь купит с наибольшей вероятностью в следующие 3 дня (период тестового датасета). Метрикой качества является Recall по купленным товарам. Пользователи, не купившие ни одного товара в вашей выдаче, в расчете метрики не учитываются.

Например, в сформированном вашей моделью списке из 25 товаров, оказалось 3 из 4х, которые пользователь реально купил. Recall, таким образом, составит ¾ = 0.75.

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

В распоряжении имеется 4 набора данных, содержащий следующие поля:

stokman_catalog_preprocessed.pq

  • add_date - дата добавления товара в магазин
  • shop_id - идентификатор магазина
  • product_id - идентификатор товара
  • category_id - идентификатор категории товаров
  • price - цена
  • title - закодированное название товара (в файле vectors.npz содержатся эмбединги оригинальных названий)
  • old_price - старая цена

train_actions.pq

  • user_id - идентификатор пользователя (формируется по cookies. Один пользователь может заходить с разных сайтов или устройств и иметь разные ID)
  • loc_user_id -
  • action - код действия пользователя
  • date - дата и время события
  • products - массив идентификаторов товаров
  • pageId - идентификатор страницы веб-сайта

catalog_vector_mapping.pq

  • product_id - идентификатор товара
  • vector_id - идентификатор вектора содержащего эмбединг названия товара из файла vectors.npz
  • vectors.npz - файл содержащий эмбединги названий товаров.

Признак action в train_actions.pq имеет следующую расшифровку:

  • 0 - view (просмотр товара)
  • 1 - like (лайк товара)
  • 2 - addB (добавление товара в корзину)
  • 3 - delB (удаление товара из корзины)
  • 4 - clearB (удаление всех товаров из корзины)
  • 5 - order (оформление заказа)
  • 6 - listB (посещение страницы корзины и вывод списка товаров в корзине)
  • 7 - visit (посещение страницы с товаром)
  • 8 - visitCategory (посещение страницы с группой товаров)
  • 9 - search (поиск товара)

Общие требования:

  • Эксперимент, его результирующие артефакты и модель должны логироваться в MLFlow
  • Код (пайплайн) предобработки данных и обучения модели должен быть разбит на отдельные скрипты, запускающиеся с помощью одной команды в нужной последовательности. Можно реализовать через собственный Python или консольный скрипт. Предпочтительно использовать workflow manager использующий DAG (snakemake или DVC)
  • Код должен быть написан в соответствии с PEP8
  • Зависимости проекта должны находиться под управлением одного из известных менеджеров и должны обеспечивать воспроизводимость эксперимента (pip, poetry)
  • Репозиторий должен быть обеспечен подробной инструкцией по запуску эксперимента в Readme файле

Состав решения:

  • Презентация решения должна отражать
    • Описание исходных данных
    • Используемый технологический стек и инструменты
    • Методологию проведения экспериментов
    • Методы обработки исходных данных
    • Основные гипотезы, проверяемые в ходе экспериментов
    • Описание проверяемых алгоритмов/архитектур
    • Подбор гиперпараметров
    • Результаты валидации моделей
  • Репозиторий с Readme (на Github/Gitlab), включающий:
    • Инструкции по развертыванию и установке решения для инференса (если требуется)
    • Инструкции по запуску пайплайнов обработки даннных и обучения модели
    • Модель и артефакты эксперимента в MLFlow или другом registry для хранения моделей