LensKit 0.13.0 - critical bugs fixed
We're pleased to release LensKit 0.13!
Major Fixes
This release includes two critical fixes, for which everyone should upgrade:
- The
Bias
model'stransform
andinverse_transform
methods were incorrect (#265). These bugs did not affectBias
when used as a predictor or a recommender, but they did affect any model usingBias
as a normalization step, namely the biased matrix factorizers (since version 0.11, when this API was added). - Previous versions of LensKit did not clean up temporary files (or, on Python 3.8 and later, shared memory resources) when running parallel evaluation processes.
It also includes significant performance improvements and code to detect common problems with parallel processing configurations, and is tested on Python 3.9 and on Linux AArch64 (64-bit ARM).
Future Changes
This release deprecates two sets of APIs that will be removed in LensKit 0.14:
MultiEval
(#254) - it doesn't work well for realistic projects, and simple evaluations are easy enough to write in a loop, so we will be removingMultiEval
to reduce our maintenance burden going forward.- RNG seed management APIs - these are replaced by seedbank. In 0.13, the APIs are kept as compatibility shims for their SeedBank replacements, but we will remove them in 0.14 in favor of directly calling seedbank.
We haven't yet adopted any formal deprecation policies for LensKit, but my current tentative plan is to use this next-release cadence for nontrivial removals while we're still releasing 0.x versions; once we decide to bump to 4.x, we will use semantic versioning on all public APIs, and thus deprecations will not be enforced until the next major release.
In a future LensKit, I tentatively plan to factor out several of our bridges (TensorFlow, Implicit, HPF) into separate projects. We will keep compatibility imports for at least one 0.x release, and probably until 4.0. This will reduce the development overhead of the LensKit core.
What’s Changed
- Remove fastparquet import (#266) @mdekstrand
- Fix incorrect user bias transformation (#265) @mdekstrand
- Revise dependency specifications (#264) @mdekstrand
- Update deprecation notices (#263) @mdekstrand
- Detect problems with runtime environments (#248) @mdekstrand
- Add use_ratings option to ImplicitMF (#245) @mdekstrand
- Add 'k' support to top-N metrics (#247) @mdekstrand
- Further Top-N optimization updates (#242) @mdekstrand
- Free shared memory in parallel (#243) @mdekstrand
- Optimize top-N analysis (#237) @mdekstrand
- Add PlackettLuce stochastic ranking algorithm (#241) @mdekstrand
- Add PopScore algorithm for popularity-based scoring (#240) @mdekstrand
- Refactor ranking into a 'ranking' module (#239) @mdekstrand
- Enable tests on Python 3.9 (#234) @mdekstrand
- Deprecate MultiEval (#238) @mdekstrand
- Add more logging output to parallelism code (#236) @mdekstrand
- Add convenience prediction accuracy functions (#235) @mdekstrand