Python recommendation toolkit
This version of LensKit splits out the CSR routines into a separate CSR package, allowing LensKit to be a pure Python package.
This also makes a major change to TensorFlow BPR, using popularity-weighted negative sampling by default (this can be disabled with neg_weight=False
), and makes our TF recommenders much faster.
This release is just to fix a build problem in 0.11.0 that prevented automatic package publication.
This release brings a number of functionality and performance improvements. Highlights include:
Bias
model and using it consistently instead of re-implementing pieces in matrix factorizersThe main-channel Conda packages for this release have disabled MKL support in macOS, due to environmental factors causing the build to fail. LensKit will still work fine in MKL environments, it just won't use its MKL-based k-NN acceleration on macOS. Linux and Windows are still unchanged. With 0.11, we will also begin publishing packages to conda-forge
; we expect MKL acceleration to work in that environment.
bias
package (#175) (#183) @carlos10segThis release makes some improvements to multi-process support and item-item kNN resource use.
Highlights of this release are significant improvements to parallel processing (we no longer use joblib), shared memory, and our first TensorFlow integrations.
This release has some performance and improvements, including full Python 3.8, Pandas 1.0, and Numba 0.49 testing.
This is the last release we expect to use JobLib to parallelize batch prediction and recommendation. Any Python scripts that call the batch routines (batch.predict
, batch.recommend
, or MultiEval
) need to be import-protected: their code needs to be in functions, and only invoked with a __name__
guard:
if __name__ = '__main__':
do_stuff()
Unprotected scripts (where the code is just in the script, and runs when the script is imported as a module) will probably still work with LensKit 0.9, but will not work in the next version of LensKit. Jupyter notebooks should be just fine - when they are run, the IPython kernel is actually running, and it is properly protected.
This release cleans up dependency problems to make it easier to reliably install LensKit. We remove some unused utility code that had compatibility problems.
CSR.sort_values
- we were no longer using this function, and it failed to compile with Numba 0.46.This is the same as 0.8.0, with a couple of small build environment tweaks to properly deploy the release.
See the GitHub milestone for full change list.
*args
from Algorithm.fit
, so additional data must be provided via keyword argumentsAlgorithm.fit
implementations consistently take **kwargs
for hybrid flexibilitymethod='lu'
.See the GitHub milestone for full change list.
nprocs
arguments are renamed to n_jobs
for consistency with Joblib.parallel
option on MultiEval
algorithms, as it was unused.MultiEval
default to using each recommender's default candidate
set, and adapt algorithms to recommenders prior to evaluation.MultiEval
require named arguments for most things.MultiEval
to save the fit models.RecListAnalysis
can optionally ensure all test users are returned, even
if they lack recommendation lists.