Создание персонализированных рекомендательных систем с Milvus и PaddlePaddle
Введение
С непрерывным развитием сетевых технологий и постоянно расширяющимся масштабом электронной коммерции количество и разнообразие товаров быстро растут, и пользователям нужно тратить много времени, чтобы найти товары, которые они хотят купить. Это информационная перегрузка. Для решения этой проблемы появилась рекомендательная система.
Рекомендательная система является подмножеством системы фильтрации информации, которую можно использовать в различных областях, таких как фильмы, музыка, электронная коммерция и рекомендации Feed stream. Рекомендательная система выявляет персонализированные потребности и интересы пользователя путем анализа и интеллектуального анализа поведения пользователей и рекомендует информацию или продукты, которые могут быть интересны пользователю. В отличие от поисковых систем, рекомендательные системы не требуют от пользователей точно описывать свои потребности, а моделируют их историческое поведение, чтобы проактивно предоставлять информацию, соответствующую интересам и потребностям пользователей.
В этой статье мы используем PaddlePaddle, платформу глубокого обучения от Baidu, для построения модели и объединяем ее с Milvus, поисковой системой векторного сходства, чтобы построить персонализированную рекомендательную систему, которая может быстро и точно предоставлять пользователям интересную информацию.
Подготовка данных
В качестве примера мы берем MovieLens Million Dataset (ml-1m) [1]. Набор данных ml-1m содержит 1 000 000 отзывов о 4 000 фильмах от 6 000 пользователей, собранных лабораторией GroupLens Research. Исходные данные включают данные признаков фильма, признаки пользователя и пользовательскую оценку фильма, вы можете обратиться к ml-1m-README [2] .
Набор данных ml-1m включает 3 статьи .dat: movies.dat、users.dat и ratings.dat.movies.dat включает признаки фильма, см. пример ниже:
MovieID::Title::Genres
1::ToyStory(1995)::Animation|Children's|Comedy
Это означает, что идентификатор фильма — 1, а название — 《Toy Story》, который разделен на три категории. Эти три категории — анимация, детский и комедия.
users.dat включает признаки пользователя, см. пример ниже:
UserID::Gender::Age::Occupation::Zip-code
1::F::1::10::48067
Это означает, что ID пользователя — 1, женщина, младше 18 лет. ID профессии — 10.
ratings.dat включает признак оценки фильма, см. пример ниже:
UserID::MovieID::Rating::Timestamp 1::1193::5::978300760
То есть пользователь 1 оценивает фильм 1193 на 5 баллов.
Модель Fusion Recommendation
В системе персонализированных рекомендаций фильмов мы использовали модель Fusion Recommendation [3], которую реализовал PaddlePaddle. Эта модель создана на основе его промышленной практики.
Сначала признаки пользователя и признаки фильма подаются на вход нейронной сети, где:
- Признаки пользователя включают четыре атрибута информации: ID пользователя, пол, профессию и возраст.
- Признаки фильма включают три атрибута информации: ID фильма, ID типа фильма и название фильма.
Для признака пользователя сопоставьте ID пользователя с векторным представлением размерности 256, передайте его в полносвязный слой и выполните аналогичную обработку для других трех атрибутов. Затем представления признаков четырех атрибутов полностью соединяются и добавляются отдельно.
Для признаков фильма ID фильма обрабатывается способом, аналогичным ID пользователя. ID типа фильма напрямую вводится в полносвязный слой в виде вектора, а название фильма представляется вектором фиксированной длины с использованием текстовой сверточной нейронной сети. Затем представления признаков трех атрибутов полностью соединяются и добавляются отдельно.
После получения векторного представления пользователя и фильма вычислите их косинусное сходство как оценку системы персонализированных рекомендаций. Наконец, квадрат разности между оценкой сходства и истинной оценкой пользователя используется как функция потерь регрессионной модели.
Модель fusion recommendation PaddlePaddle.
Обзор системы
В сочетании с моделью рекомендаций слияния PaddlePaddle вектор признаков фильма, сгенерированный моделью, сохраняется в движке поиска векторного сходства Milvus, а признак пользователя используется как целевой вектор для поиска. Поиск сходства выполняется в Milvus, чтобы получить результат запроса в виде рекомендованных пользователю фильмов.
Модель рекомендаций слияния в сочетании с Milvus.
Метод внутреннего произведения (IP) предоставляется в Milvus для вычисления векторного расстояния. После нормализации данных сходство по внутреннему произведению соответствует результату косинусного сходства в модели рекомендаций слияния.
Применение персональной рекомендательной системы
Существует три шага в создании персонализированной рекомендательной системы с Milvus, подробности о том, как работать, см. в Mivus Bootcamp [4].
Шаг 1:Обучение модели
# run train.py
$ python train.py
Выполнение этой команды сгенерирует в каталоге модель recommender_system.inference.model, которая может преобразовывать данные фильмов и данные пользователей в векторы признаков, а также генерировать прикладные данные для хранения и извлечения в Milvus.
Шаг 2:Предобработка данных
# Data preprocessing, -f followed by the parameter raw movie data file name
$ python get_movies_data.py -f movies_origin.txt
Выполнение этой команды сгенерирует в каталоге тестовые данные movies_data.txt для выполнения предобработки данных фильмов.
Шаг 3:Реализация персональной рекомендательной системы с Milvus
# Implementing personal recommender system based on user conditions
$ python infer_milvus.py -a <age>-g <gender>-j <job>[-i]
Выполнение этой команды реализует персонализированные рекомендации для указанных пользователей.
Основной процесс:
- Через load_inference_model данные фильмов обрабатываются моделью для генерации вектора признаков фильма.
- Загрузите вектор признаков фильма в Milvus через milvus.insert.
- В соответствии с возрастом / полом / профессией пользователя, указанными параметрами, они преобразуются в вектор признаков пользователя, milvus.search_vectors используется для поиска по сходству, и возвращается результат с наивысшим сходством между пользователем и фильмом.
Прогноз пяти лучших фильмов, которые интересуют пользователя:
TopIdsTitleScore
03030Yojimbo2.9444923996925354
13871Shane2.8583481907844543
23467Hud2.849525213241577
31809Hana-bi2.826111316680908
43184Montana2.8119677305221558
Резюме
Вводя информацию о пользователе и информацию о фильме в модель рекомендаций слияния, мы можем получить оценки соответствия, а затем отсортировать оценки всех фильмов на основе пользователя, чтобы рекомендовать фильмы, которые могут быть интересны пользователю. В этой статье Milvus и PaddlePaddle объединяются для создания персонализированной рекомендательной системы. Milvus, движок векторного поиска, используется для хранения всех данных признаков фильмов, а затем в Milvus выполняется поиск по сходству для признаков пользователя. Результат поиска — это рейтинг фильмов, рекомендованный системой пользователю.
Движок поиска векторного сходства Milvus [5] совместим с различными платформами глубокого обучения, выполняя поиск по миллиардам векторов с откликом всего в миллисекунды. Вы можете с легкостью исследовать больше возможностей AI-приложений с Milvus!
Ссылки
- MovieLens Million Dataset (ml-1m): http://files.grouplens.org/datasets/movielens/ml-1m.zip
- ml-1m-README: http://files.grouplens.org/datasets/movielens/ml-1m-README.txt
- Fusion Recommendation Model by PaddlePaddle: https://www.paddlepaddle.org.cn/documentation/docs/zh/beginners_guide/basics/recommender_system/index.html#id7
- Bootcamp: https://github.com/milvus-io/bootcamp/tree/master/solutions/recommendation_system
- Milvus: https://milvus.io/en/
Читать далее

Zilliz Cloud Update: Tiered Storage, Business Critical Plan, Cross-Region Backup, and Pricing Changes
This release offers a rebuilt tiered storage with lower costs, a new Business Critical plan for enhanced security, and pricing updates, among other features.

Zilliz Cloud Update: Smarter Autoscaling for Cost Savings, Stronger Compliance with Audit Logs, and More
What's new in Zilliz Cloud? Smarter autoscaling with scale-down, audit logs GA, enhanced SSO, and Milvus 2.6 in Private Preview.

Zilliz Cloud Delivers Better Performance and Lower Costs with Arm Neoverse-based AWS Graviton
Zilliz Cloud adopts Arm-based AWS Graviton3 CPUs to cut costs, speed up AI vector search, and power billion-scale RAG and semantic search workloads.



