Releases: MobileTeleSystems/RecTools
0.10.0
✨ Highlights ✨
Bayesian Personalized Ranking Matrix Factorization (BPR-MF) algorithm is now in the framework!
See model detail in our extended baselines tutorial
All updates
Added
ImplicitBPRWrapperModel
model with algorithm description in extended baselines tutorial (#232, #239)- All vector models and
EASEModel
support for enabling ranking on GPU and selecting number of threads for CPU ranking. Addedrecommend_n_threads
andrecommend_use_gpu_ranking
parameters toEASEModel
,ImplicitALSWrapperModel
,ImplicitBPRWrapperModel
,PureSVDModel
andDSSMModel
. Addedrecommend_use_gpu_ranking
toLightFMWrapperModel
. GPU and CPU ranking may provide different ordering of items with identical scores in recommendation table, so this could change ordering items in recommendations since GPU ranking is now used as a default one. (#218)
0.9.0
✨ Highlights ✨
- Models initialisation from configs is introduced! As well as getting hyper-params and getting configs. We have one common function for all models:
model_from_config
. And we have methods for specific models:from_config
,get_config
,get_params
. - Models saving and loading is introduced with
load_model
common function and model methodssave
andload
.
Please see details for configs and save+load usage in example. All models support new functions exceptDSSMModel
. fit_partial
method is introduced forImplicitALSWrapperModel
andLightFMWrapperModel
. These models can now resume training from the previous point.- LightFM Python 3.12+ support!
All updates
Added
from_config
,get_config
andget_params
methods to all models except neural-net-based (#170)fit_partial
implementation forImplicitALSWrapperModel
andLightFMWrapperModel
(#203, #210, #223)save
andload
methods to all of the models (#206)- Model configs example (#207,#219)
use_gpu
argument toImplicitRanker.rank
method (#201)keep_extra_cols
argument toDataset.construct
andInteractions.from_raw
methods.include_extra_cols
argument toDataset.get_raw_interactions
andInteractions.to_external
methods (#208)- dtype adjustment to
recommend
,recommend_to_items
methods ofModelBase
(#211) load_model
function (#213)model_from_config
function (#214)get_cat_features
method toSparseFeatures
(#221)- LightFM Python 3.12+ support (#224)
Fixed
- Implicit ALS matrix zero assignment size (#228)
Removed
- [Breaking] Python 3.8 support (#222)
New contributors
@spirinamayya made their first contribution in #211
@Waujito made their first contribution in #201
0.8.0
✨ Highlights ✨
Option for debiased calculation to all of the TruePositive-based metrics (both ranking & classification). See our Debiased metrics calculation user guide for full info. Pass debias_config
during metric's initialization to enable this feature.
All updates
Added
debias_config
parameter for classification and ranking metrics.- New parameter
is_debiased
tocalc_from_confusion_df
,calc_per_user_from_confusion_df
methods of classification metrics,calc_from_fitted
,calc_per_user_from_fitted
methods of auc and rankning (MAP) metrics,calc_from_merged
,calc_per_user_from_merged
methods of ranking (NDCG, MRR) metrics. (#152) nbformat >= 4.2.0
dependency to[visuals]
extra (#169)filter_interactions
method ofDataset
(#177)on_unsupported_targets
parameter torecommend
andrecommend_to_items
model methods (#177)- Use
nmslib-metabrainz
for Python 3.11 and upper (#180)
Fixed
display()
method inMetricsApp
(#169)IntraListDiversity
metric computation incross_validate
(#177)- Allow warp-kos loss for
LightFMWrapperMode
l (#175)
Removed
- [Breaking]
assume_external_ids
parameter inrecommend
andrecommend_to_items
model methods (#177)
New contributors
0.7.0
✨ Highlights ✨
- Interactive
MetricsApp
widget is now here! Extremely useful for metrics trade-off analysis. Has options to color models on plot based on their hyper-params. Check screenshots in cross-validation example. - A lot of new metrics: recommendations DQ, PartilAUC based ranking metrics, recommendations intersection between multiple models, r-precision. All computations are highly optimized and fully compatible with
cross_validate
- Theory & Practice RecSys Baselines Extended Tutorial
All updates
Added
- Extended Theory&Practice RecSys baselines tutorial (#139)
MetricsApp
to create plotly scatterplot widgets for metric-to-metric trade-off analysis (#140, #154)Intersection
metric (#148)PartialAUC
andPAP
metrics (#149)- New params (
tol
,maxiter
,random_state
) to thePureSVDModel
(#130) - Recommendations data quality metrics:
SufficientReco
,UnrepeatedReco
,CoveredUsers
(#155) r_precision
parameter toPrecision
metric (#155)
Fixed
- Used
rectools-lightfm
instead of purelightfm
that allowed to install it using poetry>=1.5.0 (#165) - Added restriction to
pytorch
version for MacOSX + x86_64 that allows to install it on such platforms (#142) PopularInCategoryModel
fitting for multiple times,cross_validate
compatibility, behaviour with empty category interactions (#163)
0.6.0
✨ Highlights ✨
- Added support of recommendations for cold and warm users/items
- Added support for Python 3.11 and 3.12
- Stopped supporting Python 3.7 and old versions of some dependencies
All updates
Added
- Warm users/items support in
Dataset
(#77) - Warm and cold users/items support in
ModelBase
and all possible models (#77, #120, #122) - Warm and cold users/items support in
cross_validate
(#77) - [Breaking] Default value for train dataset type and params for user and item dataset types in
DSSMModel
(#122) - [Breaking]
n_factors
anddeterministic
params toDSSMModel
(#122) - Hit Rate metric (#124)
- Python
3.11
support (withoutnmslib
) (#126) - Python
3.12
support (withoutnmslib
andlightfm
) (#126)
Changed
- Changed the logic of choosing random sampler for
RandomModel
and increased the sampling speed (#120) - [Breaking] Changed the logic of
RandomModel
: now the recommendations are different for repeated calls of recommend methods (#120) - Torch datasets to support warm recommendations (#122)
- [Breaking] Replaced
include_warm
parameter inDataset.get_user_item_matrix
to pairinclude_warm_users
andinclude_warm_items
(#122) - [Breaking] Renamed torch datasets and
dataset_type
totrain_dataset_type
param inDSSMModel
(#122) - [Breaking] Updated minimum versions of
numpy
,scipy
,pandas
,typeguard
(#126) - [Breaking] Set restriction
scipy < 1.13
(#126)
Removed
0.5.0
✨ Highlights ✨
Visualization app is now here! See our extended example for cool interactive Jupyter widgets.
Also we introduced EASE
model and a new popularity bias metric AvgRecPopularity
.
All updates
Added
VisualApp
andItemToItemVisualApp
widgets for visual comparison of recommendations (#80, #82, #85, #115)- Methods for conversion
Interactions
to raw form and for getting raw interactions fromDataset
(#69) AvgRecPopularity (Average Recommendation Popularity)
tometrics
(#81)- Added
normalized
parameter toAvgRecPopularity
metric (#89) - Added
EASE
model (#107)
Changed
- Loosened
pandas
,torch
andtorch-light
versions forpython >= 3.8
(#58)
Fixed
0.4.2
Added
- Ability to pass internal ids to
recommend
andrecommend_to_items
methods and get internal ids back (#70) rectools.model_selection.cross_validate
function (#71, #73)
Changed
- Loosened
lightfm
version, now it's possible to use 1.16 and 1.17 (#72)
Fixed
- Small bug in
LastNSplitter
with incorrecti_split
in info (#70)
0.4.1
Summary
- Enhanced examples
- Optimised DSSM inference
- Updated high border of
attrs
version to24.0.0
All updates
Added
Changed
0.4.0
✨ Highlights ✨
We have much simplified RecTools installation with pip
and poetry
. If you faced problems before, we recommend to try version 0.4.0
and above
- [Breaking] Bumped
implicit
from0.4.4
to^0.7.1
- [Breaking] Moved
nmslib
andlightfm
to extras. Renamednn
extra totorch
- [Breaking] Improved
TimeRangeSplitter
interface: no need for pre-computing fold borders any more - New metrics:
MRR
,F1Beta
,MCC
- New splitters for cross-validation:
RandomSplitter
,LastNSplitter
- Significantly optimized inference speed for latent factors models (
iALS
,LightFM
,PureSVD
) Python 3.10
support 🎉
All updates
Added
MRR (Mean Reciprocal Rank)
tometrics
(#29)F1beta
,MCC (Matthew correlation coefficient)
tometrics
(#32)- Base
Splitter
class to construct data splitters (#31) RandomSplitter
tomodel_selection
(#31)LastNSplitter
tomodel_selection
(#33)- Support for
Python 3.10
(#47)
Changed
- Bumped
implicit
version to0.7.1
(#45) - Bumped
lightfm
version to1.17
(#43) - Bumped
pylint
version to2.17.6
(#43) - Moved
nmslib
to extras (#36) - Moved
lightfm
to extras (#51) - Renamed
nn
extra totorch
(#51) - Optimized inference for vector models with COSINE and DOT distances using
implicit
library topk method (#52) - Changed initialization of
TimeRangeSplitter
(instead ofdate_range
argument, usetest_size
andn_splits
) (#53) - Changed split infos key names in splitters (#53)
Fixed
- Bugs with new version of
pytorch_lightning
(#43) pylint
config for new version (#43)- Cyclic imports (#45)
Removed
Markdown
dependancy (#54)
Release v0.3.0
- Optimized
IdMap
. In the new version internal ids are not sorted. - Significantly optimized
TimeRangeSplit
. Renamed toTimeRangeSplitter
. Changed interface. - Fixed bug in
MAP
metric calculation.