新しいリリース Recommenders 1.2.0 がリリースされました。
前回のリリースから非常に多くの変更が加えられました。 Python 3.8 から 3.11 までの完全なテスト (約 1800 のテスト)、多くのアルゴリズムのパフォーマンスのアップグレード、ノートブックのレビュー、その他多くの改善が行われています。
Recommenders の目的は、研究者、開発者、愛好家がさまざまな古典的および最先端のレコメンデーション システムのプロトタイピング、実験、製品化を支援することです。
Recommenders は、Linux Foundation of AI and Data の下にあるプロジェクトです。
このリポジトリには、Jupyter ノートブックとして提供される、レコメンデーション システムを構築するための例とベスト プラクティスが含まれています。例では、5 つの主要なタスクに関する学習内容を詳しく説明します。
レコメンダーには、さまざまなアルゴリズムで期待される形式でのデータセットの読み込み、モデル出力の評価、トレーニング/テスト データの分割などの一般的なタスクをサポートするいくつかのユーティリティが提供されています。独習や独自のアプリケーションでのカスタマイズのために、いくつかの最先端のアルゴリズムの実装が含まれています。 Recommender のドキュメントを参照してください。
リポジトリの詳細な概要については、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/Bayesian パーソナライズド ランキング (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環境で動作します。 | 詳細な説明 |
ジオIMC * | 協調フィルタリング | リーマン共役勾配最適化を使用してユーザーとアイテムの特徴を考慮し、幾何学的アプローチに従う行列補完アルゴリズム。 CPU環境で動作します。 | クイックスタート |
GRU | 協調フィルタリング | リカレント ニューラル ネットワークを使用して長期および短期の両方のユーザーの好みをキャプチャすることを目的としたシーケンシャル ベースのアルゴリズム。 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) | 協調フィルタリング | 逐次推奨のためのトランスフォーマーベースのアルゴリズム。 CPU/GPU環境で動作します。 | クイックスタート |
短期および長期優先の統合レコメンダー (SLi-Rec) * | 協調フィルタリング | アテンション メカニズム、時間認識コントローラー、およびコンテンツ認識コントローラーを使用して、長期および短期の両方のユーザーの好みをキャプチャすることを目的としたシーケンシャル ベースのアルゴリズム。 CPU/GPU環境で動作します。 | クイックスタート |
マルチインタレスト認識シーケンシャル ユーザー モデリング (SUM) * | 協調フィルタリング | ユーザーの複数の興味を捉えることを目的とした、強化されたメモリ ネットワーク ベースのシーケンシャル ユーザー モデル。 CPU/GPU環境で動作します。 | クイックスタート |
Personalized Transformer (SSEPT) による逐次推奨 | 協調フィルタリング | ユーザー埋め込みによる逐次レコメンデーションのためのトランスフォーマーベースのアルゴリズム。 CPU/GPU環境で動作します。 | クイックスタート |
標準VAE | 協調フィルタリング | ユーザーとアイテムのインタラクションを予測するための生成モデル。 CPU/GPU環境で動作します。 | 詳細な説明 |
サプライズ/特異値分解 (SVD) | 協調フィルタリング | 小規模なデータセットで明示的な評価フィードバックを予測するための行列因数分解アルゴリズム。 CPU/GPU環境で動作します。 | 詳細な説明 |
用語頻度 - 逆文書頻度 (TF-IDF) | コンテンツベースのフィルタリング | テキスト データセットを使用したコンテンツベースのレコメンデーションのためのシンプルな類似度ベースのアルゴリズム。 CPU環境で動作します。 | クイックスタート |
ヴォウパル ワビット (VW) * | コンテンツベースのフィルタリング | 高速オンライン学習アルゴリズム。ユーザーの機能やコンテキストが絶えず変化するシナリオに最適です。オンライン学習にはCPUを使用します。 | 詳細な説明 |
広くて深い | 協調フィルタリング | 機能の相互作用を記憶し、ユーザーの機能を一般化できる深層学習アルゴリズム。 CPU/GPU環境で動作します。 | クイックスタート |
xLearn/因数分解マシン (FM) およびフィールドアウェア FM (FFM) | 協調フィルタリング | ユーザー/アイテムの特徴を使用してラベルを予測する、迅速でメモリ効率の高いアルゴリズム。 CPU/GPU環境で動作します。 | 詳細な説明 |
注: * は、Microsoft が発明/貢献したアルゴリズムを示します。
独立したアルゴリズムやインキュベーション中のアルゴリズムやユーティリティが contrib フォルダーの候補となります。これには、コア リポジトリに簡単に収まらないコントリビューション、またはコードをリファクタリングまたは成熟させて必要なテストを追加するのに時間がかかるコントリビューションが格納されます。
アルゴリズム | タイプ | 説明 | 例 |
---|---|---|---|
SARプラス* | 協調フィルタリング | 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 | RMSE | 前 | R2 | 説明された分散 |
---|---|---|---|---|---|---|---|---|
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 | 該当なし | 該当なし | 該当なし | 該当なし |
BPR | 0.132478 | 0.441997 | 0.388229 | 0.212522 | 該当なし | 該当なし | 該当なし | 該当なし |
ファストAI | 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 |
SVD | 0.012873 | 0.095930 | 0.091198 | 0.032783 | 0.938681 | 0.742690 | 0.291967 | 0.291971 |
このプロジェクトは貢献と提案を歓迎します。貢献する前に、貢献ガイドラインをご覧ください。
このプロジェクトは、すべての人を歓迎し、インスピレーションを与えるコミュニティを育成するために、この行動規範を遵守します。
これらのテストは夜間のビルドであり、非同期テストを計算します。 main
主要なブランチであり、 staging
開発ブランチです。レコメンダーの Python ユーティリティとノートブックの Recommenders ノートブック エグゼキューターをテストするために pytest を使用します。
テスト パイプラインの詳細については、テストのドキュメントを参照してください。
夜間のビルド テストは AzureML で毎日実行されます。
ビルドタイプ | 支店 | 状態 | 支店 | 状態 | |
---|---|---|---|---|---|
Linux CPU | 主要 | ステージング | |||
Linux GPU | 主要 | ステージング | |||
リナックススパーク | 主要 | ステージング |