我們發布了新版本 Recommenders 1.2.0!
自上次發布以來發生了很多變化。我們對 Python 3.8 到 3.11 進行了全面測試(大約 1800 次測試),升級了許多演算法的性能,審查了筆記本,並進行了更多改進。
推薦者的目標是幫助研究人員、開發人員和愛好者製作一系列經典和最先進的推薦系統的原型、進行實驗並將其投入生產。
Recommenders 是 Linux 人工智慧和資料基金會下的一個專案。
此儲存庫包含建置推薦系統的範例和最佳實踐,以 Jupyter 筆記本的形式提供。這些範例詳細介紹了我們對五個關鍵任務的了解:
推薦器中提供了多個實用程式來支援常見任務,例如以不同演算法期望的格式載入資料集、評估模型輸出以及分割訓練/測試資料。其中包括多種最先進演算法的實現,供您在自己的應用程式中自學和自訂。請參閱推薦器文件。
有關儲存庫的更詳細概述,請參閱 wiki 頁面上的文件。
推薦系統的一些實際應用場景,請參閱場景。
我們建議使用 conda 進行環境管理,使用 VS Code 進行開發。若要安裝推薦程式套件並在 Linux/WSL 上執行範例筆記本:
# 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.
有關其他平台(例如 Windows 和 macOS)上的設定和不同配置(例如 GPU、Spark 和實驗功能)的更多信息,請參閱設定指南。
除了核心包之外,還提供了一些附加功能,包括:
[gpu]
:運行 GPU 模型所需。[spark]
:運行 Spark 模型所需。[dev]
:回購庫開發所需。[all]
: [gpu]
| [spark]
| [dev]
[experimental]
:未經徹底測試和/或可能需要額外安裝步驟的型號。 下表列出了儲存庫中目前可用的推薦演算法。筆記本在“示例”列下鏈接為“快速入門”,展示了易於運行的演算法示例,或者“深入探討”,詳細解釋了演算法的數學和實現。
演算法 | 類型 | 描述 | 例子 |
---|---|---|---|
交替最小平方法 (ALS) | 協同過濾 | 用於大型資料集中顯式或隱式回饋的矩陣分解演算法,針對可擴展性和分散式運算能力進行了最佳化。它在 PySpark 環境中運作。 | 快速入門/深入研究 |
注意力異步奇異值分解 (A2SVD) * | 協同過濾 | 基於順序的演算法,旨在使用注意力機制來捕獲長期和短期用戶偏好。它工作在CPU/GPU環境中。 | 快速啟動 |
Cornac/貝葉斯個人化排名(BPR) | 協同過濾 | 用於透過隱式回饋預測項目排名的矩陣分解演算法。它工作在CPU環境中。 | 深潛 |
Cornac/雙邊變分自動編碼器 (BiVAE) | 協同過濾 | 二元資料的生成模型(例如,使用者-專案互動)。它工作在CPU/GPU環境中。 | 深潛 |
卷積序列嵌入推薦(Caser) | 協同過濾 | 基於卷積的演算法,旨在捕捉使用者的一般偏好和順序模式。它工作在CPU/GPU環境中。 | 快速啟動 |
深度知識感知網絡 (DKN) * | 基於內容的過濾 | 深度學習演算法結合了知識圖和文章嵌入,用於提供新聞或文章推薦。它工作在CPU/GPU環境中。 | 快速入門/深入研究 |
極限深度分解機 (xDeepFM) * | 協同過濾 | 基於深度學習的演算法,用於具有使用者/項目特徵的隱式和顯式回饋。它工作在CPU/GPU環境中。 | 快速啟動 |
FastAI 嵌入點偏差 (FAST) | 協同過濾 | 具有用戶和項目的嵌入和偏差的通用演算法。它工作在CPU/GPU環境中。 | 快速啟動 |
LightFM/分解機 | 協同過濾 | 用於隱式和顯式回饋的分解機演算法。它工作在CPU環境中。 | 快速啟動 |
LightGBM/梯度提升樹* | 基於內容的過濾 | 梯度提升樹演算法,用於基於內容的問題中的快速訓練和低記憶體使用。它適用於 CPU/GPU/PySpark 環境。 | CPU 快速入門 / PySpark 深入研究 |
光GCN | 協同過濾 | 深度學習演算法簡化了用於預測隱式回饋的 GCN 的設計。它工作在CPU/GPU環境中。 | 深潛 |
地理資訊管理委員會* | 協同過濾 | 矩陣完成演算法,使用黎曼共軛梯度優化考慮使用者和項目特徵,並遵循幾何方法。它工作在CPU環境中。 | 快速啟動 |
格魯烏 | 協同過濾 | 基於序列的演算法,旨在使用循環神經網路捕獲長期和短期用戶偏好。它工作在CPU/GPU環境中。 | 快速啟動 |
多項式VAE | 協同過濾 | 用於預測使用者/項目互動的生成模型。它工作在CPU/GPU環境中。 | 深潛 |
具有長期和短期用戶表示的神經推薦 (LSTUR) * | 基於內容的過濾 | 用於透過長期和短期用戶興趣建模推薦新聞文章的神經推薦演算法。它工作在CPU/GPU環境中。 | 快速啟動 |
具有專注多視圖學習的神經推薦 (NAML) * | 基於內容的過濾 | 透過多視圖學習來推薦新聞文章的神經推薦演算法。它工作在CPU/GPU環境中。 | 快速啟動 |
神經協同過濾 (NCF) | 協同過濾 | 具有增強的使用者/專案隱式回饋效能的深度學習演算法。它工作在CPU/GPU環境中。 | 快速入門/深入研究 |
具有個人化注意力的神經推薦(NPA) * | 基於內容的過濾 | 利用個人化注意力網路推薦新聞文章的神經推薦演算法。它工作在CPU/GPU環境中。 | 快速啟動 |
具有多頭自註意力 (NRMS) 的神經推薦* | 基於內容的過濾 | 用於推薦具有多頭自註意力的新聞文章的神經推薦演算法。它工作在CPU/GPU環境中。 | 快速啟動 |
下一個專案推薦 (NextItNet) | 協同過濾 | 基於擴張卷積和殘差網路的演算法,旨在捕捉順序模式。它考慮用戶/項目互動和功能。它工作在CPU/GPU環境中。 | 快速啟動 |
受限玻爾茲曼機 (RBM) | 協同過濾 | 基於神經網路的演算法,用於學習顯式或隱式用戶/項目回饋的潛在機率分佈。它工作在CPU/GPU環境中。 | 快速入門/深入研究 |
黎曼低秩矩陣補全 (RLRMC) * | 協同過濾 | 使用黎曼共軛梯度優化的矩陣分解演算法以較小的記憶體消耗來預測用戶/項目交互。它工作在CPU環境中。 | 快速啟動 |
簡單推薦演算法 (SAR) * | 協同過濾 | 基於相似性的隱式使用者/項目回饋演算法。它工作在CPU環境中。 | 快速入門/深入研究 |
自註意力順序建議 (SASRec) | 協同過濾 | 基於 Transformer 的順序推薦演算法。它工作在CPU/GPU環境中。 | 快速啟動 |
短期和長期偏好綜合推薦器(SLi-Rec) * | 協同過濾 | 基於順序的演算法,旨在使用注意力機制、時間感知控制器和內容感知控制器來捕捉長期和短期用戶偏好。它工作在CPU/GPU環境中。 | 快速啟動 |
多興趣感知順序使用者建模 (SUM) * | 協同過濾 | 基於增強記憶網路的順序使用者模型,旨在捕捉使用者的多種興趣。它工作在CPU/GPU環境中。 | 快速啟動 |
透過個人化變壓器(SSEPT)的順序推薦 | 協同過濾 | 基於 Transformer 的演算法,用於具有用戶嵌入的順序推薦。它工作在CPU/GPU環境中。 | 快速啟動 |
標準VAE | 協同過濾 | 用於預測使用者/項目互動的生成模型。它工作在CPU/GPU環境中。 | 深潛 |
驚奇/奇異值分解 (SVD) | 協同過濾 | 用於預測小資料集中顯式評分回饋的矩陣分解演算法。它工作在CPU/GPU環境中。 | 深潛 |
詞頻 - 逆文檔頻率 (TF-IDF) | 基於內容的過濾 | 使用文字資料集進行基於內容的推薦的簡單的基於相似性的演算法。它工作在CPU環境中。 | 快速啟動 |
Vowpal Wabbit (大眾) * | 基於內容的過濾 | 快速的線上學習演算法,非常適合用戶特徵/上下文不斷變化的場景。它使用CPU進行線上學習。 | 深潛 |
寬而深 | 協同過濾 | 深度學習演算法,可以記憶特徵互動並概括使用者特徵。它工作在CPU/GPU環境中。 | 快速啟動 |
xLearn/因式分解機 (FM) 與現場感知 FM (FFM) | 協同過濾 | 快速且記憶體高效的演算法可預測具有使用者/專案特徵的標籤。它工作在CPU/GPU環境中。 | 深潛 |
注意: *表示由 Microsoft 發明/貢獻的演算法。
獨立或正在孵化的演算法和實用程式是 contrib 資料夾的候選者。這將容納可能不容易融入核心儲存庫的貢獻,或需要時間來重構或成熟程式碼並添加必要的測試。
演算法 | 類型 | 描述 | 例子 |
---|---|---|---|
SARplus * | 協同過濾 | Spark SAR 的最佳化實現 | 快速啟動 |
我們提供了一個基準筆記本來說明如何評估和比較不同的演算法。在此筆記本中,MovieLens 資料集使用分層分割以 75/25 的比例分割為訓練/測試集。使用下面的每種協同過濾演算法來訓練推薦模型。我們利用此處文獻中報告的經驗參數值。對於排名指標,我們使用k=10
(前 10 個推薦項目)。我們在標準 NC6s_v2 Azure DSVM(6 個 vCPU、112 GB 記憶體和 1 個 P100 GPU)上執行比較。 Spark ALS 以本地獨立模式運作。在此表中,我們顯示了在 Movielens 100k 上執行演算法 15 個週期的結果。
演算法 | 地圖 | nDCG@k | 精度@k | 回憶@k | 均方根誤差 | MAE | R 2 | 解釋變異數 |
---|---|---|---|---|---|---|---|---|
肌萎縮側索硬化症 | 0.004732 | 0.044239 | 0.048462 | 0.017796 | 0.965038 | 0.753001 | 0.255647 | 0.251648 |
比VAE | 0.146126 | 0.475077 | 0.411771 | 0.219145 | 不適用 | 不適用 | 不適用 | 不適用 |
業務流程再造 | 0.132478 | 0.441997 | 0.388229 | 0.212522 | 不適用 | 不適用 | 不適用 | 不適用 |
快速人工智慧 | 0.025503 | 0.147866 | 0.130329 | 0.053824 | 0.943084 | 0.744337 | 0.285308 | 0.287671 |
光GCN | 0.088526 | 0.419846 | 0.379626 | 0.144336 | 不適用 | 不適用 | 不適用 | 不適用 |
NCF | 0.107720 | 0.396118 | 0.347296 | 0.180775 | 不適用 | 不適用 | 不適用 | 不適用 |
SAR | 0.110591 | 0.382461 | 0.330753 | 0.176385 | 1.253805 | 1.048484 | -0.569363 | 0.030474 |
奇異值分解 | 0.012873 | 0.095930 | 0.091198 | 0.032783 | 0.938681 | 0.742690 | 0.291967 | 0.291971 |
該項目歡迎貢獻和建議。在貢獻之前,請參閱我們的貢獻指南。
本計畫遵守本行為準則,以便為所有人創造一個熱情好客、鼓舞人心的社群。
這些測試是夜間構建,用於計算非同步測試。 main
是我們的主要分支, staging
是我們的開發分支。我們使用 pytest 來測試推薦器中的 python 實用程式以及筆記本的推薦器筆記本執行器。
有關測試管道的更多信息,請參閱測試文檔。
每晚建置測試每天在 AzureML 上執行。
建置類型 | 分支 | 地位 | 分支 | 地位 | |
---|---|---|---|---|---|
Linux中央處理器 | 主要的 | 分期 | |||
Linux GPU | 主要的 | 分期 | |||
Linux 火花 | 主要的 | 分期 |