Library
Recommender System
Top level API intended for use by applications. The system owns several factories for available datasets/splitters/algorithms/metrics which are modular and extendable. Computations are done multithreaded and supports functionality for:
- Aborting an active computation
- Running a new experiment
- Validating an existing experiment for an additional number of runs
Algorithms
Base algorithm interface, divided into predictors and recommenders.
Separate factories to define available algorithms.
Elliot recommenders
- FunkSVD
- ItemKNN
- MultiVAE
- MostPop
- PureSVD
- Random
- SVDpp
- UserKNN
Implicit recommenders
- AlternatingLeastSquares
- BayesianPersonalizedRankings
- LogisticMatrixFactorization
LensKit predictors/recommenders
- Biased Matrix Factorization
- Implicit Matrix Factorization
- ItemItem KNN
- PopScore
- Random (recommender only)
- UserUser KNN
Surprise predictors
- BaselineOnly (ALS and SGD)
- CoClustering
- NMF (Non-negative Matrix Factorization)
- NormalPredictor
- SlopeOne
- SVD (Funk)
- SVDpp
Data
Abstract dataset and registry to define available sets.
Loading
Dataloaders to preprocess datasets into a standard format:
- LFM-360K
- LFM-1B
Splitting
Abstract data splitter to divide a dataset into a train and test set.
Separate factory to define available splitting methods.
- Random splitting
- Temporal splitting
Events
Centralised event dispatcher supporting multiple event listeners. Numerous events are available and categorised under:
- Configuration Parsing
- Data Pipeline
- Model Pipeline
- Evaluation Pipeline
- IO
Experiment
For both prediction and recommendation experiment, it supports:
- One or more Datasets
- One or more Algorithms
- Zero or more Metrics
Experiments can be specified using two types of configurations, which are interchangeable:
1. Python Dataclasses
2. YML file
Configurations are parsed to handle erroneous input and where possible to use defaults.
Metrics
Base evaluator interface to process supported metrics.
Separate factory to define available metrics.
LensKit evaluator
- NDCGK
- PK
- RK
- MRR
- RMSE
- MAE
Rexmex evaluator
- Item coverage
- User coverage
- Intra-list similarity
- Novelty
Pipelines
Data Pipeline
- Dataset Matrix Loading
- Dataset Train Test Splitting
Model Pipeline
- Algorithm loading with Parameters
- Algorithm training with a Train Set
- Algorithm testing with a Test Set and saving the results to a file
- User item predictions for known ratings
- User topK item recommendations
Evaluation Pipeline
- Metric loading with Parameters
- Metric evaluates the computed item results and saving it to a file