Wir haben eine neue Version von Recommenders 1.2.0!
So viele Änderungen seit unserer letzten Veröffentlichung. Wir haben vollständige Tests für Python 3.8 bis 3.11 (ca. 1800 Tests), eine verbesserte Leistung in vielen Algorithmen, überprüfte Notebooks und viele weitere Verbesserungen.
Das Ziel von Recommenders besteht darin, Forscher, Entwickler und Enthusiasten beim Prototyping, Experimentieren und der Produktion einer Reihe klassischer und hochmoderner Empfehlungssysteme zu unterstützen.
Recommenders ist ein Projekt der Linux Foundation of AI and Data.
Dieses Repository enthält Beispiele und Best Practices für die Erstellung von Empfehlungssystemen, bereitgestellt als Jupyter-Notebooks. Die Beispiele beschreiben unsere Erkenntnisse zu fünf Schlüsselaufgaben:
In Empfehlungsmodulen werden mehrere Dienstprogramme bereitgestellt, um häufige Aufgaben zu unterstützen, z. B. das Laden von Datensätzen in dem von verschiedenen Algorithmen erwarteten Format, das Auswerten von Modellausgaben und das Aufteilen von Trainings-/Testdaten. Zum Selbststudium und zur Anpassung an Ihre eigenen Anwendungen sind Implementierungen mehrerer hochmoderner Algorithmen enthalten. Weitere Informationen finden Sie in der Recommenders-Dokumentation.
Eine detailliertere Übersicht über das Repository finden Sie in den Dokumenten auf der Wiki-Seite.
Einige der praktischen Szenarien, in denen Empfehlungssysteme angewendet wurden, finden Sie unter Szenarien.
Wir empfehlen Conda für das Umgebungsmanagement und VS Code für die Entwicklung. So installieren Sie das Empfehlungspaket und führen ein Beispielnotebook unter Linux/WSL aus:
# 1. Install gcc if it is not installed already. On Ubuntu, this could done by using the command
# sudo apt install gcc
# 2. Create and activate a new conda environment
conda create -n < environment_name > python=3.9
conda activate < environment_name >
# 3. Install the core recommenders package. It can run all the CPU notebooks.
pip install recommenders
# 4. create a Jupyter kernel
python -m ipykernel install --user --name < environment_name > --display-name < kernel_name >
# 5. Clone this repo within VSCode or using command line:
git clone https://github.com/recommenders-team/recommenders.git
# 6. Within VSCode:
# a. Open a notebook, e.g., examples/00_quick_start/sar_movielens.ipynb;
# b. Select Jupyter kernel <kernel_name>;
# c. Run the notebook.
Weitere Informationen zum Setup auf anderen Plattformen (z. B. Windows und macOS) und verschiedenen Konfigurationen (z. B. GPU, Spark und experimentelle Funktionen) finden Sie im Setup-Handbuch.
Zusätzlich zum Kernpaket werden auch mehrere Extras bereitgestellt, darunter:
[gpu]
: Wird für die Ausführung von GPU-Modellen benötigt.[spark]
: Wird zum Ausführen von Spark-Modellen benötigt.[dev]
: Wird für die Entwicklung des Repos benötigt.[all]
: [gpu]
| [spark]
| [dev]
[experimental]
: Modelle, die nicht gründlich getestet wurden und/oder möglicherweise zusätzliche Schritte bei der Installation erfordern. In der folgenden Tabelle sind die derzeit im Repository verfügbaren Empfehlungsalgorithmen aufgeführt. Die Notizbücher sind in der Spalte „Beispiel“ als „Schnellstart“ verlinkt, der ein einfach auszuführendes Beispiel des Algorithmus zeigt, oder als „Deep Dive“, in dem die Mathematik und Implementierung des Algorithmus ausführlich erläutert werden.
Algorithmus | Typ | Beschreibung | Beispiel |
---|---|---|---|
Alternierende kleinste Quadrate (ALS) | Kollaboratives Filtern | Matrixfaktorisierungsalgorithmus für explizites oder implizites Feedback in großen Datensätzen, optimiert für Skalierbarkeit und verteilte Rechenfähigkeit. Es funktioniert in der PySpark-Umgebung. | Schnellstart / Tieftauchen |
Aufmerksame asynchrone Singularwertzerlegung (A2SVD) * | Kollaboratives Filtern | Sequenzbasierter Algorithmus, der darauf abzielt, mithilfe eines Aufmerksamkeitsmechanismus sowohl langfristige als auch kurzfristige Benutzerpräferenzen zu erfassen. Es funktioniert in der CPU/GPU-Umgebung. | Schnellstart |
Cornac/Bayesianisches personalisiertes Ranking (BPR) | Kollaboratives Filtern | Matrixfaktorisierungsalgorithmus zur Vorhersage des Artikelrankings mit implizitem Feedback. Es funktioniert in der CPU-Umgebung. | Tiefer Tauchgang |
Cornac/Bilateraler Variationaler Autoencoder (BiVAE) | Kollaboratives Filtern | Generatives Modell für dyadische Daten (z. B. Benutzer-Element-Interaktionen). Es funktioniert in der CPU/GPU-Umgebung. | Tiefer Tauchgang |
Empfehlung zur Einbettung von Faltungssequenzen (Caser) | Kollaboratives Filtern | Auf Faltungen basierender Algorithmus, der darauf abzielt, sowohl die allgemeinen Präferenzen des Benutzers als auch sequentielle Muster zu erfassen. Es funktioniert in der CPU/GPU-Umgebung. | Schnellstart |
Deep Knowledge-Aware Network (DKN) * | Inhaltsbasierte Filterung | Deep-Learning-Algorithmus mit einem Wissensgraphen und Artikeleinbettungen zur Bereitstellung von Nachrichten oder Artikelempfehlungen. Es funktioniert in der CPU/GPU-Umgebung. | Schnellstart / Tieftauchgang |
Extreme Deep Factorization Machine (xDeepFM) * | Kollaboratives Filtern | Deep-Learning-basierter Algorithmus für implizites und explizites Feedback zu Benutzer-/Artikelfunktionen. Es funktioniert in der CPU/GPU-Umgebung. | Schnellstart |
FastAI Embedding Dot Bias (FAST) | Kollaboratives Filtern | Allzweckalgorithmus mit Einbettungen und Verzerrungen für Benutzer und Elemente. Es funktioniert in der CPU/GPU-Umgebung. | Schnellstart |
LightFM/Faktorisierungsmaschine | Kollaboratives Filtern | Faktorisierungsmaschinenalgorithmus für implizite und explizite Rückmeldungen. Es funktioniert in der CPU-Umgebung. | Schnellstart |
LightGBM/Gradient Boosting Tree * | Inhaltsbasierte Filterung | Gradient Boosting Tree-Algorithmus für schnelles Training und geringe Speichernutzung bei inhaltsbasierten Problemen. Es funktioniert in den CPU-/GPU-/PySpark-Umgebungen. | Schneller Einstieg in die CPU / Tiefer Einblick in PySpark |
LightGCN | Kollaboratives Filtern | Deep-Learning-Algorithmus, der das Design von GCN zur Vorhersage impliziter Rückmeldungen vereinfacht. Es funktioniert in der CPU/GPU-Umgebung. | Tiefer Tauchgang |
GeoIMC * | Kollaboratives Filtern | Matrixvervollständigungsalgorithmus, der Benutzer- und Artikelmerkmale mithilfe der Riemannschen konjugierten Gradientenoptimierung berücksichtigt und einem geometrischen Ansatz folgt. Es funktioniert in der CPU-Umgebung. | Schnellstart |
GRU | Kollaboratives Filtern | Sequenzbasierter Algorithmus, der darauf abzielt, mithilfe rekurrenter neuronaler Netze sowohl langfristige als auch kurzfristige Benutzerpräferenzen zu erfassen. Es funktioniert in der CPU/GPU-Umgebung. | Schnellstart |
Multinomiale VAE | Kollaboratives Filtern | Generatives Modell zur Vorhersage von Benutzer-/Artikelinteraktionen. Es funktioniert in der CPU/GPU-Umgebung. | Tiefer Tauchgang |
Neuronale Empfehlung mit lang- und kurzfristigen Benutzerrepräsentationen (LSTUR) * | Inhaltsbasierte Filterung | Neuronaler Empfehlungsalgorithmus zur Empfehlung von Nachrichtenartikeln mit lang- und kurzfristiger Benutzerinteressenmodellierung. Es funktioniert in der CPU/GPU-Umgebung. | Schnellstart |
Neuronale Empfehlung mit aufmerksamem Multi-View-Lernen (NAML) * | Inhaltsbasierte Filterung | Neuronaler Empfehlungsalgorithmus zur Empfehlung von Nachrichtenartikeln mit aufmerksamem Multi-View-Lernen. Es funktioniert in der CPU/GPU-Umgebung. | Schnellstart |
Neuronale kollaborative Filterung (NCF) | Kollaboratives Filtern | Deep-Learning-Algorithmus mit verbesserter Leistung für implizites Benutzer-/Element-Feedback. Es funktioniert in der CPU/GPU-Umgebung. | Schnellstart / Tieftauchen |
Neuronale Empfehlung mit personalisierter Aufmerksamkeit (NPA) * | Inhaltsbasierte Filterung | Neuronaler Empfehlungsalgorithmus zur Empfehlung von Nachrichtenartikeln mit personalisiertem Aufmerksamkeitsnetzwerk. Es funktioniert in der CPU/GPU-Umgebung. | Schnellstart |
Neuronale Empfehlung mit Multi-Head Self-Attention (NRMS) * | Inhaltsbasierte Filterung | Neuronaler Empfehlungsalgorithmus zur Empfehlung von Nachrichtenartikeln mit Multi-Head-Selbstaufmerksamkeit. Es funktioniert in der CPU/GPU-Umgebung. | Schnellstart |
Nächste Artikelempfehlung (NextItNet) | Kollaboratives Filtern | Algorithmus, der auf erweiterten Faltungen und einem Restnetzwerk basiert und darauf abzielt, sequentielle Muster zu erfassen. Es berücksichtigt sowohl Benutzer-/Elementinteraktionen als auch Funktionen. Es funktioniert in der CPU/GPU-Umgebung. | Schnellstart |
Eingeschränkte Boltzmann-Maschinen (RBM) | Kollaboratives Filtern | Auf einem neuronalen Netzwerk basierender Algorithmus zum Erlernen der zugrunde liegenden Wahrscheinlichkeitsverteilung für explizites oder implizites Benutzer-/Element-Feedback. Es funktioniert in der CPU/GPU-Umgebung. | Schnellstart / Tieftauchen |
Riemannsche Low-Rank-Matrix-Vervollständigung (RLRMC) * | Kollaboratives Filtern | Matrixfaktorisierungsalgorithmus unter Verwendung der Riemannschen konjugierten Gradientenoptimierung mit geringem Speicherverbrauch zur Vorhersage von Benutzer-/Elementinteraktionen. Es funktioniert in der CPU-Umgebung. | Schnellstart |
Einfacher Empfehlungsalgorithmus (SAR) * | Kollaboratives Filtern | Ähnlichkeitsbasierter Algorithmus für implizites Benutzer-/Artikel-Feedback. Es funktioniert in der CPU-Umgebung. | Schnellstart / Tieftauchen |
Selbstaufmerksame sequentielle Empfehlung (SASRec) | Kollaboratives Filtern | Transformer-basierter Algorithmus für sequentielle Empfehlungen. Es funktioniert in der CPU/GPU-Umgebung. | Schnellstart |
Integrierter Empfehlungsgeber für kurzfristige und langfristige Präferenzen (SLi-Rec) * | Kollaboratives Filtern | Sequenzbasierter Algorithmus, der darauf abzielt, sowohl langfristige als auch kurzfristige Benutzerpräferenzen mithilfe eines Aufmerksamkeitsmechanismus, eines zeitbewussten Controllers und eines inhaltsbewussten Controllers zu erfassen. Es funktioniert in der CPU/GPU-Umgebung. | Schnellstart |
Multiinteressenbewusste sequentielle Benutzermodellierung (SUM) * | Kollaboratives Filtern | Ein verbessertes speichernetzwerkbasiertes sequentielles Benutzermodell, das darauf abzielt, die vielfältigen Interessen der Benutzer zu erfassen. Es funktioniert in der CPU/GPU-Umgebung. | Schnellstart |
Sequentielle Empfehlung über personalisierten Transformator (SSEPT) | Kollaboratives Filtern | Transformer-basierter Algorithmus für sequentielle Empfehlungen mit Benutzereinbettung. Es funktioniert in der CPU/GPU-Umgebung. | Schnellstart |
Standard-VAE | Kollaboratives Filtern | Generatives Modell zur Vorhersage von Benutzer-/Artikelinteraktionen. Es funktioniert in der CPU/GPU-Umgebung. | Tiefer Tauchgang |
Überraschungs-/Singulärwertzerlegung (SVD) | Kollaboratives Filtern | Matrixfaktorisierungsalgorithmus zur Vorhersage expliziter Bewertungsrückmeldungen in kleinen Datensätzen. Es funktioniert in der CPU/GPU-Umgebung. | Tiefer Tauchgang |
Termhäufigkeit – Inverse Dokumenthäufigkeit (TF-IDF) | Inhaltsbasierte Filterung | Einfacher ähnlichkeitsbasierter Algorithmus für inhaltsbasierte Empfehlungen mit Textdatensätzen. Es funktioniert in der CPU-Umgebung. | Schnellstart |
Vowpal Wabbit (VW) * | Inhaltsbasierte Filterung | Schnelle Online-Lernalgorithmen, ideal für Szenarien, in denen sich Benutzerfunktionen/Kontext ständig ändern. Es nutzt die CPU für Online-Lernen. | Tiefer Tauchgang |
Breit und tief | Kollaboratives Filtern | Deep-Learning-Algorithmus, der sich Funktionsinteraktionen merken und Benutzerfunktionen verallgemeinern kann. Es funktioniert in der CPU/GPU-Umgebung. | Schnellstart |
xLearn/Factorization Machine (FM) und Field-Aware FM (FFM) | Kollaboratives Filtern | Schneller und speichereffizienter Algorithmus zur Vorhersage von Etiketten mit Benutzer-/Artikelmerkmalen. Es funktioniert in der CPU/GPU-Umgebung. | Tiefer Tauchgang |
HINWEIS : * kennzeichnet Algorithmen, die von Microsoft erfunden/beigesteuert wurden.
Unabhängige oder in der Entwicklung befindliche Algorithmen und Dienstprogramme sind Kandidaten für den Contrib-Ordner. Hier werden Beiträge untergebracht, die möglicherweise nicht einfach in das Kern-Repository passen oder Zeit benötigen, um den Code umzugestalten oder zu reifen und die erforderlichen Tests hinzuzufügen.
Algorithmus | Typ | Beschreibung | Beispiel |
---|---|---|---|
SARplus * | Kollaboratives Filtern | Optimierte Implementierung von SAR für Spark | Schnellstart |
Wir stellen ein Benchmark-Notebook zur Verfügung, um zu veranschaulichen, wie verschiedene Algorithmen bewertet und verglichen werden können. In diesem Notebook wird der MovieLens-Datensatz mithilfe einer geschichteten Aufteilung im Verhältnis 75/25 in Trainings-/Testsätze aufgeteilt. Mit jedem der folgenden kollaborativen Filteralgorithmen wird ein Empfehlungsmodell trainiert. Wir verwenden hier empirische Parameterwerte, die in der Literatur angegeben sind. Für Ranking-Metriken verwenden wir k=10
(Top 10 der empfohlenen Artikel). Wir führen den Vergleich auf einer Standard-NC6s_v2-Azure-DSVM (6 vCPUs, 112 GB Speicher und 1 P100-GPU) durch. Spark ALS wird im lokalen Standalone-Modus ausgeführt. In dieser Tabelle zeigen wir die Ergebnisse auf Movielens 100k, wobei die Algorithmen für 15 Epochen ausgeführt wurden.
Algo | KARTE | nDCG@k | Präzision@k | Rückruf@k | RMSE | MAE | R 2 | Erklärte Varianz |
---|---|---|---|---|---|---|---|---|
ALS | 0,004732 | 0,044239 | 0,048462 | 0,017796 | 0,965038 | 0,753001 | 0,255647 | 0,251648 |
BiVAE | 0,146126 | 0,475077 | 0,411771 | 0,219145 | N / A | N / A | N / A | N / A |
BPR | 0,132478 | 0,441997 | 0,388229 | 0,212522 | N / A | N / A | N / A | N / A |
FastAI | 0,025503 | 0,147866 | 0,130329 | 0,053824 | 0,943084 | 0,744337 | 0,285308 | 0,287671 |
LightGCN | 0,088526 | 0,419846 | 0,379626 | 0,144336 | N / A | N / A | N / A | N / A |
NCF | 0,107720 | 0,396118 | 0,347296 | 0,180775 | N / A | N / A | N / A | N / A |
SAR | 0,110591 | 0,382461 | 0,330753 | 0,176385 | 1.253805 | 1.048484 | -0,569363 | 0,030474 |
SVD | 0,012873 | 0,095930 | 0,091198 | 0,032783 | 0,938681 | 0,742690 | 0,291967 | 0,291971 |
Dieses Projekt freut sich über Beiträge und Vorschläge. Bevor Sie spenden, lesen Sie bitte unsere Beitragsrichtlinien.
Dieses Projekt hält sich an diesen Verhaltenskodex, um eine einladende und inspirierende Gemeinschaft für alle zu fördern.
Bei diesen Tests handelt es sich um die nächtlichen Builds, die die asynchronen Tests berechnen. main
ist unser Hauptzweig und staging
ist unser Entwicklungszweig. Wir verwenden Pytest zum Testen von Python-Dienstprogrammen in Empfehlungsgeräten und den Notebook-Executor von Recommenders für die Notebooks.
Weitere Informationen zu den Testpipelines finden Sie in der Testdokumentation.
Die nächtlichen Buildtests werden täglich auf AzureML ausgeführt.
Build-Typ | Zweig | Status | Zweig | Status | |
---|---|---|---|---|---|
Linux-CPU | hauptsächlich | Inszenierung | |||
Linux-GPU | hauptsächlich | Inszenierung | |||
Linux Spark | hauptsächlich | Inszenierung |