Skip to main content

LibRecommender

Overview

LibRecommender is an easy-to-use recommender system focused on end-to-end recommendation. The main features are:

  • Implement a number of popular recommendation algorithms such as SVD, DeepFM, BPR etc.

  • A hybrid system, allow user to use either collaborative-filtering or content-based features.

  • Ease of memory usage, automatically convert categorical features to sparse representation.

  • Suitable for both explicit and implicit datasets, and negative sampling can be used for implicit dataset.

  • Making use of Cython or Tensorflow to accelerate model training.

  • Provide end-to-end workflow, i.e. data handling / preprocessing -> model training -> evaluate -> serving.

Usage

pure collaborative-filtering example :
from libreco.dataset import DatasetPure   # pure data, algorithm svd++
from libreco.algorithms import SVDpp

conf = {
    "data_path": "path/to/your/data",
    "length": "all",
}

dataset = DatasetPure()
dataset.build_dataset(**conf)

svd = SVDpp(n_factors=32, n_epochs=200, lr=0.001, batch_size=4096, task="rating")
svd.fit(dataset, verbose=1)
print(svd.predict(1, 2))	     # predict preference of user 1 to item 2
print(svd.recommend_user(1, 7))	 # recommend 7 items for user 1
include features example :
from libreco.dataset import DatasetFeat   # feat data, algorithm DeepFM
from libreco.algorithms import DeepFmFeat

conf = {
    "data_path": "path/to/your/data",
    "length": 500000,
    "user_col": 0,
    "item_col": 1,
    "label_col": 2,
    "numerical_col": [4],
    "categorical_col": [3, 5, 6, 7, 8],
    "merged_categorical_col": None,
    "user_feature_cols": [3, 4, 5],
    "item_feature_cols": [6, 7, 8],
    "convert_implicit": True,
    "build_negative": True,
    "num_neg": 2,
    "sep": ",",
}

dataset = DatasetFeat(include_features=True)
dataset.build_dataset(**conf)

dfm = DeepFmFeat(lr=0.0002, n_epochs=10000, reg=0.1, embed_size=50,
                 batch_size=2048, dropout_rate=0.0, task="ranking", neg_sampling=True)
dfm.fit(dataset, pre_sampling=False, verbose=1)
print(dfm.predict(1, 10))             # predict preference of user 1 to item 10
print(dfm.recommend_user(1, 7))   # recommend 7 items for user 1

Data Format

JUST normal data format, each line represents a sample. By default, model assumes that user, item, and label column index are 0, 1, and 2, respectively. But you need to specify user, item, and label column index if that’s not the case. For Example, the movielens-1m dataset:

1::1193::5::978300760
1::661::3::978302109
1::914::3::978301968
1::3408::4::978300275

leads to the following settings in conf dict : "user_col": 0, "item_col": 1, "label_col": 2, "sep": "::" .

Besides, if you want to use some other meta features (e.g., age, sex, category etc.), numerical and categorical column index must be assigned. For example, "numerical_col": [4], "categorical_col": [3, 5, 6, 7, 8], which means all features must be in a same table.

Installation & Dependencies

From pypi: pip install LibRecommender

  • Python 3.5 +
  • tensorflow >= 1.12
  • numpy >= 1.15.4
  • pandas >= 0.23.4
  • scipy >= 1.2.1
  • scikit-learn >= 0.20.0

References

Algorithm Category Paper
userKNN / itemKNN pure Item-Based Collaborative Filtering Recommendation Algorithms
SVD pure Matrix Factorization Techniques for Recommender Systems
SVD ++ pure Factorization Meets the Neighborhood: a Multifaceted Collaborative Filtering Model
superSVD pure Factorization Meets the Neighborhood: a Multifaceted Collaborative Filtering Model
ALS pure 1. Matrix Completion via Alternating Least Square(ALS) /
2. Collaborative Filtering for Implicit Feedback Datasets /
3. Applications of the Conjugate Gradient Method for Implicit Feedback Collaborative Filtering
NCF pure Neural Collaborative Filtering
BPR pure BPR: Bayesian Personalized Ranking from Implicit Feedback
Wide & Deep feat Wide & Deep Learning for Recommender Systems
FM feat Factorization Machines
DeepFM feat DeepFM: A Factorization-Machine based Neural Network for CTR Prediction
YouTubeRec feat Deep Neural Networks for YouTube Recommendations

License

MIT


Metadata

Release files for LibRecommender 0.0.1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for LibRecommender 0.0.1
File Size Uploaded
LibRecommender-0.0.1.tar.gz 864.9 kB Details

Release files / LibRecommender-0.0.1.tar.gz

Download URL LibRecommender-0.0.1.tar.gz
Size 864.9 kB
Tags Source
SHA-256 checksum
How to use checksums
5b5b3f6cad3c8493ebadf6bf754f65d3fde910fe1eeaf09d18f9880dc38cbeb9
BLAKE2b-256 checksum
How to use checksums
a306c80ed1103394ee9e6dc9f31b1ac53ed66d00741f14d0b56acb1cd0d1e824
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/2.0.0 pkginfo/1.5.0.1 requests/2.22.0 setuptools/41.0.1 requests-toolbelt/0.9.1 tqdm/4.36.1 CPython/3.6.8

Release history Release notifications | RSS feed

1.5.2

23 release files

1.5.1

19 release files

1.5.0

19 release files

1.4.0

19 release files

1.3.0

19 release files

1.2.2

19 release files

1.2.1

19 release files

1.1.1

19 release files

1.0.1

16 release files

1.0.0

16 release files

0.8.0

16 release files

0.6.8

1 release file

0.6.6

1 release file

0.6.4

1 release file

0.6.2

1 release file

0.6.0

1 release file

0.4.0

1 release file

0.2.2

1 release file

0.2.0

1 release file

0.1.0

1 release file

0.0.8

1 release file

0.0.6

1 release file

This release

0.0.1 This release

1 release file

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page