Package: implicit
ImplicitFast Python Collaborative Filtering for Implicit Datasets.This project provides fast Python implementations of several different popular recommendation algorithms for
implicit feedback datasets:Alternating Least Squares as described in the papersCollaborative Filtering for Implicit Feedback DatasetsandApplications of the Conjugate Gradient Method for Implicit
Feedback Collaborative Filtering.Bayesian Personalized Ranking.Logistic Matrix FactorizationItem-Item Nearest Neighbour models using Cosine, TFIDF or BM25 as a distance metric.All models have multi-threaded training routines, using Cython and OpenMP to fit the models in
parallel among all available CPU cores.  In addition, the ALS and BPR models both have custom CUDA
kernels - enabling fitting on compatible GPU's. Approximate nearest neighbours libraries such asAnnoy,NMSLIBandFaisscan also be used by Implicit tospeed up
making recommendations.InstallationImplicit can be installed from pypi with:pip install implicitInstalling with pip will use prebuilt binary wheels on x86_64 Linux, Windows
and OSX. These wheels include GPU support on Linux.Implicit can also be installed with conda:# CPU only package
conda install -c conda-forge implicit

# CPU+GPU package
conda install -c conda-forge implicit implicit-proc=*=gpuBasic Usageimportimplicit# initialize a modelmodel=implicit.als.AlternatingLeastSquares(factors=50)# train the model on a sparse matrix of user/item/confidence weightsmodel.fit(user_item_data)# recommend items for a userrecommendations=model.recommend(userid,user_item_data[userid])# find related itemsrelated=model.similar_items(itemid)The examples folder has a program showing how to use this tocompute similar artists on the
last.fm dataset.For more information see thedocumentation.Articles about ImplicitThese blog posts describe the algorithms that power this library:Finding Similar Music with Matrix FactorizationFaster Implicit Matrix FactorizationImplicit Matrix Factorization on the GPUApproximate Nearest Neighbours for Recommender SystemsDistance Metrics for Fun and ProfitThere are also several other articles about using Implicit to build recommendation systems:H&M Personalized Fashion Recommendations Kaggle CompetitionYandex Cup 2022: Like PredictionRecommending GitHub Repositories with Google BigQuery and the implicit libraryIntro to Implicit Matrix Factorization: Classic ALS with Sketchfab ModelsA Gentle Introduction to Recommender Systems with Implicit Feedback.RequirementsThis library requires SciPy version 0.16 or later and Python version 3.6 or later.GPU Support requires at least version 11 of theNVidia CUDA Toolkit.This library is tested with Python 3.7, 3.8, 3.9, 3.10 and 3.11 on Ubuntu, OSX and Windows.BenchmarksSimple benchmarks comparing the ALS fitting time versusSpark can be found here.Optimal ConfigurationI'd recommend configuring SciPy to use Intel's MKL matrix libraries. One easy way of doing this is by installing the Anaconda Python distribution.For systems using OpenBLAS, I highly recommend setting 'export OPENBLAS_NUM_THREADS=1'. This
disables its internal multithreading ability, which leads to substantial speedups for this
package. Likewise for Intel MKL, setting 'export MKL_NUM_THREADS=1' should also be set.Released under the MIT License