Release notes for LensKit 0.11
The primary focus of this release is making LensKit use Grapht rather than PicoContainer, with additional refactorings of components to more effectively take advantage of Grapht. We also made significant improvements to how the evaluator works to allow evaluation scripts to be more flexible, and made a number of other improvements and bug fixes.
There are a number of backwards-incompatible changes in this release. Configurations and algorithm implementations will definitely need to be updated; other client code may need updates as well.
VectorEntryobjects when iterated, rather than
Long2DoubleMap.Entryinstances. All code that iterates over sparse vectors will need to be updated.
Added methods to
GlobalItemScorerto output scores to sparse vectors.
Begun documenting API stability (#issue(103)).
Events are no longer
Cloneable, and the
clonemethod is now a deprecated alias for
The default user similarity for user-user CF is now cosine rather than Pearson.
Item-item models can now have unbounded size and have rows truncated by threshold value rather than size (#issue(171)).
FunkSVD now incorporates user ratings at predict time (#issue(174)).
This release contains a lot of algorithm and component refactorings. The public recommender API is unchanged, but many components and their interfaces have changed. This means that custom components and recommender configurations will need to be updated.
@Shareableannotation for components that can be put in the model build and shared between recommender sessions. All shareable components must now be annotated with this annotation (or configured via instance bindings), or they will not be pre-built.
MaxRating(deprecated in release 0.10). Code should use
PreferenceDomaininstead. See #issue(163).
RatingSnapshotand related classes to
PreferenceSnapshot, since that’s what it really is.
Removed many annotations formerly used as dependency qualifiers (see #issue(168)).
@NormalizedSnapshot: components that formerly used this qualifier should depend on
userNormalizedPreferenceSnapshotor use the normalizer directly.
@NormalizerBaseline: use a context-sensitive binding on
@PredictNormalizer: use context-sensitive bindings. Usually this will require using context-sensitive bindings to bind the other normalizers.
@UserHistorySummary: was redundant with the component interface.
@UserVectorNormalizer: refactored into a separate
UserVectorNormalizerinterface, the default implementation of which delegates to a generic vector normalizer. Context-sensitive bindings configure the inner normalizer.
BaselineSubtractingUserVectorNormalizerand implements the new interface.
@ItemSimilarity: factored into
ItemSimilarityinterface, with default implementation delegating to
@UserSimilarity: factored into
UserSimilarityinterface, with default implementation delegating to
@WeightedSimilarity: removed in favor of context-sensitive bindings.
DoubleFunction) in favor of a
ClampingFunctioninterface. The new interface provides the user and item IDs, too.
UserHistorySummarizer, and renamed base classes.
Moved normalizers and quantizers into subpackages of
Refactored similarities for k-NN recommenders.
VectorSimilarity, without a generic parameter, and
SymmetricBinaryFunctionhave been replaced by methods on similarity interfaces.
UserVectorclasses. User and item IDs are now carried independently and we use distinct component interfaces to handle users and items.