Release notes for LensKit 0.2
Introduce user- and item-associated sparse vectors, including rating-specific variants of them, to allow types to express what kind of data is being operated on and to allow normalizers to be generalized.
This results in changes to several interfaces, and to much code where item or user IDs are tracked and associated with vectors. This change likely introduces additional vector copying, but in the future we will be measuring ways to reduce this.
VectorNormalizerto apply to different vectors associated with entities such as users or items.
With this change, several normalization-related classes have been renamed to better-reflect their nature. Also, the normalization interface has been changed to only take reference and target vectors; normalization implementations that require user or item IDs should require the relevant type of sparse vector.
Annotations and generic type arguments are used to indicate what the vector normalizer is normalizing.
MutableSparseVector, returning an immutable vector from its data and rendering it invalid.
Backwards-incompatible core changes:
Many operations that took a user or item ID and a
SparseVectornow use a
ItemVector, or a rating-specific subtype. This affects the
DynamicRatingItemRecommenderinterfaces and all their subclasses.
UserRatingVectorNormalizerhas been replaced with
VectorNormalizer<? super UserRatingVector>and its interface has been changed.
- Add boolean
isolateoption to the train-test Ant task to process datasets one at a time rather than parallelizing evaluations across this one. Useful for reducing memory consumption evaluations on large data sets.