Skip to content

Releases: lenskit/lkpy

No Longer Candide

13 Feb 02:39
Compare
Choose a tag to compare

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.

What’s Changed

Building It Live

13 Nov 20:18
Compare
Choose a tag to compare

This release is just to fix a build problem in 0.11.0 that prevented automatic package publication.

Let's Do It Live

13 Nov 19:12
Compare
Choose a tag to compare

This release brings a number of functionality and performance improvements. Highlights include:

  • Refactoring the Bias model and using it consistently instead of re-implementing pieces in matrix factorizers
  • Support new ratings from a user in both ALS recommenders
  • Fix crash when TensorFlow 1 is installed

The 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.

What’s Changed

Better Processes

26 Jun 23:38
Compare
Choose a tag to compare

This release makes some improvements to multi-process support and item-item kNN resource use.

What’s Changed

Flow

09 Jun 21:45
Compare
Choose a tag to compare

Highlights of this release are significant improvements to parallel processing (we no longer use joblib), shared memory, and our first TensorFlow integrations.

What’s Changed

Gone in 60 Seconds

26 May 01:44
Compare
Choose a tag to compare

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.

What’s Changed

Will It Blend?

09 Jan 21:32
Compare
Choose a tag to compare

This release cleans up dependency problems to make it easier to reliably install LensKit. We remove
some unused utility code that had compatibility problems.

  • Remove CSR.sort_values - we were no longer using this function, and it failed to compile with Numba 0.46.
  • Change dependency versions

Faster For Real This Time

10 Dec 23:07
Compare
Choose a tag to compare

This is the same as 0.8.0, with a couple of small build environment tweaks to properly deploy the release.

Not Sure About Further Or Higher, But Definitely Faster

10 Dec 22:58
Compare
Choose a tag to compare

See the GitHub milestone for full change list.

Infrastructure Updates

  • Dropped support for Python 3.5
  • Removed *args from Algorithm.fit, so additional data must be provided via keyword arguments
  • Made Algorithm.fit implementations consistently take **kwargs for hybrid flexibility

Algorithm Updates

  • Substantial performance and stability improvements to item-item
  • Added a coordinate descent solver to explicit-feedback ALS and made it the default. The old
    LU-based solver is still available with method='lu'.
  • Added a conjugate gradient solver to implicit-feedback ALS and made it the default.
  • Added a random recommender

The One With Empty Lists

19 May 01:21
Compare
Choose a tag to compare

See the GitHub milestone for full change list.

  • Use Joblib for parallelism in batch routines.
  • nprocs arguments are renamed to n_jobs for consistency with Joblib.
  • Removed parallel option on MultiEval algorithms, as it was unused.
  • Made MultiEval default to using each recommender's default candidate
    set, and adapt algorithms to recommenders prior to evaluation.
  • Make MultiEval require named arguments for most things.
  • Add support to MultiEval to save the fit models.
  • RecListAnalysis can optionally ensure all test users are returned, even
    if they lack recommendation lists.
  • Performance improvements to algorithms and evaluation.