Releases: lenskit/lkpy
Releases · lenskit/lkpy
Small perf & bug fixes
See the GitHub milestone for full change list.
- Fix inconsistency in both code and docs for recommend list sizes for top-N evaluation.
- Fix user-user to correctly use
sum
aggregate. - Improve performance and documentation
Easier and Correcter
Higlights:
- The
save
andload
methods on algorithms have been removed. Just pickle fitted models to save
their data. This is what SciKit does, we see no need to deviate. - The APIs and model structures for top-N recommendation is reworked to enable algorithms to
produce recommendations more automatically. TheRecommender
interfaces now take aCandidateSelector
to determine default candidates, so client code does not need to compute candidates on their own.
One effect of this is that thebatch.recommend
function no longer requires a candidate selector,
and there can be problems if you callRecommender.adapt
before fitting a model. - Top-N evaluation has been completely revamped to make it easier to correctly implement and run
evaluation metrics. Batch recommend no longer attaches ratings to recommendations. See
Top-N evaluation for details. - Batch recommend & predict functions now take
nprocs
as a keyword-only argument. - Several bug fixes and testing improvements.
See the GitHub milestone for issues and pull requests.
Internal Changes
These changes should not affect you if you are only consuming LensKit's algorithm and evaluation capabilities.
- Rewrite the
CSR
class to be more ergonomic from Python, at the expense of making the NumPy jitclass
indirect. It is available in the.N
attribute. Big improvement: it is now picklable.
The One With SciKit APIs
LensKit 0.5.0 modifies the algorithm APIs to follow the SciKit design patterns instead of
our previous custom patterns. Highlights of this change:
- Algorithms are trained in-place — we no longer have distinct model objects.
- Model data is stored as attributes on the algorithm object that end in
_
. - Instead of writing
model = algo.train_model(ratings)
, callalgo.fit(ratings)
.
We also have some new capabilities:
- Ben Frederickson's Implicit library
As always, install with
conda install -c lenskit lenskit