This release has a lot of cleanups and refactorings. Highlights:
- ⚠️ MultiEval's deprecation has been upgraded to removal
- ⚠️ ImplicitMF's default has changed to no longer use rating values, even if they are present (old behavior is still an option)
- The k-NN recommenders now have an easier way to configure the typical setup for implicit feedback.
- Algorithms using heavy external code, and bridges to other systems, have been moved to their own packages to be released shortly. This includes the HPF recommender, TensorFlow recommenders, and Ben Frederickson's 'implicit' library. Moving these into their own repositories will decrease maintenance overhead on the main LensKit project, and should also make installation easier.
- Python 3.10 is now supported.
See the detailed release notes below for more information.
This will be the **last release series** tested against Python 3.7. Further patch releases (e.g. a 0.14.1) will be tested on 3.7, but 0.15 will drop 3.7 support as per NEP 29. NEP 29 would allow us to drop 3.7 with this release, but I'm keeping it since it's been so long since the last LensKit release.
What’s Changed
* Clean up missing documentation & bad links (299) mdekstrand
⚠ Breaking Changes
* Change ImplicitMF to default to not use ratings (298) mdekstrand
* Remove MultiEval (277) mdekstrand
🐜 Bug Fixes
* Correctly include missing user scores with multiple runs (293) mdekstrand
📏 Evaluation Support
* Fix index output from top-N evaluation (306) mdekstrand
* Add a hit metric to compute hit rates (303) mdekstrand
* Document formulas for all metrics (302) mdekstrand
* Correctly include missing user scores with multiple runs (293) mdekstrand
* Raise an error when attempting to split a data frame with a non-unique index (272) keener101
* Remove MultiEval (277) mdekstrand
🧩 Algorithms
* Add AllItemsCandidateSelector (304) mdekstrand
* Change ImplicitMF to default to not use ratings (298) mdekstrand
* Add feedback modes to k-NN recommenders (297) mdekstrand
* Add use_ratings switch to item-item k-NN (296) mdekstrand
* Split TensorFlow into a separate package (283) mdekstrand
* Split implicit wrappers into new package (281) mdekstrand
* Split HPF into a separate package (270) mdekstrand
* Improve item-item docs and diagnostics for implicit feedback (275) mdekstrand
🧱 Internals
* Disable SharedMemory on Windows and improve testing (301) mdekstrand
🔧 Maintenance
* Reduce CI build load (300) mdekstrand
* Update Conda build matrix (295) mdekstrand
* Test Python 3.10 on Conda (294) mdekstrand
* Test against Python 3.10 and Numba 0.55 pre-release (292) mdekstrand
* Switch from PowerShell to Invoke tasks (291) mdekstrand
* Share BibTeX retrieval across LensKit projects (286) mdekstrand
* Upload coverage at end of build pipeline (284) mdekstrand
* Update to PEP 621 and better folder naming (280) mdekstrand
* Depend on Pandas 1.0 or newer (279) mdekstrand
* Support Numba 0.54 (278) mdekstrand
* Use conda-lock for build environments (276) mdekstrand
* Use BibTeX for references (273) mdekstrand
* Fix flit-conda build (274) mdekstrand