A realtime recommendation system supporting online updates
Project description
rtrec: Realtime Recommendation Library in Python
A realtime recommendation system supporting online updates.
Highlights
- ❇️ Supporting online updates.
- ⚡️ Fast implementation (>=190k samples/sec training on laptop).
- ◍ efficient sparse data support.
- 🕑 decaying weights of user-item interactions based on recency.
experimental Rust implementation
Supported Recommendation Algorithims
- Sparse SLIM with time-weighted interactions.
- Factorization Machines using LightFM
Installation
pip install rtrec
Usage
Find usages in notebooks/examples.
Examples using Raw-level APIs
# Dataset consists of user, item, tstamp, rating
import time
current_unixtime = time.time()
interactions = [('user_1', 'item_1', current_unixtime, 5.0),
('user_2', 'item_2', current_unixtime, -2.0),
('user_2', 'item_1', current_unixtime, 3.0),
('user_2', 'item_4', current_unixtime, 3.0),
('user_1', 'item_3', current_unixtime, 4.0)]
# Fit SLIM model
from rtrec.models import SLIM
model = SLIM()
model.fit(interactions)
# can fit from streams using yield as follows:
def yield_interactions():
for interaction in interactions:
yield interaction
model.fit(yield_interactions())
# Recommend top-5 items for a user
recommendations = model.recommend('user_1', top_k=5)
assert recommendations == ["item_4", "item_2"]
Examples using high level DataFrame APIs
# load dataset
from rtrec.experiments.datasets import load_dataset
df = load_dataset(name='movielens_1m')
# Split data set by temporal user split
from rtrec.experiments.split import temporal_user_split
train_df, test_df = temporal_user_split(df)
# Initialize SLIM model with custom options
from rtrec.recommender import Recommender
from rtrec.models import SLIM
model = SLIM(min_value=0, max_value=15, decay_in_days=180, nn_feature_selection=50)
recommender = Recommender(model)
# Bulk fit
recommender.bulk_fit(train_df)
# Partial fit
from rtrec.experiments.split import temporal_split
test_df1, test_df2 = temporal_split(test_df, test_frac=0.5)
recommender.fit(test_df1, update_interaction=True, parallel=True)
# Evaluation
metrics = recommender.evaluate(test_df2, recommend_size=10, filter_interacted=True)
print(metrics)
# User to Item Recommendation
recommended = recommender.recommend(user=10, top_k=10, filter_interacted=True)
assert len(recommended) == 10
# Item to Item recommendation
similar_items = recommender.similar_items(query_items=[3,10], top_k=5)
assert len(similar_items) == 2
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
rtrec-0.1.6.tar.gz
(54.2 kB
view details)
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
rtrec-0.1.6-py3-none-any.whl
(46.3 kB
view details)
File details
Details for the file rtrec-0.1.6.tar.gz.
File metadata
- Download URL: rtrec-0.1.6.tar.gz
- Upload date:
- Size: 54.2 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.5.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
8172ea08c1eda26c8e768f143587edcdeace15116a06c1f5aa5b990e3617b35a
|
|
| MD5 |
e84f8b34cadcd62b1b781eca4f0162cb
|
|
| BLAKE2b-256 |
149dfb18337b760ae451b1b3b29356ec7b8685b0939933d76bab7f2341bee9fd
|
File details
Details for the file rtrec-0.1.6-py3-none-any.whl.
File metadata
- Download URL: rtrec-0.1.6-py3-none-any.whl
- Upload date:
- Size: 46.3 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.5.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
8a6f82043c6b8361db69d0eb4ebc76e2b1470e53406d060e0f7cdc21e6ec696a
|
|
| MD5 |
0c495a1f90420b43e5d729115e4bb46d
|
|
| BLAKE2b-256 |
58f36c9c6f0b3305d23d978ff0e7b464a44fea27eeabe3c51e569ab121cf4854
|