Recent Releases of lenskit
lenskit - Release fix for 2025.3.0a3
Small fix to the release process for 2025.3.0a3.
- Python
Published by mdekstrand 9 months ago
lenskit - Lots of performance improvements, mostly
This version includes a lot of performance improvements along with some ergonomic advances to logging, better exports, and some new metrics. Along with a handful of bug fixes. And Amazon data set import.
2025.3.0 is coming soon.
What's Changed
- Add versions to dataset schemas by @mdekstrand in https://github.com/lenskit/lkpy/pull/721
- Add SparseRow extension type for CSRs in Arrow by @mdekstrand in https://github.com/lenskit/lkpy/pull/722
- Use Rust to accelerate negative sampling by @mdekstrand in https://github.com/lenskit/lkpy/pull/723
- Re-add progress bars and signal checking to Item KNN builder by @mdekstrand in https://github.com/lenskit/lkpy/pull/724
- Add ndarray dep and use it for sampling by @mdekstrand in https://github.com/lenskit/lkpy/pull/725
- Use Maturin to simplify build setup by @mdekstrand in https://github.com/lenskit/lkpy/pull/726
- Reduce base structure memory consumption by @mdekstrand in https://github.com/lenskit/lkpy/pull/728
- Add Rust acceleration to User KNN by @mdekstrand in https://github.com/lenskit/lkpy/pull/730
- Rewrite ALS solvers in Rust by @mdekstrand in https://github.com/lenskit/lkpy/pull/731
- Rewrite FunkSVD in Rust by @mdekstrand in https://github.com/lenskit/lkpy/pull/732
- Build with ABI3 and maturin-action by @mdekstrand in https://github.com/lenskit/lkpy/pull/733
- Add SPEC-1 (Lazy Loading) and incorporate version numbers into docs by @mdekstrand in https://github.com/lenskit/lkpy/pull/736
- Implement is_sorted for matrix tables in Rust by @mdekstrand in https://github.com/lenskit/lkpy/pull/737
- Correctly detect no-genre movies in MovieLens by @mdekstrand in https://github.com/lenskit/lkpy/pull/738
- Adding Mean Average Precision by @albus-droid in https://github.com/lenskit/lkpy/pull/739
- Add tests to avoid overflow in softmax stochastic sampling by @mdekstrand in https://github.com/lenskit/lkpy/pull/742
- Add configurable weighting models by @mdekstrand in https://github.com/lenskit/lkpy/pull/744
- Parallelize item-item scoring by @mdekstrand in https://github.com/lenskit/lkpy/pull/745
- Support comma-separated lists for uniform nested parallelism configuration by @mdekstrand in https://github.com/lenskit/lkpy/pull/746
- Test and fix crash on Linux ARM by @mdekstrand in https://github.com/lenskit/lkpy/pull/748
- Update ALS solve to zero rows for no-info users/items by @mdekstrand in https://github.com/lenskit/lkpy/pull/749
- Add importers for UCSD Amazon data by @mdekstrand in https://github.com/lenskit/lkpy/pull/751
- refactor FlexMF with less string compares by @mdekstrand in https://github.com/lenskit/lkpy/pull/752
- Add sklearn NMF as a scorer by @FroggoLight in https://github.com/lenskit/lkpy/pull/741
- Speed up ItemList isin checks and evaluation metrics by @mdekstrand in https://github.com/lenskit/lkpy/pull/753
- Speed up ItemList indexing by @mdekstrand in https://github.com/lenskit/lkpy/pull/754
- Add Gini coefficient metrics by @mdekstrand in https://github.com/lenskit/lkpy/pull/755
- Speed up weight computations by @mdekstrand in https://github.com/lenskit/lkpy/pull/756
- Speed up weighted metrics by @mdekstrand in https://github.com/lenskit/lkpy/pull/757
- Add ItemList.top_n and speed up ItemList operations by @mdekstrand in https://github.com/lenskit/lkpy/pull/758
- Add subprocess progress reporting by @mdekstrand in https://github.com/lenskit/lkpy/pull/759
New Contributors
- @albus-droid made their first contribution in https://github.com/lenskit/lkpy/pull/739
- @FroggoLight made their first contribution in https://github.com/lenskit/lkpy/pull/741
Full Changelog: https://github.com/lenskit/lkpy/compare/v2025.3.0a2.post2...v2025.3.0a3
- Python
Published by mdekstrand 9 months ago
lenskit - Fix 2025.3.0a2 again
Now that I've found the problem, let's fix the release!
- Python
Published by mdekstrand 10 months ago
lenskit - Fix 2025.3.0a2
This is just to fix a release problem in 2025.3.0a2.
- Python
Published by mdekstrand 10 months ago
lenskit - Now with Rust
This adds Rust-based acceleration to item KNN, and more acceleration will be coming in the 2025.3.0 release.
This is the first attempt to publish binary wheels to PyPI, so the exact release may break.
What's Changed
- Add Rust extension infrastructure and accelerate ItemKNN by @mdekstrand in https://github.com/lenskit/lkpy/pull/715
- Replace just with invoke for development tasks by @mdekstrand in https://github.com/lenskit/lkpy/pull/716
Full Changelog: https://github.com/lenskit/lkpy/compare/v2025.3.0a1...v2025.3.0a2
- Python
Published by mdekstrand 10 months ago
lenskit - Preview: FlexMF and better Ray
This rolls up some changes and incoming improvements for preview release, as we are preparing for the 2025.3 release.
What's Changed
- Simplify test workfow by @mdekstrand in https://github.com/lenskit/lkpy/pull/666
- Add StochasticTopNSampler to be correct version of "softmax" sampler by @mdekstrand in https://github.com/lenskit/lkpy/pull/667
- Add flexible Torch matrix factorizer by @mdekstrand in https://github.com/lenskit/lkpy/pull/668
- Export configuration classes from lenskit.basic by @mdekstrand in https://github.com/lenskit/lkpy/pull/672
- Improve logging in Ray cluster setups by @mdekstrand in https://github.com/lenskit/lkpy/pull/673
- Limit test users to only have users who had item in the train data. by @sushobhan2024 in https://github.com/lenskit/lkpy/pull/676
- Add train and recommend commands to the CLI by @mdekstrand in https://github.com/lenskit/lkpy/pull/677
- Improve NumPy -> Torch conversions for read-only data by @mdekstrand in https://github.com/lenskit/lkpy/pull/680
- Reduce excess matrix manipulations in item-KNN by @mdekstrand in https://github.com/lenskit/lkpy/pull/678
- Improve progress bar update API by @mdekstrand in https://github.com/lenskit/lkpy/pull/681
- Update FlexMF parameters to better defaults by @mdekstrand in https://github.com/lenskit/lkpy/pull/682
- Run Doctor under coverage by @mdekstrand in https://github.com/lenskit/lkpy/pull/683
- Use uv for development environments instead of pixi by @mdekstrand in https://github.com/lenskit/lkpy/pull/700
- Add lenskit.state module and move the ParameterContainer interface by @mdekstrand in https://github.com/lenskit/lkpy/pull/702
- Create and use separate ModelTrainer objects by @mdekstrand in https://github.com/lenskit/lkpy/pull/701
- Support training checkpointing in ALS by @mdekstrand in https://github.com/lenskit/lkpy/pull/704
- Add CPU & GPU groups by @mdekstrand in https://github.com/lenskit/lkpy/pull/706
- Improve logging and reduce sorting in dataset relationships by @mdekstrand in https://github.com/lenskit/lkpy/pull/707
- Improve debug logging and add xopen to CLI by @mdekstrand in https://github.com/lenskit/lkpy/pull/708
- Introduce WARP loss to FlexMF by @mdekstrand in https://github.com/lenskit/lkpy/pull/709
- Build with setuptools instead of hatch by @mdekstrand in https://github.com/lenskit/lkpy/pull/710
- Add better compression support to CLI by @mdekstrand in https://github.com/lenskit/lkpy/pull/712
- Update pre-commit hook versions by @mdekstrand in https://github.com/lenskit/lkpy/pull/713
New Contributors
- @sushobhan2024 made their first contribution in https://github.com/lenskit/lkpy/pull/676
Full Changelog: https://github.com/lenskit/lkpy/compare/v2025.2.0...v2025.3.0a1
- Python
Published by mdekstrand 10 months ago
lenskit - 2025 Feature Update
A few small feature updates for LensKit 2025.
What's Changed
- Support auto-detecting key columns in ItemListCollection.from_df by @mdekstrand in https://github.com/lenskit/lkpy/pull/659
- Support dataframe-format test data for batch recommendation by @mdekstrand in https://github.com/lenskit/lkpy/pull/660
- Add PipelineCache to allow pipeline builders to cache component instances by @mdekstrand in https://github.com/lenskit/lkpy/pull/661
- Only warn once for users with missing test items in analysis by @mdekstrand in https://github.com/lenskit/lkpy/pull/664
Full Changelog: https://github.com/lenskit/lkpy/compare/v2025.1.1...v2025.2.0
- Python
Published by mdekstrand 12 months ago
lenskit - LensKit 2025
This is the first release in the new LensKit series, 2025.1.1!
LensKit 2025.1.1 brings a new design to LensKit, with a new generation of APIs that will enable better future flexibility and capability, and make it a lot easier to see the various software capabilities. It will also be easier to add new capabilities, such as content-based and knowledge-based recommenders.
We have plans for a lot of great new things on top of this new foundation, but code written for LensKit 0.14 and earlier will need to be udpated. See the migration guide for details.
- Python
Published by mdekstrand 12 months ago
lenskit - Better logging
Improved logging and metrics — almost there!
What's Changed
- Add meaningful error on duplicate metrics by @mdekstrand in https://github.com/lenskit/lkpy/pull/653
- Fix logic for monitors in nested workers by @mdekstrand in https://github.com/lenskit/lkpy/pull/654
Full Changelog: https://github.com/lenskit/lkpy/compare/v2025.1.1rc4...v2025.1.1rc5
- Python
Published by mdekstrand 12 months ago
lenskit - Move around util and clean up
Not super happy with this being in an RC series, but this removes some old util code, keeping a deprecated shim for a bit, and adds the lenskit doctor command, along with multiple negatives in negative sampling.
- Python
Published by mdekstrand 12 months ago
lenskit - Fix ItemList.from_arrow
This fixes a bug in ItemList.from_arrow when a column has null values.
- Python
Published by mdekstrand 12 months ago
lenskit - CLI plugins for testing
Quick update to refactor CLI into a plugin-based design so one of the client projects can add new CLI commands.
- Python
Published by mdekstrand 12 months ago
lenskit - First release candidate
We're about ready for 2025.1.1! Just need some final compatibility checks in downstreams.
- Python
Published by mdekstrand 12 months ago
lenskit - Monopackage, API, docs
What's Changed
- Rename RunAnalysis.compute to .measure by @mdekstrand in https://github.com/lenskit/lkpy/pull/637
- Refactor and document dataset classes by @mdekstrand in https://github.com/lenskit/lkpy/pull/638
- Make LensKit a single package again by @mdekstrand in https://github.com/lenskit/lkpy/pull/640
- Add CLI tests and fix name of ml-latest-small by @mdekstrand in https://github.com/lenskit/lkpy/pull/641
- Add Pipeline.modify to create modified copies of pipelines by @mdekstrand in https://github.com/lenskit/lkpy/pull/643
- Improve pipeline modification and documentation by @mdekstrand in https://github.com/lenskit/lkpy/pull/644
Full Changelog: https://github.com/lenskit/lkpy/compare/v2025.1.1b11...v2025.1.1b12
- Python
Published by mdekstrand 12 months ago
lenskit - Much better logging
This provides better logging output, and fixes a small documentation error.
- Python
Published by mdekstrand about 1 year ago
lenskit - Data bug + RBP default
This changes the RBP default to 0.85, and fixes a data set bug. Also introduces experimental Ray support.
- Python
Published by mdekstrand about 1 year ago
lenskit - Add negative sampling
This adds negative sampling and COO matrix data to the matrix relationship set.
- Python
Published by mdekstrand about 1 year ago
lenskit - Fix obscure user-KNN bug
This fixes some bugs when the rating data is float64. This is not triggered by usual pathways, but some nonstandard data loading logic may activate it.
What's Changed
- Test and fix components when input ratings are doubles by @mdekstrand in https://github.com/lenskit/lkpy/pull/630
Full Changelog: https://github.com/lenskit/lkpy/compare/v2025.1.1b7...v2025.1.1.b8
- Python
Published by mdekstrand about 1 year ago
lenskit - Fix RMSE bug + temporal split
What's Changed
- Add fractional temporal splitting by @mdekstrand in https://github.com/lenskit/lkpy/pull/628
- don't crash on empty lists in RMSE by @mdekstrand in https://github.com/lenskit/lkpy/pull/629
Full Changelog: https://github.com/lenskit/lkpy/compare/v2025.1.1b6...v2025.1.1b7
- Python
Published by mdekstrand about 1 year ago
lenskit - Now with a command line!
This adds an initial LensKit command-line utility and some small quality-of-life bits.
What's Changed
- Add utility function to load seeds from configuration files by @mdekstrand in https://github.com/lenskit/lkpy/pull/625
- Add Markdown dataset statistics by @mdekstrand in https://github.com/lenskit/lkpy/pull/626
- Add LensKit CLI tool and move data tools into it by @mdekstrand in https://github.com/lenskit/lkpy/pull/627
Full Changelog: https://github.com/lenskit/lkpy/compare/v2025.1.1b5...v2025.1.1b6
- Python
Published by mdekstrand about 1 year ago
lenskit - Small user-user bug fix
Fix for a small type error in user-user CF, found by a student.
- Python
Published by mdekstrand about 1 year ago
lenskit - Fourth beta - training config and splitting
This includes some small fixes and improvements:
- upper bound on temporal split
- popularity metric
- better CUDA configuration
- better iterative training logging
What's Changed
- [MINOR:fix link] Update README.md by @cakiki in https://github.com/lenskit/lkpy/pull/621
- Add a popularity metric by @mdekstrand in https://github.com/lenskit/lkpy/pull/622
- add upper bound for global temporal split by @mdekstrand in https://github.com/lenskit/lkpy/pull/623
New Contributors
- @cakiki made their first contribution in https://github.com/lenskit/lkpy/pull/621
Full Changelog: https://github.com/lenskit/lkpy/compare/v2025.1.1b3...v2025.1.1b4
- Python
Published by mdekstrand about 1 year ago
lenskit - Third beta
Mostly documentation fixes, plus some consistency work on model configuration.
- Python
Published by mdekstrand about 1 year ago
lenskit - Second beta
Second beta release, with working MovieLens full content data loaders and dataset attributes.
- Python
Published by mdekstrand about 1 year ago
lenskit - Beta — let others start using the code
There are a few more things to add and test before rolling 2025.1, but with the new data model changes I'm going to call it betea.
What's Changed
- Separate PipelineBuilder from Pipeline and update run api by @mdekstrand in https://github.com/lenskit/lkpy/pull/606
- Re-add unnormalized DCG metric by @mdekstrand in https://github.com/lenskit/lkpy/pull/608
- Add ARM and Windows vanilla Python to CI runs by @mdekstrand in https://github.com/lenskit/lkpy/pull/609
- Implement data set builders and the new entity/relationship model by @mdekstrand in https://github.com/lenskit/lkpy/pull/610
- Simplify training history components with new dataset by @mdekstrand in https://github.com/lenskit/lkpy/pull/612
- Make vocabularies immutable and stop using copy() by @mdekstrand in https://github.com/lenskit/lkpy/pull/611
- Tweaks for live class demo by @mdekstrand in https://github.com/lenskit/lkpy/pull/613
Full Changelog: https://github.com/lenskit/lkpy/compare/v2025.0.0a6...v2025.1.0b1
- Python
Published by mdekstrand about 1 year ago
lenskit - Small component typing update
This is a very small bump that adds better component base class typing.
What's Changed
- Update component configuration type warnings by @mdekstrand in https://github.com/lenskit/lkpy/pull/603
Full Changelog: https://github.com/lenskit/lkpy/compare/v2025.0.0a5...v2025.0.0a6
- Python
Published by mdekstrand about 1 year ago
lenskit - Alpha 5: configuration
Mostly changes around the component API:
- use Pydantic models for configuration
- update Trainable interface to take training options
- add iterative training interface
What's Changed
- Use Pydantic models for component configurations by @mdekstrand in https://github.com/lenskit/lkpy/pull/596
- Re-add return type variable for Component by @mdekstrand in https://github.com/lenskit/lkpy/pull/598
- Migrate HPF to configuration object and fix BiasConfig serialization by @mdekstrand in https://github.com/lenskit/lkpy/pull/600
- Move Trainable interface and add TrainingOptions by @mdekstrand in https://github.com/lenskit/lkpy/pull/599
- Add iterative training API by @mdekstrand in https://github.com/lenskit/lkpy/pull/601
- rename "Lenskit" to LensKit for consistency by @mdekstrand in https://github.com/lenskit/lkpy/pull/602
Full Changelog: https://github.com/lenskit/lkpy/compare/v2025.0.0a4...v2025.0.0a5
- Python
Published by mdekstrand about 1 year ago
lenskit - Alpha 4: performance
Mostly some performance and logging / debugging improvements, along with some refactors.
What's Changed
- Update pre-commit hook versions by @mdekstrand in https://github.com/lenskit/lkpy/pull/594
- Add directory check in save_parquet by @samiravaez in https://github.com/lenskit/lkpy/pull/593
- Refactor Pipeline into private submodule and improve documentation by @mdekstrand in https://github.com/lenskit/lkpy/pull/595
- Speed up popularity scoring and top-N ranking by @mdekstrand in https://github.com/lenskit/lkpy/pull/597
New Contributors
- @samiravaez made their first contribution in https://github.com/lenskit/lkpy/pull/593
Full Changelog: https://github.com/lenskit/lkpy/compare/v2025.0.0a3...v2025.0.0a4
- Python
Published by mdekstrand about 1 year ago
lenskit - 3rd Alpha — logging and version fixes
This improves some error messages, logging, and versioning; and tags a prerelease before doing data and configuration improvements.
What's Changed
- emit higher-quality error message on node failure by @mdekstrand in https://github.com/lenskit/lkpy/pull/584
- Add support for 12Factor-style JSON logging by @mdekstrand in https://github.com/lenskit/lkpy/pull/591
- Fix NumPy/PyTorch version problem and item KNN type problem w/ NumPy array by @mdekstrand in https://github.com/lenskit/lkpy/pull/592
Full Changelog: https://github.com/lenskit/lkpy/compare/v2025.0.0a2...v2025.0.0a3
- Python
Published by mdekstrand about 1 year ago
lenskit - Second 2025 Prerelease
This rolls up a number of new changes and bugfixes in the run up to 2025.1.
What's Changed
- Move LensKit test support into lenskit.testing package by @mdekstrand in https://github.com/lenskit/lkpy/pull/575
- Add user/item vocab options and subsetting to frominteractionsdf by @mdekstrand in https://github.com/lenskit/lkpy/pull/577
- Implement and use common component test suites by @mdekstrand in https://github.com/lenskit/lkpy/pull/576
- Accelerate item-item k-NN algorithms by @mdekstrand in https://github.com/lenskit/lkpy/pull/578
- Modest user-KNN speedups + item KNN logging by @mdekstrand in https://github.com/lenskit/lkpy/pull/579
- Add basic_logging function and use it in the GettingStarted notebook by @mdekstrand in https://github.com/lenskit/lkpy/pull/580
- Add stability declarations to documentation by @mdekstrand in https://github.com/lenskit/lkpy/pull/581
- Add predict_pipeline, remove data.bulk module, and clean up batch functions by @mdekstrand in https://github.com/lenskit/lkpy/pull/582
- Implement a proxy logger that suppresses debug & info messages by default by @mdekstrand in https://github.com/lenskit/lkpy/pull/583
Full Changelog: https://github.com/lenskit/lkpy/compare/v2025.0.0a1...v2025.0.0a2
- Python
Published by mdekstrand about 1 year ago
lenskit - Initial PyPI 2025 release
This is the first pre-release of LensKit 2025 to PyPI.
- Python
Published by mdekstrand about 1 year ago
lenskit - Quick bugfix
This fixes a bug in the util.clone function where it incorrectly cloned tuples as lists.
- Python
Published by mdekstrand about 2 years ago
lenskit - 0.14 Dependency Updates
This is a small compatibility update for 0.14 to support Python 3.11, newer Numba, and Pandas 2.
What's Changed
- Support Python 3.11 & Numba 0.58 by @mdekstrand in https://github.com/lenskit/lkpy/pull/355
Full Changelog: https://github.com/lenskit/lkpy/compare/0.14.2...0.14.3
- Python
Published by mdekstrand about 2 years ago
lenskit - Dependency Updates
This release just bumps dependencies to enable and test support for Numba 0.56; also bumps up the minimum SciPy version to make the tests pass reliably (the minimum version is still several years old).
What's Changed
- Use external build tools for 0.14 fix releases by @mdekstrand in https://github.com/lenskit/lkpy/pull/321
- Support Numba 0.56 in 0.14 series by @mdekstrand in https://github.com/lenskit/lkpy/pull/322
Full Changelog: https://github.com/lenskit/lkpy/compare/0.14.1...0.14.2
- Python
Published by mdekstrand over 3 years ago
lenskit - Fix truncated nDCG bug
This release fixes #309, a bug in which the nDCG metric was not correctly computed when k is smaller than the recommendation list.
What's Changed
- Fix nDCG truncation bug (#309) by @mdekstrand in #310.
Full Changelog: https://github.com/lenskit/lkpy/compare/0.14.0...0.14.1
- Python
Published by mdekstrand almost 4 years ago
lenskit - Cleaning Up
This release has a lot of cleanups and refactorings. Highlights:
- ⚠️ MultiEval's deprecation has been upgraded to removal
- ⚠️ ImplicitMF's default has changed to no longer use rating values, even if they are present (old behavior is still an option)
- The k-NN recommenders now have an easier way to configure the typical setup for implicit feedback.
- Algorithms using heavy external code, and bridges to other systems, have been moved to their own packages to be released shortly. This includes the HPF recommender, TensorFlow recommenders, and Ben Frederickson's 'implicit' library. Moving these into their own repositories will decrease maintenance overhead on the main LensKit project, and should also make installation easier.
- Python 3.10 is now supported.
See the detailed release notes below for more information.
This will be the last release series tested against Python 3.7. Further patch releases (e.g. a 0.14.1) will be tested on 3.7, but 0.15 will drop 3.7 support as per NEP 29. NEP 29 would allow us to drop 3.7 with this release, but I'm keeping it since it's been so long since the last LensKit release.
What’s Changed
- Clean up missing documentation & bad links (#299) @mdekstrand
⚠ Breaking Changes
- Change ImplicitMF to default to not use ratings (#298) @mdekstrand
- Remove MultiEval (#277) @mdekstrand
🐜 Bug Fixes
- Correctly include missing user scores with multiple runs (#293) @mdekstrand
📏 Evaluation Support
- Fix index output from top-N evaluation (#306) @mdekstrand
- Add a hit metric to compute hit rates (#303) @mdekstrand
- Document formulas for all metrics (#302) @mdekstrand
- Correctly include missing user scores with multiple runs (#293) @mdekstrand
- Raise an error when attempting to split a data frame with a non-unique index (#272) @keener101
- Remove MultiEval (#277) @mdekstrand
🧩 Algorithms
- Add AllItemsCandidateSelector (#304) @mdekstrand
- Change ImplicitMF to default to not use ratings (#298) @mdekstrand
- Add feedback modes to k-NN recommenders (#297) @mdekstrand
- Add use_ratings switch to item-item k-NN (#296) @mdekstrand
- Split TensorFlow into a separate package (#283) @mdekstrand
- Split implicit wrappers into new package (#281) @mdekstrand
- Split HPF into a separate package (#270) @mdekstrand
- Improve item-item docs and diagnostics for implicit feedback (#275) @mdekstrand
🧱 Internals
- Disable SharedMemory on Windows and improve testing (#301) @mdekstrand
🔧 Maintenance
- Reduce CI build load (#300) @mdekstrand
- Update Conda build matrix (#295) @mdekstrand
- Test Python 3.10 on Conda (#294) @mdekstrand
- Test against Python 3.10 and Numba 0.55 pre-release (#292) @mdekstrand
- Switch from PowerShell to Invoke tasks (#291) @mdekstrand
- Share BibTeX retrieval across LensKit projects (#286) @mdekstrand
- Upload coverage at end of build pipeline (#284) @mdekstrand
- Update to PEP 621 and better folder naming (#280) @mdekstrand
- Depend on Pandas 1.0 or newer (#279) @mdekstrand
- Support Numba 0.54 (#278) @mdekstrand
- Use conda-lock for build environments (#276) @mdekstrand
- Use BibTeX for references (#273) @mdekstrand
- Fix flit-conda build (#274) @mdekstrand
- Python
Published by github-actions[bot] about 4 years ago
lenskit - Little bug fix
Just a little bug fix for Bias (doesn't affect correctness, just makes documented configuration options actually work instead of throwing an exception).
What’s Changed
- Fix bias transform with disabled users/items (#268) @mdekstrand
- Python
Published by github-actions[bot] over 4 years ago
lenskit - LensKit 0.13.0 - critical bugs fixed
We're pleased to release LensKit 0.13!
Major Fixes
This release includes two critical fixes, for which everyone should upgrade:
- The
Biasmodel'stransformandinverse_transformmethods were incorrect (#265). These bugs did not affectBiaswhen used as a predictor or a recommender, but they did affect any model usingBiasas a normalization step, namely the biased matrix factorizers (since version 0.11, when this API was added). - Previous versions of LensKit did not clean up temporary files (or, on Python 3.8 and later, shared memory resources) when running parallel evaluation processes.
It also includes significant performance improvements and code to detect common problems with parallel processing configurations, and is tested on Python 3.9 and on Linux AArch64 (64-bit ARM).
Future Changes
This release deprecates two sets of APIs that will be removed in LensKit 0.14:
MultiEval(#254) - it doesn't work well for realistic projects, and simple evaluations are easy enough to write in a loop, so we will be removingMultiEvalto reduce our maintenance burden going forward.- RNG seed management APIs - these are replaced by seedbank. In 0.13, the APIs are kept as compatibility shims for their SeedBank replacements, but we will remove them in 0.14 in favor of directly calling seedbank.
We haven't yet adopted any formal deprecation policies for LensKit, but my current tentative plan is to use this next-release cadence for nontrivial removals while we're still releasing 0.x versions; once we decide to bump to 4.x, we will use semantic versioning on all public APIs, and thus deprecations will not be enforced until the next major release.
In a future LensKit, I tentatively plan to factor out several of our bridges (TensorFlow, Implicit, HPF) into separate projects. We will keep compatibility imports for at least one 0.x release, and probably until 4.0. This will reduce the development overhead of the LensKit core.
What’s Changed
- Remove fastparquet import (#266) @mdekstrand
- Fix incorrect user bias transformation (#265) @mdekstrand
- Revise dependency specifications (#264) @mdekstrand
- Update deprecation notices (#263) @mdekstrand
- Detect problems with runtime environments (#248) @mdekstrand
- Add use_ratings option to ImplicitMF (#245) @mdekstrand
- Add 'k' support to top-N metrics (#247) @mdekstrand
- Further Top-N optimization updates (#242) @mdekstrand
- Free shared memory in parallel (#243) @mdekstrand
- Optimize top-N analysis (#237) @mdekstrand
- Add PlackettLuce stochastic ranking algorithm (#241) @mdekstrand
- Add PopScore algorithm for popularity-based scoring (#240) @mdekstrand
- Refactor ranking into a 'ranking' module (#239) @mdekstrand
- Enable tests on Python 3.9 (#234) @mdekstrand
- Deprecate MultiEval (#238) @mdekstrand
- Add more logging output to parallelism code (#236) @mdekstrand
- Add convenience prediction accuracy functions (#235) @mdekstrand
- Python
Published by github-actions[bot] over 4 years ago
lenskit - Really publish
This actually publishes the 0.12 bump, a tagging error prevented 0.12.2 from going out.
- Python
Published by mdekstrand almost 5 years ago
lenskit - Education Bugfixes
This release contains the sampling function refactor (#230), and documentation improvements.
- Python
Published by mdekstrand almost 5 years ago
lenskit - The Clone SVDs
Small bug-fix release.
What’s Changed
- Fix cloning SVD (#224) @mdekstrand
- Python
Published by release-drafter[bot] almost 5 years ago
lenskit - No Longer Candide
This version of LensKit splits out the CSR routines into a separate CSR package, allowing LensKit to be a pure Python package.
This also makes a major change to TensorFlow BPR, using popularity-weighted negative sampling by default (this can be disabled with neg_weight=False), and makes our TF recommenders much faster.
What’s Changed
- Use popularity-weighted sampling in BPR by default (#223) @mdekstrand
- Fix TF performance (#222) @mdekstrand
- Update to CSR 0.2 (#221) @mdekstrand
- use CSR from conda-forge (#220) @mdekstrand
- knn: don't add item means to similarity sums (#217) @mdekstrand
- Use flit to build LKPY (#219) @mdekstrand
- Remove CSR class in favor of separate library (#218) @mdekstrand
- Fix tests on MacOS OpenBLAS (#215) @mdekstrand
- Allow scipy='coo' in sparse_ratings (#214) @reppertj
- Add keystone test depending on others (#212) @mdekstrand
- Test on multiple BLAS versions (#211) @mdekstrand
- Support Numba 0.52 (#210) @mdekstrand
- Add option to drop user features after training ALS models (#209) @carlos10seg
- Add tests for ALS load/save (#207) @mdekstrand
- Python
Published by release-drafter[bot] about 5 years ago
lenskit - Building It Live
This release is just to fix a build problem in 0.11.0 that prevented automatic package publication.
- Python
Published by mdekstrand over 5 years ago
lenskit - Let's Do It Live
This release brings a number of functionality and performance improvements. Highlights include:
- Refactoring the
Biasmodel and using it consistently instead of re-implementing pieces in matrix factorizers - Support new ratings from a user in both ALS recommenders
- Fix crash when TensorFlow 1 is installed
The main-channel Conda packages for this release have disabled MKL support in macOS, due to environmental factors causing the build to fail. LensKit will still work fine in MKL environments, it just won't use its MKL-based k-NN acceleration on macOS. Linux and Windows are still unchanged. With 0.11, we will also begin publishing packages to conda-forge; we expect MKL acceleration to work in that environment.
What’s Changed
- Update @actions/core for CI build (#205) @mdekstrand
- ALS: Refactor common matrix & fix tests (#204) @mdekstrand
- added new ratings for predict method in ImplicitMF (#202) @carlos10seg
- Remove BiasedMFPredictor in favor of Bias (#201) @mdekstrand
- Fix failures with unexpected parallel package installs (#199) @mdekstrand
- [DOC/FIX] Correction in ImplicitMF docstring (#196) @ShwetanshuSingh
- Add known-rating predictor (#182) (#184) @carlos10seg
- Move Bias class into
biaspackage (#175) (#183) @carlos10seg - Bump @actions/core from 1.2.3 to 1.2.6 in /.github/actions/conda-env (#194) @dependabot
- Bump Numba support to 0.51 (#186) @mdekstrand
- Fix ALS run-time training (#114) for empty rating series (#187) @carlos10seg
- Add run-time training to ALS BiasedMF (#114) (#173) @carlos10seg
- Add transformuser and inversetransform_user methods to bias. (#181) @carlos10seg
- Python
Published by release-drafter[bot] over 5 years ago
lenskit - Better Processes
This release makes some improvements to multi-process support and item-item kNN resource use.
What’s Changed
- Manage random seeds in subprocesses (#179) @mdekstrand
- Support Numba 0.50 (#178) @mdekstrand
- Use parallel blocks for SciPy-based item-item CF training (#177) @mdekstrand
- Improve MP worker detection and disable item-item parallelism when run under MP (#176) @mdekstrand
- Use Hypothesis for testing and clean up tests (#172) @mdekstrand
- Remove unused math routines (#171) @mdekstrand
- Python
Published by release-drafter[bot] over 5 years ago
lenskit - Flow
Highlights of this release are significant improvements to parallel processing (we no longer use joblib), shared memory, and our first TensorFlow integrations.
What’s Changed
- Reorganize and improve documentation (#169) @mdekstrand
- Improve RecListAnalysis performance and parallelize (#164) @mdekstrand
- Make persistence configurable & reduce open file count (#165) @mdekstrand
- Fix Python versions and conda environments in CI builds (#163) @mdekstrand
- Add TensorFlow support (#159) @mdekstrand
- Improve parallel configuration and docs (#161) @mdekstrand
- Use setup.cfg for all dev deps, including in Conda (#160) @mdekstrand
- Add fit_transform API to Bias (#158) @mdekstrand
- Remove dead code and add tests (#157) @mdekstrand
- Add scikit-learn SVD (#156) @mdekstrand
- Remove old sharing and file APIs (#155) @mdekstrand
- Use ProcessPoolExecutor instead of joblib (#154) @mdekstrand
- Add 'persist' API to sharing (#153) @mdekstrand
- Python
Published by release-drafter[bot] over 5 years ago
lenskit - Gone in 60 Seconds
This release has some performance and improvements, including full Python 3.8, Pandas 1.0, and Numba 0.49 testing.
This is the last release we expect to use JobLib to parallelize batch prediction and recommendation. Any Python scripts that call the batch routines (batch.predict, batch.recommend, or MultiEval) need to be import-protected: their code needs to be in functions, and only invoked with a __name__ guard:
if __name__ = '__main__':
do_stuff()
Unprotected scripts (where the code is just in the script, and runs when the script is imported as a module) will probably still work with LensKit 0.9, but will not work in the next version of LensKit. Jupyter notebooks should be just fine - when they are run, the IPython kernel is actually running, and it is properly protected.
What’s Changed
- Improving testing with minimal dependencies (#151) @mdekstrand
- Skip predictions when no ratings to predict (#149) @mdekstrand
- Use BinPickle for sharing (#148) @mdekstrand
- Support iterating over training iterations (#144) @mdekstrand
- Fix for Numba 0.49 compatibility (#146) @mdekstrand
- Use GitHub Actions for CI (#143) @mdekstrand
- Use declarative configuration for builds (#142) @mdekstrand
- Add model stores for batch multiprocessing (#139) @mdekstrand
- Improve top-N metric performance (#140) @mdekstrand
- Fix Conda Python 3.8 testing (#138) @mdekstrand
- Unify configuration points (#137) @mdekstrand
- Clean up RNG infrastructure (#136) @mdekstrand
- Add configurable RNG infrastructure (#135) @mdekstrand
- Remove deprecated and unused features (#134) @mdekstrand
- Version bumps - Pandas 1.0 and Python 3.8 (#133) @mdekstrand
- Python
Published by release-drafter[bot] over 5 years ago
lenskit - Will It Blend?
This release cleans up dependency problems to make it easier to reliably install LensKit. We remove some unused utility code that had compatibility problems.
- Remove
CSR.sort_values- we were no longer using this function, and it failed to compile with Numba 0.46. - Change dependency versions
- Python
Published by mdekstrand about 6 years ago
lenskit - Faster For Real This Time
This is the same as 0.8.0, with a couple of small build environment tweaks to properly deploy the release.
- Python
Published by mdekstrand about 6 years ago
lenskit - Not Sure About Further Or Higher, But Definitely Faster
See the GitHub milestone for full change list.
Infrastructure Updates
- Dropped support for Python 3.5
- Removed
*argsfromAlgorithm.fit, so additional data must be provided via keyword arguments - Made
Algorithm.fitimplementations consistently take**kwargsfor hybrid flexibility
Algorithm Updates
- Substantial performance and stability improvements to item-item
- Added a coordinate descent solver to explicit-feedback ALS and made it the default. The old
LU-based solver is still available with
method='lu'. - Added a conjugate gradient solver to implicit-feedback ALS and made it the default.
- Added a random recommender
- Python
Published by mdekstrand about 6 years ago
lenskit - The One With Empty Lists
See the GitHub milestone for full change list.
- Use Joblib for parallelism in batch routines.
nprocsarguments are renamed ton_jobsfor consistency with Joblib.- Removed
paralleloption onMultiEvalalgorithms, as it was unused. - Made
MultiEvaldefault to using each recommender's default candidate set, and adapt algorithms to recommenders prior to evaluation. - Make
MultiEvalrequire named arguments for most things. - Add support to
MultiEvalto save the fit models. RecListAnalysiscan optionally ensure all test users are returned, even if they lack recommendation lists.- Performance improvements to algorithms and evaluation.
- Python
Published by mdekstrand almost 7 years ago
lenskit - 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
sumaggregate. - Improve performance and documentation
- Python
Published by mdekstrand almost 7 years ago
lenskit - Easier and Correcter
Higlights:
- The
saveandloadmethods 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. The
Recommenderinterfaces now take aCandidateSelectorto determine default candidates, so client code does not need to compute candidates on their own. One effect of this is that thebatch.recommendfunction no longer requires a candidate selector, and there can be problems if you callRecommender.adaptbefore 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
nprocsas 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
CSRclass to be more ergonomic from Python, at the expense of making the NumPy jitclass indirect. It is available in the.Nattribute. Big improvement: it is now picklable.
- Python
Published by mdekstrand almost 7 years ago
lenskit - 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
- Python
Published by mdekstrand about 7 years ago