Tools for recommendation systems development
Project description
ml-recsys-tools
Open source repo for various tools for recommender systems development work. Work in progress.
Main purpose is to provide a single wrapper for various recommender packages to train, tune, evaluate and get data in and recommendations / similarities out.
Installation:
Pip: includes only basic dependecies + lightfm for now: pip install ml_recsys_tools
Docker: recent docker image location of a pip install: artdgn/ml_recsys_tools:latest
Run in a docker: docker run -it --rm artdgn/ml_recsys_tools:latest python
Basic example:
# dataset: download and prepare dataframes
from ml_recsys_tools.datasets.prep_movielense_data import get_and_prep_data
rating_csv_path, users_csv_path, movies_csv_path = get_and_prep_data()
# read the interactions dataframe and create a data handler object and split to train and test
import pandas as pd
ratings_df = pd.read_csv(rating_csv_path)
from ml_recsys_tools.data_handlers.interaction_handlers_base import ObservationsDF
obs = ObservationsDF(ratings_df, uid_col='userid', iid_col='itemid')
train_obs, test_obs = obs.split_train_test(ratio=0.2)
# train and test LightFM recommender
from ml_recsys_tools.recommenders.lightfm_recommender import LightFMRecommender
lfm_rec = LightFMRecommender()
lfm_rec.fit(train_obs, epochs=10)
# print summary evaluation report:
print(lfm_rec.eval_on_test_by_ranking(test_obs.df_obs, prefix='lfm ', n_rec=100))
# get all recommendations and print a sample (training interactions are filtered out by default)
recs = lfm_rec.get_recommendations(lfm_rec.all_users, n_rec=5)
print(recs.sample(5))
# get all similarities and print a sample
simils = lfm_rec.get_similar_items(lfm_rec.all_items, n_simil=5)
print(simils.sample(10))
Recommender models and tools:
-
LightFM package based recommender.
-
Spotlight package based implicit recommender.
-
Implicit package based ALS recommender.
-
Serving / Tuning / Evaluation features added for most recommenders:
- Dataframes for all inputs and outputs
- adding external features (for LightFM hybrid mode)
- early stopping fit (for iterative models: LightFM, ALS, Spotlight)
- hyperparameter search
- fast batched methods for:
- user recommendation sampling
- similar items samplilng with different similarity measures
- similar users sampling
- evaluation by sampling and ranking
- Dataframes for all inputs and outputs
-
Additional recommender models:
-
Similarity based:
- cooccurence (items, users)
- generic similarity based (can be used with external features)
-
-
Ensembles:
- subdivision based (multiple recommenders each on subset of data - e.g. geographical region):
- geo based: simple grid, equidense grid, geo clustering
- LightFM and cooccurrence based
- combination based - combining recommendations from multiple recommenders
- similarity combination based - similarity based recommender on similarities from multiple recommenders
- cascade ensemble
- subdivision based (multiple recommenders each on subset of data - e.g. geographical region):
-
Interaction dataframe and sparse matrix handlers / builders:
- sampling, data splitting,
- external features matrix creation (additional item features), with feature engineering: binning / one*hot encoding (via pandas_sklearn)
- evaluation and ranking helpers
- handlers for observations coupled with external features and features with geo coordinates
- mappers for geo features, observations, recommendations, similarities etc.
-
Evaluation utils:
- score reports on lightfm metrics (AUC, precision, recall, reciprocal)
- n-DCG, and n-MRR metrics, n-precision / recall
- references: best possible ranking and chance ranking
-
Utilities:
- hyperparameter tuning utils (by skopt)
- similarity calculation helpers (similarities, dot, top N, top N on sparse)
- parallelism utils
- sklearn transformer extenstions (for feature engineering)
- google maps util for displaying geographical data
- logging, debug printouts decorators and other isntrumentation and inspection tools
- pandas utils
- data helpers: redis, s3
-
Examples:
- a basic example on movielens 1M demonstrating:
- basic data ingestion without any item/user features
- LightFM recommender: fit, evaluation, early stopping, hyper-param search, recommendations, similarities
- Cooccurrence recommender
- Two combination ensembles (Ranks and Simils)
- a basic example on movielens 1M demonstrating:
-
Still to add:
- add example in README.MD
- add and reorganize examples
- much more comments and docstrings
- more tests
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
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
File details
Details for the file ml_recsys_tools-0.5.2.4.tar.gz.
File metadata
- Download URL: ml_recsys_tools-0.5.2.4.tar.gz
- Upload date:
- Size: 58.7 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
8eda1195f682ad052f2531b6c325c02d33ec0d86cc9d058d71c9d59ac146cd07
|
|
| MD5 |
0288db141a6704f07431cfa76b0bc405
|
|
| BLAKE2b-256 |
12a15dc4e7a56322837464e29b98e794be300aa1e31d2eca6f2bb32cd084a252
|
File details
Details for the file ml_recsys_tools-0.5.2.4-py3-none-any.whl.
File metadata
- Download URL: ml_recsys_tools-0.5.2.4-py3-none-any.whl
- Upload date:
- Size: 75.5 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
e796bf53c2faeb5dbe7c9a0522065ac43e9b336634c9ed8989c33dddaa35017d
|
|
| MD5 |
1cfa15bc9c56c9eb7ff675a730e19d36
|
|
| BLAKE2b-256 |
afe002deeb0ed57251e352a36c576044a890aeaabc984e5b488509d1cdb267e4
|