У нас новый релиз — Recommenders 1.2.0!
Со времени нашего последнего релиза произошло много изменений. Мы провели полное тестирование на Python с 3.8 по 3.11 (около 1800 тестов), улучшили производительность многих алгоритмов, пересмотрели блокноты и внесли множество других улучшений.
Цель Recommenders — помочь исследователям, разработчикам и энтузиастам в прототипировании, экспериментировании и внедрении в производство ряда классических и современных систем рекомендаций.
Recommenders — это проект под эгидой Linux Foundation of AI and Data.
В этом репозитории содержатся примеры и лучшие практики для создания систем рекомендаций, представленные в виде блокнотов Jupyter. В примерах подробно описаны наши знания о пяти ключевых задачах:
Несколько утилит предоставляются в recommenders для поддержки общих задач, таких как загрузка наборов данных в формате, ожидаемом различными алгоритмами, оценка выходных данных модели и разделение данных обучения/тестирования. Включены реализации нескольких современных алгоритмов для самостоятельного изучения и настройки в собственных приложениях. См. документацию Recommenders.
Для более подробного обзора репозитория см. документы на вики-странице.
Некоторые практические сценарии применения систем рекомендаций см. в разделе scenarios.
Мы рекомендуем использовать conda для управления средой и VS Code для разработки. Чтобы установить пакет recommenders и запустить пример блокнота на Linux/WSL:
# 1. Установите gcc, если он ещё не установлен. В Ubuntu это можно сделать с помощью команды
sudo apt install gcc
# 2. Создайте и активируйте новую среду conda
conda create -n environment_name python=3.9
conda activate **3. Установите основной пакет рекомендательных систем.**
Он может работать со всеми ноутбуками на базе CPU.
pip install recommenders
**4. Создайте ядро Jupyter.**
python -m ipykernel install --user --name <environment_name> --display-name <kernel_name>
**5. Клонируйте этот репозиторий в VSCode или с помощью командной строки:**
git clone https://github.com/recommenders-team/recommenders.git
**6. В VSCode:**
а) откройте ноутбук, например, examples/00_quick_start/sar_movielens.ipynb;
б) выберите ядро Jupyter <kernel_name>;
в) запустите ноутбук.
Для получения дополнительной информации о настройке на других платформах (например, Windows и macOS) и различных конфигурациях (например, GPU, Spark и экспериментальные функции) см. руководство по установке [SETUP.md].
Помимо основного пакета, также предоставляются несколько дополнительных пакетов:
+ `[gpu]`: необходим для запуска моделей на GPU.
+ `[spark]`: необходим для запуска моделей Spark.
+ `[dev]`: необходим для разработки репозитория.
+ `[all]`: `[gpu]`, `[spark]`, `[dev]`.
+ `[experimental]`: модели, которые не были тщательно протестированы и/или могут потребовать дополнительных шагов при установке.
## Алгоритмы
В таблице ниже перечислены алгоритмы рекомендаций, доступные в репозитории. Ноутбуки связаны в столбце «Пример» как «Быстрый старт», демонстрирующий простой в запуске пример алгоритма, или как «Глубокое погружение», подробно объясняющий математику и реализацию алгоритма.
| Алгоритм | Тип | Описание | Пример |
|-----------|------|-------------|---------|
| Alternating Least Squares (ALS) | Совместная фильтрация | Алгоритм матричной факторизации для явной или неявной обратной связи в больших наборах данных, оптимизированный для масштабируемости и возможности распределённых вычислений. Работает в среде PySpark. | Быстрый старт [examples/00_quick_start/als_movielens.ipynb] / Глубокое погружение [examples/02_model_collaborative_filtering/als_deep_dive.ipynb] |
| Attentive Asynchronous Singular Value Decomposition (A2SVD)<sup>*</sup> | Совместная фильтрация | Последовательный алгоритм, который стремится уловить как долгосрочные, так и краткосрочные предпочтения пользователей с использованием механизма внимания. Работает в среде CPU/GPU. | Быстрый старт [examples/00_quick_start/sequential_recsys_amazondataset.ipynb] |
| Cornac/Bayesian Personalized Ranking (BPR) | Совместная фильтрация | Алгоритм матричной факторизации для прогнозирования ранжирования элементов с неявной обратной связью. Работает в среде CPU. | Глубокое погружение [examples/02_model_collaborative_filtering/cornac_bpr_deep_dive.ipynb] |
| Cornac/Bilateral Variational Autoencoder (BiVAE) | Совместная фильтрация | Генеративная модель для диадных данных (например, взаимодействия пользователь-элемент). Работает в среде CPU/GPU. | Глубокое погружение [examples/02_model_collaborative_filtering/cornac_bivae_deep_dive.ipynb] |
| Convolutional Sequence Embedding Recommendation (Caser) | Совместная фильтрация | Алгоритм, основанный на свёртках, который направлен на улавливание как общих предпочтений пользователя, так и последовательных паттернов. Работает в среде CPU/GPU. | Быстрый старт [examples/00_quick_start/sequential_recsys_amazondataset.ipynb] |
| Deep Knowledge-Aware Network (DKN)<sup>*</sup> | Контентная фильтрация | Алгоритм глубокого обучения, включающий граф знаний и вложения статей для предоставления рекомендаций по новостям или статьям. Работает в среде CPU/GPU. | Быстрый старт [examples/00_quick_start/dkn_MIND.ipynb] / Глубокое погружение [examples/02_model_content_based_filtering/dkn_deep_dive.ipynb] |
| Extreme Deep Factorization Machine (xDeepFM)<sup>*</sup> | Совместная фильтрация | Основанный на глубоком обучении алгоритм для неявной и явной обратной связи с функциями пользователей и элементов. Работает в среде CPU/GPU. | Быстрый старт [examples/00_quick_start/xdeepfm_criteo.ipynb] |
| FastAI Embedding Dot Bias (FAST) | Совместная фильтрация | Универсальный алгоритм со встраиваниями и смещениями для пользователей и элементов. Работает в среде CPU/GPU. | Быстрый старт [examples/00_quick_start/fastai_movielens.ipynb] |
| LightFM/Factorization Machine | Совместная фильтрация | Факторизационная машина для явной и неявной обратных связей. Используя каждый из алгоритмов совместной фильтрации ниже. Мы используем эмпирические значения параметров, указанные в литературе [здесь](http://mymedialite.net/examples/datasets.html). Для ранжирования метрик мы используем k=10 (топ-10 рекомендуемых элементов).
Мы проводим сравнение на стандартном NC6s_v2 [Azure DSVM](https://azure.microsoft.com/en-us/services/virtual-machines/data-science-virtual-machines/) (6 vCPUs, 112 ГБ памяти и 1 GPU P100). Spark ALS работает в локальном автономном режиме. В этой таблице показаны результаты для Movielens 100k, алгоритмы запускались в течение 15 эпох.
| Алгоритм | MAP | nDCG@k | Precision@k | Recall@k | RMSE | MAE | R<sup>2</sup> | Explained Variance |
| --- | --- | --- | --- | --- | --- | --- | --- | --- |
| [ALS](examples/00_quick_start/als_movielens.ipynb) | 0,004732 | 0,044239 | 0,048462 | 0,017796 | 0,965038 | 0,753001 | 0,255647 | 0,251648 |
| [BiVAE](examples/02_model_collaborative_filtering/cornac_bivae_deep_dive.ipynb) | 0,146126 | 0,475077 | 0,411771 | 0,219145 | N/A | N/A | N/A | N/A |
| [BPR](examples/02_model_collaborative_filtering/cornac_bpr_deep_dive.ipynb) | 0,132478 | 0,441997 | 0,388229 | 0,212522 | N/A | N/A | N/A | N/A |
| [FastAI](examples/00_quick_start/fastai_movielens.ipynb) | 0,025503 | 0,147866 | 0,130329 | 0,053824 | 0,943084 | 0,744337 | 0,285308 | 0,287671 |
| [LightGCN](examples/02_model_collaborative_filtering/lightgcn_deep_dive.ipynb) | 0,088526 | 0,419846 | 0,379626 | 0,144336 | N/A | N/A | N/A | N/A |
| [NCF](examples/02_model_collaborative_filtering/ncf_deep_dive.ipynb) | 0,107720 | 0,396118 | 0,347296 | 0,180775 | N/A | N/A | N/A | N/A |
| [SAR](examples/00_quick_start/sar_movielens.ipynb) | 0,110591 | 0,382461 | 0,330753 | 0,176385 | 1,253805 | 1,048484 | -0,569363 | 0,030474 |
| [SVD](examples/02_model_collaborative_filtering/surprise_svd_deep_dive.ipynb) | 0,012873 | 0,095930 | 0,091198 | 0,032783 | 0,938681 | 0,742690 | 0,291967 | 0,291971 |
## Вклад
Этот проект приветствует вклад и предложения. Прежде чем вносить свой вклад, ознакомьтесь с нашими [рекомендациями по внесению вклада](CONTRIBUTING.md).
В этом проекте соблюдается [Кодекс поведения с открытым исходным кодом Microsoft](CODE_OF_CONDUCT.md), чтобы создать гостеприимное и вдохновляющее сообщество для всех.
## Статус сборки
Эти тесты являются ночными сборками, которые выполняют асинхронные тесты. `main` — наша основная ветвь, а `staging` — наша ветка разработки. Мы используем [pytest](https://docs.pytest.org/) для тестирования утилит Python в [recommenders](recommenders) и исполнитель записных книжек Recommenders [notebook utils](recommenders/utils/notebook_utils.py) для [записных книжек](examples).
Для получения дополнительной информации о конвейерах тестирования см. [документацию по тестированию](tests/README.md).
### Состояние ночных сборок AzureML
Ночные тесты сборки ежедневно выполняются на AzureML.
| Тип сборки | Ветвь | Статус | | Ветвь | Статус |
| --- | --- | --- | --- | --- | --- |
| **Linux CPU** | main | [](https://github.com/microsoft/recommenders/actions/workflows/azureml-cpu-nightly.yml?query=branch%3Amain) | | staging | [](https://github.com/microsoft/recommenders/actions/workflows/azureml-cpu-nightly.yml?query=branch%3Astaging) |
| **Linux GPU** | main | [](https://github.com/microsoft/recommenders/actions/workflows/azureml-gpu-nightly.yml?query=branch%3Amain) | | staging | [](https://github.com/microsoft/recommenders/actions/workflows/azureml-gpu-nightly.yml?query=branch%3Astaging) |
| **Linux Spark** | main | ## Литература
- Ли Д., Лянь Ц., Чжан Л., Жэнь К., Лу Д., У Т., Се Х. «Системы рекомендаций: границы и практика». Издательство Springer, Пекин, 2024. [Доступно по этой ссылке](https://www.amazon.com/Recommender-Systems-Frontiers-Practices-Dongsheng/dp/9819989639/).
- Аргириу А., Гонсалес-Фьерро М., Чжан Л. «Microsoft Recommenders: лучшие практики для производственных рекомендательных систем». Международная всемирная конференция WWW 2020: Тайбэй, 2020. Доступно онлайн: https://dl.acm.org/doi/abs/10.1145/3366424.3382692
- Грэм С., Мин Дж. К., Ву Т. «Инструменты Microsoft Recommenders для ускорения разработки рекомендательных систем». RecSys '19: Материалы 13-й конференции ACM по рекомендательным системам, 2019. Доступно онлайн: https://dl.acm.org/doi/10.1145/3298689.3346967
- Чжан Л., Ву Т., Се X., Аргириу А., Гонсалес-Фьерро М. и Лянь Дж. «Создание готовой к производству системы рекомендаций в масштабе». Конференция ACM SIGKDD по обнаружению знаний и интеллектуальному анализу данных 2019 (KDD 2019), 2019 г.
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Опубликовать ( 0 )