Skip to main content

A realtime recommendation system supporting online updates

Project description

rtrec: Realtime Recommendation Library in Python

PyPI version Supported Python versions CI status Licence

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.
  • Rust experimental Rust implementation

Supported Recommendation Algorithims

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


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)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

rtrec-0.1.6-py3-none-any.whl (46.3 kB view details)

Uploaded Python 3

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

Hashes for rtrec-0.1.6.tar.gz
Algorithm Hash digest
SHA256 8172ea08c1eda26c8e768f143587edcdeace15116a06c1f5aa5b990e3617b35a
MD5 e84f8b34cadcd62b1b781eca4f0162cb
BLAKE2b-256 149dfb18337b760ae451b1b3b29356ec7b8685b0939933d76bab7f2341bee9fd

See more details on using hashes here.

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

Hashes for rtrec-0.1.6-py3-none-any.whl
Algorithm Hash digest
SHA256 8a6f82043c6b8361db69d0eb4ebc76e2b1470e53406d060e0f7cdc21e6ec696a
MD5 0c495a1f90420b43e5d729115e4bb46d
BLAKE2b-256 58f36c9c6f0b3305d23d978ff0e7b464a44fea27eeabe3c51e569ab121cf4854

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page