Improvements
- Added list-sampler with negative_ratio support, sequence sorting and group records by multiple columns
- Added support for early stopping rules, with the first built-in rule being the `MaxValidationRule`
- Slightly improve `MemoryInteractionDataset` performance by removing unneeded type casts and simplifying record conversion
- Improve recommender training workflow, by abstracting gradient computation, weight updates and improve separation of concerns through specific functions that should focus on each subtask (new methods: `_sample_batch()`, `_predict_batch()`, `_compute_batch_loss()`, `_compute_reg_loss()`)
- Improve recommender logging: optional console (defaults to on) and file (defaults to off) logger, with error, warning and info logs
- Allow passing custom parameters to `InteractionDataset` instances, when instantiating them through the integrated datasets submodule
- Automatically compute regularization for recommenders that use `tf.keras.Model` or `tf.keras.Layer` trainable variables with any regularization parameter set
- Change how metrics are passed to evaluation procedures, to improve readability and extensibility. Now instead of receiving tuples with functions and extra params, it receives callable instances of those metrics:
- *From*: `metrics={'HR': (hit_ratio, {}), 'NDCG': (ndcg, {})}, 'FScore': (f_score, {'beta': 1})`
- *To*: `metrics=[HitRatio(), NDCG(), FScore(beta=1)]`
Bugfixes
- Fix bug on integrated datasets `get_test_dataset` that could end up generating test datasets (via `leave_k_out`) instead of using the offered test dataset
- Fix temporary `DatabaseInteractionDataset` files not being deleted at times
Others
- Add error handling to the ranking evaluation process
- Add examples to showcase extending existing recommenders