Release 0.9
The Mercurial changelog and the list of closed tickets 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 making AbstractItemScorer implement ItemScorer rather than RatingPredictor, and make subclasses implement RatingPredictor 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 allows MutableSparseVectors to be used to build up vectors in a well-defined fashion without using NaN. With this update, the keySet method will only return defined keys (use keyDomain 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 - add wrap methods that wrap other DAO factories in immediate or soft event collection DAO factories, making it easier to use EventCollectionDAO for a cache of disk-backed DAOs. Also made the SoftFactory take a Supplier rather than Provider.
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 than smoketest).
- Rearrange evaluator code to the crossfolding logic is in its own package.
Cleanup
Several unused classes have been removed:
- IndexedItemScore
- IntSortedArraySet