Release notes for LensKit 0.9
The Git changelog and the list of closed tickets and pull requests provide more information on what has happened, including bugs that have been fixed.
-
Clean up documentation, warnings, and documenting annotations in several places. Also made many style fixes.
-
Fix the
ItemScorer
inheritance hierarchy by makingAbstractItemScorer
implementItemScorer
rather thanRatingPredictor
, and make subclasses implementRatingPredictor
directly. -
Revise
SparseVector
definition and implementations to have a well-defined notion of “key domain” and “key set”, where the key set is the set of keys with values drawn from the key domain. This allowsMutableSparseVector
s to be used to build up vectors in a well-defined fashion without using NaN. With this update, thekeySet
method will only return defined keys (usekeyDomain
to access the key domain), and NaN will only show up due to mathematical error, never due to temporary slots being unfilled. -
Updated versions of several dependencies.
-
EventCollectionDAO
factory updates - addwrap
methods that wrap other DAO factories in immediate or soft event collection DAO factories, making it easier to useEventCollectionDAO
for a cache of disk-backed DAOs. Also made theSoftFactory
take aSupplier
rather thanProvider
.
Evaluation runner
-
Output separate data set and segment number fields.
-
Support fractional (e.g. 20%) holdouts in addition to remove-K.
-
Reinstate per-user MAE (MAE.ByUser).
-
Use
.eval-cache
as default cache directory. -
Add evaluation listener framework for future evaluation monitor consoles.
-
Renamed profile for running the evaluation demo - it is now activated with
demo
(rather thansmoketest
). -
Rearrange evaluator code to the crossfolding logic is in its own package.
Cleanup
Several unused classes have been removed:
-
IndexedItemScore
-
IntSortedArraySet