Kami memiliki rilis baru Rekomendasi 1.2.0!
Begitu banyak perubahan sejak rilis terakhir kami. Kami memiliki pengujian penuh pada Python 3.8 hingga 3.11 (sekitar 1800 pengujian), peningkatan kinerja di banyak algoritme, peninjauan buku catatan, dan banyak lagi peningkatan lainnya.
Tujuan pemberi rekomendasi adalah untuk membantu peneliti, pengembang, dan peminat dalam membuat prototipe, bereksperimen, dan menghasilkan serangkaian sistem rekomendasi klasik dan canggih.
Rekomendasi adalah proyek di bawah Linux Foundation of AI and Data.
Repositori ini berisi contoh dan praktik terbaik untuk membangun sistem rekomendasi, yang disediakan sebagai notebook Jupyter. Contoh-contoh ini merinci pembelajaran kita pada lima tugas utama:
Beberapa utilitas disediakan dalam rekomendasi untuk mendukung tugas-tugas umum seperti memuat kumpulan data dalam format yang diharapkan oleh algoritme berbeda, mengevaluasi keluaran model, dan memisahkan data pelatihan/pengujian. Implementasi beberapa algoritme canggih disertakan untuk pembelajaran mandiri dan penyesuaian dalam aplikasi Anda sendiri. Lihat dokumentasi Pemberi Rekomendasi.
Untuk gambaran lebih rinci mengenai repositori, silakan lihat dokumen di halaman wiki.
Untuk beberapa skenario praktis dimana sistem rekomendasi telah diterapkan, lihat skenario.
Kami merekomendasikan conda untuk pengelolaan lingkungan, dan VS Code untuk pengembangan. Untuk menginstal paket rekomendasi dan menjalankan contoh notebook di 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.
Untuk informasi selengkapnya tentang pengaturan pada platform lain (misalnya, Windows dan macOS) dan konfigurasi yang berbeda (misalnya, GPU, Spark, dan fitur eksperimental), lihat Panduan Pengaturan.
Selain paket inti, disediakan juga beberapa tambahan, antara lain:
[gpu]
: Diperlukan untuk menjalankan model GPU.[spark]
: Diperlukan untuk menjalankan model Spark.[dev]
: Diperlukan untuk pengembangan repo.[all]
: [gpu]
| [spark]
| [dev]
[experimental]
: Model yang belum diuji secara menyeluruh dan/atau mungkin memerlukan langkah tambahan dalam pemasangan. Tabel di bawah mencantumkan algoritme rekomendasi yang saat ini tersedia di repositori. Buku catatan ditautkan di bawah kolom Contoh sebagai Mulai cepat, yang menampilkan contoh algoritme yang mudah dijalankan, atau sebagai Pembahasan mendalam, yang menjelaskan secara detail matematika dan implementasi algoritme.
Algoritma | Jenis | Keterangan | Contoh |
---|---|---|---|
Kuadrat Terkecil Bergantian (ALS) | Penyaringan Kolaboratif | Algoritme faktorisasi matriks untuk umpan balik eksplisit atau implisit dalam kumpulan data besar, dioptimalkan untuk skalabilitas dan kemampuan komputasi terdistribusi. Ia bekerja di lingkungan PySpark. | Mulai cepat / Menyelam lebih dalam |
Dekomposisi Nilai Singular Asinkron yang Penuh Perhatian (A2SVD) * | Penyaringan Kolaboratif | Algoritma berbasis sekuensial yang bertujuan untuk menangkap preferensi pengguna jangka panjang dan pendek menggunakan mekanisme perhatian. Ia bekerja di lingkungan CPU/GPU. | Mulai cepat |
Peringkat Personalisasi Cornac/Bayesian (BPR) | Penyaringan Kolaboratif | Algoritma faktorisasi matriks untuk memprediksi peringkat item dengan umpan balik implisit. Ia bekerja di lingkungan CPU. | Menyelam lebih dalam |
Cornac/Autoencoder Variasi Bilateral (BiVAE) | Penyaringan Kolaboratif | Model generatif untuk data diadik (misalnya interaksi pengguna-item). Ia bekerja di lingkungan CPU/GPU. | Menyelam lebih dalam |
Rekomendasi Penyematan Urutan Konvolusional (Caser) | Penyaringan Kolaboratif | Algoritma berdasarkan konvolusi yang bertujuan untuk menangkap preferensi umum pengguna dan pola sekuensial. Ia bekerja di lingkungan CPU/GPU. | Mulai cepat |
Jaringan Sadar Pengetahuan Mendalam (DKN) * | Pemfilteran Berbasis Konten | Algoritme pembelajaran mendalam yang menggabungkan grafik pengetahuan dan penyematan artikel untuk memberikan rekomendasi berita atau artikel. Ia bekerja di lingkungan CPU/GPU. | Mulai cepat / Menyelam lebih dalam |
Mesin Faktorisasi Dalam Ekstrim (xDeepFM) * | Penyaringan Kolaboratif | Algoritme berbasis pembelajaran mendalam untuk umpan balik implisit dan eksplisit dengan fitur pengguna/item. Ia bekerja di lingkungan CPU/GPU. | Mulai cepat |
FastAI Menyematkan Bias Titik (CEPAT) | Penyaringan Kolaboratif | Algoritme tujuan umum dengan penyematan dan bias untuk pengguna dan item. Ia bekerja di lingkungan CPU/GPU. | Mulai cepat |
Mesin LightFM/Faktorisasi | Penyaringan Kolaboratif | Algoritma Mesin Faktorisasi untuk masukan implisit dan eksplisit. Ia bekerja di lingkungan CPU. | Mulai cepat |
LightGBM/Pohon Peningkat Gradien * | Pemfilteran Berbasis Konten | Algoritme Gradient Boosting Tree untuk pelatihan cepat dan penggunaan memori rendah dalam masalah berbasis konten. Ia bekerja di lingkungan CPU/GPU/PySpark. | Mulai cepat di CPU / Pelajari lebih dalam tentang PySpark |
CahayaGCN | Penyaringan Kolaboratif | Algoritme pembelajaran mendalam yang menyederhanakan desain GCN untuk memprediksi umpan balik implisit. Ia bekerja di lingkungan CPU/GPU. | Menyelam lebih dalam |
GeoIMC * | Penyaringan Kolaboratif | Algoritme penyelesaian matriks yang memperhitungkan fitur pengguna dan item menggunakan optimasi gradien konjugasi Riemannian dan mengikuti pendekatan geometris. Ia bekerja di lingkungan CPU. | Mulai cepat |
GRU | Penyaringan Kolaboratif | Algoritme berbasis urutan yang bertujuan untuk menangkap preferensi pengguna jangka panjang dan pendek menggunakan jaringan saraf berulang. Ia bekerja di lingkungan CPU/GPU. | Mulai cepat |
VAE multinomial | Penyaringan Kolaboratif | Model generatif untuk memprediksi interaksi pengguna/item. Ia bekerja di lingkungan CPU/GPU. | Menyelam lebih dalam |
Rekomendasi Neural dengan Representasi Pengguna Jangka Panjang dan Pendek (LSTUR) * | Pemfilteran Berbasis Konten | Algoritme rekomendasi saraf untuk merekomendasikan artikel berita dengan pemodelan minat pengguna jangka panjang dan pendek. Ia bekerja di lingkungan CPU/GPU. | Mulai cepat |
Rekomendasi Neural dengan Attentive Multi-View Learning (NAML) * | Pemfilteran Berbasis Konten | Algoritme rekomendasi saraf untuk merekomendasikan artikel berita dengan pembelajaran multi-tampilan yang penuh perhatian. Ia bekerja di lingkungan CPU/GPU. | Mulai cepat |
Pemfilteran Kolaboratif Neural (NCF) | Penyaringan Kolaboratif | Algoritme pembelajaran mendalam dengan peningkatan kinerja untuk umpan balik implisit pengguna/item. Ia bekerja di lingkungan CPU/GPU. | Mulai cepat / Menyelam lebih dalam |
Rekomendasi Neural dengan Personalized Attention (NPA) * | Pemfilteran Berbasis Konten | Algoritme rekomendasi saraf untuk merekomendasikan artikel berita dengan jaringan perhatian yang dipersonalisasi. Ia bekerja di lingkungan CPU/GPU. | Mulai cepat |
Rekomendasi Neural dengan Multi-Head Self-Attention (NRMS) * | Pemfilteran Berbasis Konten | Algoritme rekomendasi saraf untuk merekomendasikan artikel berita dengan perhatian mandiri multi-kepala. Ia bekerja di lingkungan CPU/GPU. | Mulai cepat |
Rekomendasi Item Berikutnya (NextItNet) | Penyaringan Kolaboratif | Algoritma berdasarkan konvolusi dilatasi dan jaringan sisa yang bertujuan untuk menangkap pola sekuensial. Ini mempertimbangkan interaksi dan fitur pengguna/item. Ia bekerja di lingkungan CPU/GPU. | Mulai cepat |
Mesin Boltzmann Terbatas (RBM) | Penyaringan Kolaboratif | Algoritme berbasis jaringan saraf untuk mempelajari distribusi probabilitas yang mendasari umpan balik pengguna/item secara eksplisit atau implisit. Ia bekerja di lingkungan CPU/GPU. | Mulai cepat / Menyelam lebih dalam |
Penyelesaian Matriks Tingkat Rendah Riemannian (RLRMC) * | Penyaringan Kolaboratif | Algoritma faktorisasi matriks menggunakan optimasi gradien konjugasi Riemannian dengan konsumsi memori yang kecil untuk memprediksi interaksi pengguna/item. Ia bekerja di lingkungan CPU. | Mulai cepat |
Algoritma Sederhana untuk Rekomendasi (SAR) * | Penyaringan Kolaboratif | Algoritme berbasis kesamaan untuk umpan balik pengguna/item implisit. Ia bekerja di lingkungan CPU. | Mulai cepat / Menyelam lebih dalam |
Rekomendasi Sekuensial Perhatian Diri (SASRec) | Penyaringan Kolaboratif | Algoritma berbasis transformator untuk rekomendasi sekuensial. Ia bekerja di lingkungan CPU/GPU. | Mulai cepat |
Rekomendasi Terintegrasi Preferensi Jangka Pendek dan Jangka Panjang (SLi-Rec) * | Penyaringan Kolaboratif | Algoritme berbasis sekuensial yang bertujuan untuk menangkap preferensi pengguna jangka panjang dan pendek menggunakan mekanisme perhatian, pengontrol yang sadar waktu, dan pengontrol yang sadar konten. Ia bekerja di lingkungan CPU/GPU. | Mulai cepat |
Pemodelan Pengguna Sequential Multi-Minat-Sadar (SUM) * | Penyaringan Kolaboratif | Model pengguna sekuensial berbasis jaringan memori yang ditingkatkan yang bertujuan untuk menangkap berbagai kepentingan pengguna. Ia bekerja di lingkungan CPU/GPU. | Mulai cepat |
Rekomendasi Berurutan Melalui Personalized Transformer (SSEPT) | Penyaringan Kolaboratif | Algoritme berbasis transformator untuk rekomendasi sekuensial dengan penyematan Pengguna. Ia bekerja di lingkungan CPU/GPU. | Mulai cepat |
VAE standar | Penyaringan Kolaboratif | Model Generatif untuk memprediksi interaksi pengguna/item. Ia bekerja di lingkungan CPU/GPU. | Menyelam lebih dalam |
Dekomposisi Nilai Kejutan/Singular (SVD) | Penyaringan Kolaboratif | Algoritme faktorisasi matriks untuk memprediksi umpan balik peringkat eksplisit dalam kumpulan data kecil. Ia bekerja di lingkungan CPU/GPU. | Menyelam lebih dalam |
Frekuensi Jangka - Frekuensi Dokumen Terbalik (TF-IDF) | Pemfilteran Berbasis Konten | Algoritme berbasis kesamaan sederhana untuk rekomendasi berbasis konten dengan kumpulan data teks. Ia bekerja di lingkungan CPU. | Mulai cepat |
Sumpah Wabbit (VW) * | Pemfilteran Berbasis Konten | Algoritme pembelajaran online yang cepat, cocok untuk skenario di mana fitur/konteks pengguna terus berubah. Ini menggunakan CPU untuk pembelajaran online. | Menyelam lebih dalam |
Lebar dan Dalam | Penyaringan Kolaboratif | Algoritme pembelajaran mendalam yang dapat menghafal interaksi fitur dan menggeneralisasi fitur pengguna. Ia bekerja di lingkungan CPU/GPU. | Mulai cepat |
xBelajar/Mesin Faktorisasi (FM) & FM Sadar Lapangan (FFM) | Penyaringan Kolaboratif | Algoritma yang cepat dan hemat memori untuk memprediksi label dengan fitur pengguna/item. Ia bekerja di lingkungan CPU/GPU. | Menyelam lebih dalam |
CATATAN : * menunjukkan algoritma yang ditemukan/disumbangkan oleh Microsoft.
Algoritme dan utilitas independen atau inkubasi adalah kandidat untuk folder contrib. Ini akan menampung kontribusi yang mungkin tidak mudah masuk ke dalam repositori inti atau memerlukan waktu untuk memfaktorkan ulang atau mematangkan kode dan menambahkan pengujian yang diperlukan.
Algoritma | Jenis | Keterangan | Contoh |
---|---|---|---|
SARplus * | Penyaringan Kolaboratif | Penerapan SAR untuk Spark yang dioptimalkan | Mulai cepat |
Kami menyediakan buku catatan benchmark untuk mengilustrasikan bagaimana berbagai algoritma dapat dievaluasi dan dibandingkan. Dalam buku catatan ini, kumpulan data MovieLens dibagi menjadi kumpulan pelatihan/pengujian dengan rasio 75/25 menggunakan pemisahan bertingkat. Model rekomendasi dilatih menggunakan masing-masing algoritma pemfilteran kolaboratif di bawah ini. Kami menggunakan nilai parameter empiris yang dilaporkan dalam literatur di sini. Untuk metrik peringkat kami menggunakan k=10
(10 item teratas yang direkomendasikan). Kami menjalankan perbandingan pada Azure DSVM NC6s_v2 Standar (6 vCPU, memori 112 GB, dan 1 GPU P100). Spark ALS dijalankan dalam mode mandiri lokal. Dalam tabel ini kami menunjukkan hasil pada Movielens 100k, menjalankan algoritma selama 15 epoch.
Juga | PETA | nDCG@k | Presisi@k | Ingat @k | RMSE | MAE | R 2 | Varians yang Dijelaskan |
---|---|---|---|---|---|---|---|---|
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 | T/A | T/A | T/A | T/A |
BPR | 0,132478 | 0,441997 | 0,388229 | 0,212522 | T/A | T/A | T/A | T/A |
AI Cepat | 0,025503 | 0,147866 | 0,130329 | 0,053824 | 0,943084 | 0,744337 | 0,285308 | 0,287671 |
CahayaGCN | 0,088526 | 0,419846 | 0,379626 | 0,144336 | T/A | T/A | T/A | T/A |
NCF | 0,107720 | 0,396118 | 0,347296 | 0,180775 | T/A | T/A | T/A | T/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 |
Proyek ini menyambut baik kontribusi dan saran. Sebelum berkontribusi, silakan lihat pedoman kontribusi kami.
Proyek ini mematuhi Kode Etik ini untuk menumbuhkan komunitas yang ramah dan menginspirasi bagi semua.
Pengujian ini adalah build malam hari, yang menghitung pengujian asinkron. main
adalah cabang utama kami dan staging
adalah cabang pengembangan kami. Kami menggunakan pytest untuk menguji utilitas python di pemberi rekomendasi dan pelaksana buku catatan Rekomendasi untuk buku catatan.
Untuk informasi lebih lanjut tentang alur pengujian, silakan lihat dokumentasi pengujian.
Pengujian build setiap malam dijalankan setiap hari di AzureML.
Tipe Bangun | Cabang | Status | Cabang | Status | |
---|---|---|---|---|---|
CPU Linux | utama | memanggungkan | |||
GPU Linux | utama | memanggungkan | |||
Linux Spark | utama | memanggungkan |