1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/mirrors-recommenders

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
Внести вклад в разработку кода
Синхронизировать код
Отмена
Подсказка: Поскольку Git не поддерживает пустые директории, создание директории приведёт к созданию пустого файла .keep.
Loading...
README.md

Что нового (май 2024 года)

У нас новый релиз — Recommenders 1.2.0!

Со времени нашего последнего релиза произошло много изменений. Мы провели полное тестирование на Python с 3.8 по 3.11 (около 1800 тестов), улучшили производительность многих алгоритмов, пересмотрели блокноты и внесли множество других улучшений.

Введение

Цель Recommenders — помочь исследователям, разработчикам и энтузиастам в прототипировании, экспериментировании и внедрении в производство ряда классических и современных систем рекомендаций.

Recommenders — это проект под эгидой Linux Foundation of AI and Data.

В этом репозитории содержатся примеры и лучшие практики для создания систем рекомендаций, представленные в виде блокнотов Jupyter. В примерах подробно описаны наши знания о пяти ключевых задачах:

  • Подготовка данных (examples/01_prepare_data): подготовка и загрузка данных для каждого алгоритма рекомендаций.
  • Модель (examples/00_quick_start): создание моделей с использованием различных классических и глубоких обучающих алгоритмов рекомендаций, таких как Alternating Least Squares (ALS) или eXtreme Deep Factorization Machines (xDeepFM).
  • Оценка (examples/03_evaluate): оценка алгоритмов с помощью офлайн-метрик.
  • Выбор модели и оптимизация (examples/04_model_select_and_optimize): настройка и оптимизация гиперпараметров для моделей рекомендаций.
  • Внедрение (examples/05_operationalize): внедрение моделей в производственную среду на Azure.

Несколько утилит предоставляются в 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 | [![azureml-cpu-nightly](https://github.com/microsoft/recommenders/actions/workflows/azureml-cpu-nightly.yml/badge.svg?branch=main)](https://github.com/microsoft/recommenders/actions/workflows/azureml-cpu-nightly.yml?query=branch%3Amain) | | staging | [![azureml-cpu-nightly](https://github.com/microsoft/recommenders/actions/workflows/azureml-cpu-nightly.yml/badge.svg?branch=staging)](https://github.com/microsoft/recommenders/actions/workflows/azureml-cpu-nightly.yml?query=branch%3Astaging) |
| **Linux GPU** | main | [![azureml-gpu-nightly](https://github.com/microsoft/recommenders/actions/workflows/azureml-gpu-nightly.yml/badge.svg?branch=main)](https://github.com/microsoft/recommenders/actions/workflows/azureml-gpu-nightly.yml?query=branch%3Amain) | | staging | [![azureml-gpu-nightly](https://github.com/microsoft/recommenders/actions/workflows/azureml-gpu-nightly.yml/badge.svg?branch=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 )

Вы можете оставить комментарий после Вход в систему

Введение

Рекомендации по работе с системами рекомендаций от Microsoft. Развернуть Свернуть
Python и 5 других языков
MIT
Отмена

Обновления

Пока нет обновлений

Участники

все

Недавние действия

Загрузить больше
Больше нет результатов для загрузки
1
https://api.gitlife.ru/oschina-mirror/mirrors-recommenders.git
git@api.gitlife.ru:oschina-mirror/mirrors-recommenders.git
oschina-mirror
mirrors-recommenders
mirrors-recommenders
main