Предыстория Введение
Предыстория Введение
С непрерывным развитием сетевых технологий и постоянно расширяющимся масштабом электронной коммерции количество и разнообразие товаров стремительно растут, и пользователям приходится тратить много времени на поиск товаров, которые они хотят купить. Это и есть информационная перегрузка. Для решения этой проблемы и появилась рекомендательная система.
Рекомендательная система - это подмножество системы фильтрации информации, которая может использоваться в различных областях, таких как фильмы, музыка, электронная коммерция и рекомендации потоков. Рекомендательная система выявляет персонализированные потребности и интересы пользователя путем анализа и изучения его поведения и рекомендует информацию или продукты, которые могут быть интересны пользователю. В отличие от поисковых систем, рекомендательные системы не требуют от пользователей точного описания своих потребностей, а моделируют их историческое поведение, чтобы проактивно предоставлять информацию, соответствующую интересам и потребностям пользователя.
В этой статье мы используем PaddlePaddle, платформу глубокого обучения от Baidu, для построения модели и объединяем Milvus, поисковую систему векторного сходства, для создания персонализированной рекомендательной системы, которая может быстро и точно предоставлять пользователям интересную информацию.
Подготовка данных
В качестве примера мы берем MovieLens Million Dataset (ml-1m) [1]. Набор данных ml-1m содержит 1 000 000 рецензий на 4 000 фильмов от 6 000 пользователей, собранных исследовательской лабораторией GroupLens. Исходные данные включают в себя характеристики фильма, характеристики пользователя и пользовательский рейтинг фильма, вы можете обратиться к 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
Это означает, что идентификатор пользователя - 1, он женского пола и моложе 18 лет. Идентификатор профессии - 10.
ratings.dat включает характеристику рейтинга фильмов, см. пример ниже:
UserID::MovieID::Rating::Timestamp 1::1193::5::978300760
То есть пользователь 1 оценивает фильм 1193 в 5 баллов.
Модель слияния рекомендаций
В системе персонализированных рекомендаций фильмов мы использовали модель Fusion Recommendation Model [3], которую реализовала компания PaddlePaddle. Эта модель создана на основе ее производственной практики.
Сначала на вход нейронной сети подаются пользовательские характеристики и характеристики фильма, где:
- Характеристики пользователя включают в себя четыре атрибута: идентификатор пользователя, пол, профессию и возраст.
- Характеристики фильма включают в себя три атрибута: ID фильма, ID типа фильма и название фильма.
Для пользовательского признака отобразите идентификатор пользователя в векторное представление с размерностью 256, войдите в слой с полной связью и проделайте аналогичную обработку для трех других признаков. Затем представления четырех признаков полностью соединяются и добавляются отдельно.
Для признаков фильма идентификатор фильма обрабатывается аналогично идентификатору пользователя. Идентификатор типа фильма напрямую вводится в слой с полным подключением в виде вектора, а название фильма представляется вектором фиксированной длины с помощью текстовой конволюционной нейронной сети. Затем представления трех атрибутов полностью соединяются и добавляются по отдельности.
После получения векторного представления пользователя и фильма вычисляется их косинусоидальное сходство в качестве оценки системы персонализированных рекомендаций. Наконец, квадрат разницы между оценкой сходства и истинной оценкой пользователя используется в качестве функции потерь регрессионной модели.
1-user-film-personalized-recommender-Milvus.jpg
Обзор системы
В сочетании с моделью рекомендаций PaddlePaddle fusion, вектор характеристик фильма, созданный моделью, хранится в системе поиска векторного сходства Milvus, а характеристика пользователя используется в качестве целевого вектора для поиска. Поиск по сходству выполняется в Milvus, чтобы получить результат запроса в виде рекомендованных пользователю фильмов.
2-system-overview.jpg
Для вычисления расстояния между векторами в Milvus используется метод внутреннего произведения (IP). После нормализации данных сходство внутреннего произведения согласуется с результатом косинусного сходства в модели рекомендаций fusion.
Применение персональной рекомендательной системы
Построение системы персональных рекомендаций с помощью 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
Резюме
Введя информацию о пользователе и фильме в модель рекомендаций fusion, мы можем получить оценки сходства, а затем отсортировать оценки всех фильмов на основе данных о пользователе, чтобы рекомендовать фильмы, которые могут быть интересны пользователю. В этой статье объединены Milvus и PaddlePaddle для создания системы персонализированных рекомендаций. Milvus, векторная поисковая система, используется для хранения всех данных о характеристиках фильмов, а затем выполняется поиск по сходству с характеристиками пользователя в Milvus. Результатом поиска является рейтинг фильмов, рекомендованных системой пользователю.
Система векторного поиска по сходству Milvus [5] совместима с различными платформами глубокого обучения и ищет миллиарды векторов с откликом всего в миллисекунду. С 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/
- Подготовка данных
- Модель слияния рекомендаций
- Обзор системы
- Применение персональной рекомендательной системы
- Резюме
- Ссылка
On This Page
Try Managed Milvus for Free
Zilliz Cloud is hassle-free, powered by Milvus and 10x faster.
Get StartedLike the article? Spread the word