Release notes for LensKit 3.0
LensKit 3.0 is the upcoming major release of LensKit. This release will not be backwards-compatible with LensKit 2.2. These release notes are not exhaustive, but are intended to provide a general guide to the changes to look for. As 3.0’s final release nears, we will be writing additional documentation on translating and updating experiments and other migration concerns.
For a preview of the manual for LensKit 3.0, see here.
- LensKit code has been moved from
- The LensKit Maven group has moved from
- The LensKit Data Structures module is being removed in favor of fewer custom data structures. The custom data structures still in use are in the LensKit Core.
- We have standardized our
Providerlanguage. Components that build other components in the recommender build process are called
Providers, and the term
Builderis reserved for classes that are used to programmatically assemble other objects.
New Public APIs
The LensKit public APIs (
RatingPredictor, etc.) have been redesigned with new data structures for reporting results.
New Data Access Layer
LensKit’s Data Access Layer has been completely rewritten to make it easier to link to many different of data sources. Documentation is forthcoming.
FunkSVD no longer supports predict-time updating. This logic was not well-tested and always disabled in recommended configurations; this release completely removes it. We hope to re-introduce it in a better-designed and more configurable manner later.
If FunkSVD cannot find an item vector for an item, it now declines to score that item rather than returning the baseline score. Baseline scores can be added with a fallback item scorer.
The quantized rating predictor has moved to
The rating predictor no longer takes a baseline scorer to use as a fallback when the item scorer cannot produce scores, to reduce duplication of logic with the fallback item scorer. The default behavior is still the same, however, as it uses a
@PredictionScorerqualifier whose default implementation is
‘Evaluation scripts’ have gone away in favor of discrete command line tools (
crossfold) and a Gradle plugin for scripting them. This means we can leverage all of Gradle’s
engineering in developing a DSL for task automation.
- Incompatible Change: The Precision and Recall metrics now count users for whom no recommendations could be generated as having precision and recall of 0 in the global average.
MRR.OfGoodvariant has gone away, there is now just