replay-rec 0.21.0__tar.gz → 0.21.0rc0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {replay_rec-0.21.0 → replay_rec-0.21.0rc0}/PKG-INFO +11 -17
- {replay_rec-0.21.0 → replay_rec-0.21.0rc0}/pyproject.toml +11 -18
- {replay_rec-0.21.0 → replay_rec-0.21.0rc0}/replay/__init__.py +1 -1
- replay_rec-0.21.0rc0/replay/experimental/metrics/__init__.py +62 -0
- replay_rec-0.21.0rc0/replay/experimental/metrics/base_metric.py +603 -0
- replay_rec-0.21.0rc0/replay/experimental/metrics/coverage.py +97 -0
- replay_rec-0.21.0rc0/replay/experimental/metrics/experiment.py +175 -0
- replay_rec-0.21.0rc0/replay/experimental/metrics/hitrate.py +26 -0
- replay_rec-0.21.0rc0/replay/experimental/metrics/map.py +30 -0
- replay_rec-0.21.0rc0/replay/experimental/metrics/mrr.py +18 -0
- replay_rec-0.21.0rc0/replay/experimental/metrics/ncis_precision.py +31 -0
- replay_rec-0.21.0rc0/replay/experimental/metrics/ndcg.py +49 -0
- replay_rec-0.21.0rc0/replay/experimental/metrics/precision.py +22 -0
- replay_rec-0.21.0rc0/replay/experimental/metrics/recall.py +25 -0
- replay_rec-0.21.0rc0/replay/experimental/metrics/rocauc.py +49 -0
- replay_rec-0.21.0rc0/replay/experimental/metrics/surprisal.py +90 -0
- replay_rec-0.21.0rc0/replay/experimental/metrics/unexpectedness.py +76 -0
- replay_rec-0.21.0rc0/replay/experimental/models/__init__.py +50 -0
- replay_rec-0.21.0rc0/replay/experimental/models/admm_slim.py +257 -0
- replay_rec-0.21.0rc0/replay/experimental/models/base_neighbour_rec.py +200 -0
- replay_rec-0.21.0rc0/replay/experimental/models/base_rec.py +1386 -0
- replay_rec-0.21.0rc0/replay/experimental/models/base_torch_rec.py +234 -0
- replay_rec-0.21.0rc0/replay/experimental/models/cql.py +454 -0
- replay_rec-0.21.0rc0/replay/experimental/models/ddpg.py +932 -0
- replay_rec-0.21.0rc0/replay/experimental/models/dt4rec/dt4rec.py +189 -0
- replay_rec-0.21.0rc0/replay/experimental/models/dt4rec/gpt1.py +401 -0
- replay_rec-0.21.0rc0/replay/experimental/models/dt4rec/trainer.py +127 -0
- replay_rec-0.21.0rc0/replay/experimental/models/dt4rec/utils.py +264 -0
- replay_rec-0.21.0rc0/replay/experimental/models/extensions/spark_custom_models/als_extension.py +792 -0
- replay_rec-0.21.0rc0/replay/experimental/models/hierarchical_recommender.py +331 -0
- replay_rec-0.21.0rc0/replay/experimental/models/implicit_wrap.py +131 -0
- replay_rec-0.21.0rc0/replay/experimental/models/lightfm_wrap.py +303 -0
- replay_rec-0.21.0rc0/replay/experimental/models/mult_vae.py +332 -0
- replay_rec-0.21.0rc0/replay/experimental/models/neural_ts.py +986 -0
- replay_rec-0.21.0rc0/replay/experimental/models/neuromf.py +406 -0
- replay_rec-0.21.0rc0/replay/experimental/models/scala_als.py +293 -0
- replay_rec-0.21.0rc0/replay/experimental/models/u_lin_ucb.py +115 -0
- replay_rec-0.21.0rc0/replay/experimental/nn/data/__init__.py +1 -0
- replay_rec-0.21.0rc0/replay/experimental/nn/data/schema_builder.py +102 -0
- replay_rec-0.21.0rc0/replay/experimental/preprocessing/__init__.py +3 -0
- replay_rec-0.21.0rc0/replay/experimental/preprocessing/data_preparator.py +839 -0
- replay_rec-0.21.0rc0/replay/experimental/preprocessing/padder.py +229 -0
- replay_rec-0.21.0rc0/replay/experimental/preprocessing/sequence_generator.py +208 -0
- replay_rec-0.21.0rc0/replay/experimental/scenarios/__init__.py +1 -0
- replay_rec-0.21.0rc0/replay/experimental/scenarios/obp_wrapper/__init__.py +8 -0
- replay_rec-0.21.0rc0/replay/experimental/scenarios/obp_wrapper/obp_optuna_objective.py +74 -0
- replay_rec-0.21.0rc0/replay/experimental/scenarios/obp_wrapper/replay_offline.py +261 -0
- replay_rec-0.21.0rc0/replay/experimental/scenarios/obp_wrapper/utils.py +85 -0
- replay_rec-0.21.0rc0/replay/experimental/scenarios/two_stages/reranker.py +117 -0
- replay_rec-0.21.0rc0/replay/experimental/scenarios/two_stages/two_stages_scenario.py +757 -0
- replay_rec-0.21.0rc0/replay/experimental/utils/logger.py +24 -0
- replay_rec-0.21.0rc0/replay/experimental/utils/model_handler.py +186 -0
- replay_rec-0.21.0rc0/replay/experimental/utils/session_handler.py +44 -0
- replay_rec-0.21.0rc0/replay/models/extensions/ann/__init__.py +0 -0
- replay_rec-0.21.0rc0/replay/models/extensions/ann/entities/__init__.py +0 -0
- replay_rec-0.21.0rc0/replay/models/extensions/ann/index_builders/__init__.py +0 -0
- replay_rec-0.21.0rc0/replay/models/extensions/ann/index_inferers/__init__.py +0 -0
- replay_rec-0.21.0rc0/replay/models/extensions/ann/index_stores/__init__.py +0 -0
- {replay_rec-0.21.0 → replay_rec-0.21.0rc0}/LICENSE +0 -0
- {replay_rec-0.21.0 → replay_rec-0.21.0rc0}/NOTICE +0 -0
- {replay_rec-0.21.0 → replay_rec-0.21.0rc0}/README.md +0 -0
- {replay_rec-0.21.0 → replay_rec-0.21.0rc0}/replay/data/__init__.py +0 -0
- {replay_rec-0.21.0 → replay_rec-0.21.0rc0}/replay/data/dataset.py +0 -0
- {replay_rec-0.21.0 → replay_rec-0.21.0rc0}/replay/data/dataset_utils/__init__.py +0 -0
- {replay_rec-0.21.0 → replay_rec-0.21.0rc0}/replay/data/dataset_utils/dataset_label_encoder.py +0 -0
- {replay_rec-0.21.0 → replay_rec-0.21.0rc0}/replay/data/nn/__init__.py +0 -0
- {replay_rec-0.21.0 → replay_rec-0.21.0rc0}/replay/data/nn/parquet/__init__.py +0 -0
- {replay_rec-0.21.0 → replay_rec-0.21.0rc0}/replay/data/nn/parquet/collate.py +0 -0
- {replay_rec-0.21.0 → replay_rec-0.21.0rc0}/replay/data/nn/parquet/constants/__init__.py +0 -0
- {replay_rec-0.21.0 → replay_rec-0.21.0rc0}/replay/data/nn/parquet/constants/batches.py +0 -0
- {replay_rec-0.21.0 → replay_rec-0.21.0rc0}/replay/data/nn/parquet/constants/device.py +0 -0
- {replay_rec-0.21.0 → replay_rec-0.21.0rc0}/replay/data/nn/parquet/constants/filesystem.py +0 -0
- {replay_rec-0.21.0 → replay_rec-0.21.0rc0}/replay/data/nn/parquet/constants/metadata.py +0 -0
- {replay_rec-0.21.0 → replay_rec-0.21.0rc0}/replay/data/nn/parquet/fixed_batch_dataset.py +0 -0
- {replay_rec-0.21.0 → replay_rec-0.21.0rc0}/replay/data/nn/parquet/impl/__init__.py +0 -0
- {replay_rec-0.21.0 → replay_rec-0.21.0rc0}/replay/data/nn/parquet/impl/array_1d_column.py +0 -0
- {replay_rec-0.21.0 → replay_rec-0.21.0rc0}/replay/data/nn/parquet/impl/array_2d_column.py +0 -0
- {replay_rec-0.21.0 → replay_rec-0.21.0rc0}/replay/data/nn/parquet/impl/column_protocol.py +0 -0
- {replay_rec-0.21.0 → replay_rec-0.21.0rc0}/replay/data/nn/parquet/impl/indexing.py +0 -0
- {replay_rec-0.21.0 → replay_rec-0.21.0rc0}/replay/data/nn/parquet/impl/masking.py +0 -0
- {replay_rec-0.21.0 → replay_rec-0.21.0rc0}/replay/data/nn/parquet/impl/named_columns.py +0 -0
- {replay_rec-0.21.0 → replay_rec-0.21.0rc0}/replay/data/nn/parquet/impl/numeric_column.py +0 -0
- {replay_rec-0.21.0 → replay_rec-0.21.0rc0}/replay/data/nn/parquet/impl/utils.py +0 -0
- {replay_rec-0.21.0 → replay_rec-0.21.0rc0}/replay/data/nn/parquet/info/__init__.py +0 -0
- {replay_rec-0.21.0 → replay_rec-0.21.0rc0}/replay/data/nn/parquet/info/distributed_info.py +0 -0
- {replay_rec-0.21.0 → replay_rec-0.21.0rc0}/replay/data/nn/parquet/info/partitioning.py +0 -0
- {replay_rec-0.21.0 → replay_rec-0.21.0rc0}/replay/data/nn/parquet/info/replicas.py +0 -0
- {replay_rec-0.21.0 → replay_rec-0.21.0rc0}/replay/data/nn/parquet/info/worker_info.py +0 -0
- {replay_rec-0.21.0 → replay_rec-0.21.0rc0}/replay/data/nn/parquet/iterable_dataset.py +0 -0
- {replay_rec-0.21.0 → replay_rec-0.21.0rc0}/replay/data/nn/parquet/iterator.py +0 -0
- {replay_rec-0.21.0 → replay_rec-0.21.0rc0}/replay/data/nn/parquet/metadata/__init__.py +0 -0
- {replay_rec-0.21.0 → replay_rec-0.21.0rc0}/replay/data/nn/parquet/metadata/metadata.py +0 -0
- {replay_rec-0.21.0 → replay_rec-0.21.0rc0}/replay/data/nn/parquet/parquet_dataset.py +0 -0
- {replay_rec-0.21.0 → replay_rec-0.21.0rc0}/replay/data/nn/parquet/parquet_module.py +0 -0
- {replay_rec-0.21.0 → replay_rec-0.21.0rc0}/replay/data/nn/parquet/partitioned_iterable_dataset.py +0 -0
- {replay_rec-0.21.0 → replay_rec-0.21.0rc0}/replay/data/nn/parquet/utils/__init__.py +0 -0
- {replay_rec-0.21.0 → replay_rec-0.21.0rc0}/replay/data/nn/parquet/utils/compute_length.py +0 -0
- {replay_rec-0.21.0 → replay_rec-0.21.0rc0}/replay/data/nn/schema.py +0 -0
- {replay_rec-0.21.0 → replay_rec-0.21.0rc0}/replay/data/nn/sequence_tokenizer.py +0 -0
- {replay_rec-0.21.0 → replay_rec-0.21.0rc0}/replay/data/nn/sequential_dataset.py +0 -0
- {replay_rec-0.21.0 → replay_rec-0.21.0rc0}/replay/data/nn/torch_sequential_dataset.py +0 -0
- {replay_rec-0.21.0 → replay_rec-0.21.0rc0}/replay/data/nn/utils.py +0 -0
- {replay_rec-0.21.0 → replay_rec-0.21.0rc0}/replay/data/schema.py +0 -0
- {replay_rec-0.21.0 → replay_rec-0.21.0rc0}/replay/data/spark_schema.py +0 -0
- {replay_rec-0.21.0 → replay_rec-0.21.0rc0}/replay/data/utils/__init__.py +0 -0
- {replay_rec-0.21.0 → replay_rec-0.21.0rc0}/replay/data/utils/batching.py +0 -0
- {replay_rec-0.21.0 → replay_rec-0.21.0rc0}/replay/data/utils/typing/__init__.py +0 -0
- {replay_rec-0.21.0 → replay_rec-0.21.0rc0}/replay/data/utils/typing/dtype.py +0 -0
- {replay_rec-0.21.0/replay/models/extensions → replay_rec-0.21.0rc0/replay/experimental}/__init__.py +0 -0
- {replay_rec-0.21.0/replay/models/extensions/ann → replay_rec-0.21.0rc0/replay/experimental/models/dt4rec}/__init__.py +0 -0
- {replay_rec-0.21.0/replay/models/extensions/ann/entities → replay_rec-0.21.0rc0/replay/experimental/models/extensions/spark_custom_models}/__init__.py +0 -0
- {replay_rec-0.21.0/replay/models/extensions/ann/index_builders → replay_rec-0.21.0rc0/replay/experimental/scenarios/two_stages}/__init__.py +0 -0
- {replay_rec-0.21.0/replay/models/extensions/ann/index_inferers → replay_rec-0.21.0rc0/replay/experimental/utils}/__init__.py +0 -0
- {replay_rec-0.21.0 → replay_rec-0.21.0rc0}/replay/metrics/__init__.py +0 -0
- {replay_rec-0.21.0 → replay_rec-0.21.0rc0}/replay/metrics/base_metric.py +0 -0
- {replay_rec-0.21.0 → replay_rec-0.21.0rc0}/replay/metrics/categorical_diversity.py +0 -0
- {replay_rec-0.21.0 → replay_rec-0.21.0rc0}/replay/metrics/coverage.py +0 -0
- {replay_rec-0.21.0 → replay_rec-0.21.0rc0}/replay/metrics/descriptors.py +0 -0
- {replay_rec-0.21.0 → replay_rec-0.21.0rc0}/replay/metrics/experiment.py +0 -0
- {replay_rec-0.21.0 → replay_rec-0.21.0rc0}/replay/metrics/hitrate.py +0 -0
- {replay_rec-0.21.0 → replay_rec-0.21.0rc0}/replay/metrics/map.py +0 -0
- {replay_rec-0.21.0 → replay_rec-0.21.0rc0}/replay/metrics/mrr.py +0 -0
- {replay_rec-0.21.0 → replay_rec-0.21.0rc0}/replay/metrics/ndcg.py +0 -0
- {replay_rec-0.21.0 → replay_rec-0.21.0rc0}/replay/metrics/novelty.py +0 -0
- {replay_rec-0.21.0 → replay_rec-0.21.0rc0}/replay/metrics/offline_metrics.py +0 -0
- {replay_rec-0.21.0 → replay_rec-0.21.0rc0}/replay/metrics/precision.py +0 -0
- {replay_rec-0.21.0 → replay_rec-0.21.0rc0}/replay/metrics/recall.py +0 -0
- {replay_rec-0.21.0 → replay_rec-0.21.0rc0}/replay/metrics/rocauc.py +0 -0
- {replay_rec-0.21.0 → replay_rec-0.21.0rc0}/replay/metrics/surprisal.py +0 -0
- {replay_rec-0.21.0 → replay_rec-0.21.0rc0}/replay/metrics/torch_metrics_builder.py +0 -0
- {replay_rec-0.21.0 → replay_rec-0.21.0rc0}/replay/metrics/unexpectedness.py +0 -0
- {replay_rec-0.21.0 → replay_rec-0.21.0rc0}/replay/models/__init__.py +0 -0
- {replay_rec-0.21.0 → replay_rec-0.21.0rc0}/replay/models/als.py +0 -0
- {replay_rec-0.21.0 → replay_rec-0.21.0rc0}/replay/models/association_rules.py +0 -0
- {replay_rec-0.21.0 → replay_rec-0.21.0rc0}/replay/models/base_neighbour_rec.py +0 -0
- {replay_rec-0.21.0 → replay_rec-0.21.0rc0}/replay/models/base_rec.py +0 -0
- {replay_rec-0.21.0 → replay_rec-0.21.0rc0}/replay/models/cat_pop_rec.py +0 -0
- {replay_rec-0.21.0 → replay_rec-0.21.0rc0}/replay/models/cluster.py +0 -0
- {replay_rec-0.21.0 → replay_rec-0.21.0rc0}/replay/models/common.py +0 -0
- {replay_rec-0.21.0/replay/models/extensions/ann/index_stores → replay_rec-0.21.0rc0/replay/models/extensions}/__init__.py +0 -0
- {replay_rec-0.21.0 → replay_rec-0.21.0rc0}/replay/models/extensions/ann/ann_mixin.py +0 -0
- {replay_rec-0.21.0 → replay_rec-0.21.0rc0}/replay/models/extensions/ann/entities/base_hnsw_param.py +0 -0
- {replay_rec-0.21.0 → replay_rec-0.21.0rc0}/replay/models/extensions/ann/entities/hnswlib_param.py +0 -0
- {replay_rec-0.21.0 → replay_rec-0.21.0rc0}/replay/models/extensions/ann/entities/nmslib_hnsw_param.py +0 -0
- {replay_rec-0.21.0 → replay_rec-0.21.0rc0}/replay/models/extensions/ann/index_builders/base_index_builder.py +0 -0
- {replay_rec-0.21.0 → replay_rec-0.21.0rc0}/replay/models/extensions/ann/index_builders/driver_hnswlib_index_builder.py +0 -0
- {replay_rec-0.21.0 → replay_rec-0.21.0rc0}/replay/models/extensions/ann/index_builders/driver_nmslib_index_builder.py +0 -0
- {replay_rec-0.21.0 → replay_rec-0.21.0rc0}/replay/models/extensions/ann/index_builders/executor_hnswlib_index_builder.py +0 -0
- {replay_rec-0.21.0 → replay_rec-0.21.0rc0}/replay/models/extensions/ann/index_builders/executor_nmslib_index_builder.py +0 -0
- {replay_rec-0.21.0 → replay_rec-0.21.0rc0}/replay/models/extensions/ann/index_builders/nmslib_index_builder_mixin.py +0 -0
- {replay_rec-0.21.0 → replay_rec-0.21.0rc0}/replay/models/extensions/ann/index_inferers/base_inferer.py +0 -0
- {replay_rec-0.21.0 → replay_rec-0.21.0rc0}/replay/models/extensions/ann/index_inferers/hnswlib_filter_index_inferer.py +0 -0
- {replay_rec-0.21.0 → replay_rec-0.21.0rc0}/replay/models/extensions/ann/index_inferers/hnswlib_index_inferer.py +0 -0
- {replay_rec-0.21.0 → replay_rec-0.21.0rc0}/replay/models/extensions/ann/index_inferers/nmslib_filter_index_inferer.py +0 -0
- {replay_rec-0.21.0 → replay_rec-0.21.0rc0}/replay/models/extensions/ann/index_inferers/nmslib_index_inferer.py +0 -0
- {replay_rec-0.21.0 → replay_rec-0.21.0rc0}/replay/models/extensions/ann/index_inferers/utils.py +0 -0
- {replay_rec-0.21.0 → replay_rec-0.21.0rc0}/replay/models/extensions/ann/index_stores/base_index_store.py +0 -0
- {replay_rec-0.21.0 → replay_rec-0.21.0rc0}/replay/models/extensions/ann/index_stores/hdfs_index_store.py +0 -0
- {replay_rec-0.21.0 → replay_rec-0.21.0rc0}/replay/models/extensions/ann/index_stores/shared_disk_index_store.py +0 -0
- {replay_rec-0.21.0 → replay_rec-0.21.0rc0}/replay/models/extensions/ann/index_stores/spark_files_index_store.py +0 -0
- {replay_rec-0.21.0 → replay_rec-0.21.0rc0}/replay/models/extensions/ann/index_stores/utils.py +0 -0
- {replay_rec-0.21.0 → replay_rec-0.21.0rc0}/replay/models/extensions/ann/utils.py +0 -0
- {replay_rec-0.21.0 → replay_rec-0.21.0rc0}/replay/models/kl_ucb.py +0 -0
- {replay_rec-0.21.0 → replay_rec-0.21.0rc0}/replay/models/knn.py +0 -0
- {replay_rec-0.21.0 → replay_rec-0.21.0rc0}/replay/models/lin_ucb.py +0 -0
- {replay_rec-0.21.0 → replay_rec-0.21.0rc0}/replay/models/nn/__init__.py +0 -0
- {replay_rec-0.21.0 → replay_rec-0.21.0rc0}/replay/models/nn/loss/__init__.py +0 -0
- {replay_rec-0.21.0 → replay_rec-0.21.0rc0}/replay/models/nn/loss/sce.py +0 -0
- {replay_rec-0.21.0 → replay_rec-0.21.0rc0}/replay/models/nn/optimizer_utils/__init__.py +0 -0
- {replay_rec-0.21.0 → replay_rec-0.21.0rc0}/replay/models/nn/optimizer_utils/optimizer_factory.py +0 -0
- {replay_rec-0.21.0 → replay_rec-0.21.0rc0}/replay/models/nn/sequential/__init__.py +0 -0
- {replay_rec-0.21.0 → replay_rec-0.21.0rc0}/replay/models/nn/sequential/bert4rec/__init__.py +0 -0
- {replay_rec-0.21.0 → replay_rec-0.21.0rc0}/replay/models/nn/sequential/bert4rec/dataset.py +0 -0
- {replay_rec-0.21.0 → replay_rec-0.21.0rc0}/replay/models/nn/sequential/bert4rec/lightning.py +0 -0
- {replay_rec-0.21.0 → replay_rec-0.21.0rc0}/replay/models/nn/sequential/bert4rec/model.py +0 -0
- {replay_rec-0.21.0 → replay_rec-0.21.0rc0}/replay/models/nn/sequential/callbacks/__init__.py +0 -0
- {replay_rec-0.21.0 → replay_rec-0.21.0rc0}/replay/models/nn/sequential/callbacks/prediction_callbacks.py +0 -0
- {replay_rec-0.21.0 → replay_rec-0.21.0rc0}/replay/models/nn/sequential/callbacks/validation_callback.py +0 -0
- {replay_rec-0.21.0 → replay_rec-0.21.0rc0}/replay/models/nn/sequential/compiled/__init__.py +0 -0
- {replay_rec-0.21.0 → replay_rec-0.21.0rc0}/replay/models/nn/sequential/compiled/base_compiled_model.py +0 -0
- {replay_rec-0.21.0 → replay_rec-0.21.0rc0}/replay/models/nn/sequential/compiled/bert4rec_compiled.py +0 -0
- {replay_rec-0.21.0 → replay_rec-0.21.0rc0}/replay/models/nn/sequential/compiled/sasrec_compiled.py +0 -0
- {replay_rec-0.21.0 → replay_rec-0.21.0rc0}/replay/models/nn/sequential/postprocessors/__init__.py +0 -0
- {replay_rec-0.21.0 → replay_rec-0.21.0rc0}/replay/models/nn/sequential/postprocessors/_base.py +0 -0
- {replay_rec-0.21.0 → replay_rec-0.21.0rc0}/replay/models/nn/sequential/postprocessors/postprocessors.py +0 -0
- {replay_rec-0.21.0 → replay_rec-0.21.0rc0}/replay/models/nn/sequential/sasrec/__init__.py +0 -0
- {replay_rec-0.21.0 → replay_rec-0.21.0rc0}/replay/models/nn/sequential/sasrec/dataset.py +0 -0
- {replay_rec-0.21.0 → replay_rec-0.21.0rc0}/replay/models/nn/sequential/sasrec/lightning.py +0 -0
- {replay_rec-0.21.0 → replay_rec-0.21.0rc0}/replay/models/nn/sequential/sasrec/model.py +0 -0
- {replay_rec-0.21.0 → replay_rec-0.21.0rc0}/replay/models/optimization/__init__.py +0 -0
- {replay_rec-0.21.0 → replay_rec-0.21.0rc0}/replay/models/optimization/optuna_mixin.py +0 -0
- {replay_rec-0.21.0 → replay_rec-0.21.0rc0}/replay/models/optimization/optuna_objective.py +0 -0
- {replay_rec-0.21.0 → replay_rec-0.21.0rc0}/replay/models/pop_rec.py +0 -0
- {replay_rec-0.21.0 → replay_rec-0.21.0rc0}/replay/models/query_pop_rec.py +0 -0
- {replay_rec-0.21.0 → replay_rec-0.21.0rc0}/replay/models/random_rec.py +0 -0
- {replay_rec-0.21.0 → replay_rec-0.21.0rc0}/replay/models/slim.py +0 -0
- {replay_rec-0.21.0 → replay_rec-0.21.0rc0}/replay/models/thompson_sampling.py +0 -0
- {replay_rec-0.21.0 → replay_rec-0.21.0rc0}/replay/models/ucb.py +0 -0
- {replay_rec-0.21.0 → replay_rec-0.21.0rc0}/replay/models/wilson.py +0 -0
- {replay_rec-0.21.0 → replay_rec-0.21.0rc0}/replay/models/word2vec.py +0 -0
- {replay_rec-0.21.0 → replay_rec-0.21.0rc0}/replay/nn/__init__.py +0 -0
- {replay_rec-0.21.0 → replay_rec-0.21.0rc0}/replay/nn/agg.py +0 -0
- {replay_rec-0.21.0 → replay_rec-0.21.0rc0}/replay/nn/attention.py +0 -0
- {replay_rec-0.21.0 → replay_rec-0.21.0rc0}/replay/nn/embedding.py +0 -0
- {replay_rec-0.21.0 → replay_rec-0.21.0rc0}/replay/nn/ffn.py +0 -0
- {replay_rec-0.21.0 → replay_rec-0.21.0rc0}/replay/nn/head.py +0 -0
- {replay_rec-0.21.0 → replay_rec-0.21.0rc0}/replay/nn/lightning/__init__.py +0 -0
- {replay_rec-0.21.0 → replay_rec-0.21.0rc0}/replay/nn/lightning/callback/__init__.py +0 -0
- {replay_rec-0.21.0 → replay_rec-0.21.0rc0}/replay/nn/lightning/callback/metrics_callback.py +0 -0
- {replay_rec-0.21.0 → replay_rec-0.21.0rc0}/replay/nn/lightning/callback/predictions_callback.py +0 -0
- {replay_rec-0.21.0 → replay_rec-0.21.0rc0}/replay/nn/lightning/module.py +0 -0
- {replay_rec-0.21.0 → replay_rec-0.21.0rc0}/replay/nn/lightning/optimizer.py +0 -0
- {replay_rec-0.21.0 → replay_rec-0.21.0rc0}/replay/nn/lightning/postprocessor/__init__.py +0 -0
- {replay_rec-0.21.0 → replay_rec-0.21.0rc0}/replay/nn/lightning/postprocessor/_base.py +0 -0
- {replay_rec-0.21.0 → replay_rec-0.21.0rc0}/replay/nn/lightning/postprocessor/seen_items.py +0 -0
- {replay_rec-0.21.0 → replay_rec-0.21.0rc0}/replay/nn/lightning/scheduler.py +0 -0
- {replay_rec-0.21.0 → replay_rec-0.21.0rc0}/replay/nn/loss/__init__.py +0 -0
- {replay_rec-0.21.0 → replay_rec-0.21.0rc0}/replay/nn/loss/base.py +0 -0
- {replay_rec-0.21.0 → replay_rec-0.21.0rc0}/replay/nn/loss/bce.py +0 -0
- {replay_rec-0.21.0 → replay_rec-0.21.0rc0}/replay/nn/loss/ce.py +0 -0
- {replay_rec-0.21.0 → replay_rec-0.21.0rc0}/replay/nn/loss/login_ce.py +0 -0
- {replay_rec-0.21.0 → replay_rec-0.21.0rc0}/replay/nn/loss/logout_ce.py +0 -0
- {replay_rec-0.21.0 → replay_rec-0.21.0rc0}/replay/nn/mask.py +0 -0
- {replay_rec-0.21.0 → replay_rec-0.21.0rc0}/replay/nn/normalization.py +0 -0
- {replay_rec-0.21.0 → replay_rec-0.21.0rc0}/replay/nn/output.py +0 -0
- {replay_rec-0.21.0 → replay_rec-0.21.0rc0}/replay/nn/sequential/__init__.py +0 -0
- {replay_rec-0.21.0 → replay_rec-0.21.0rc0}/replay/nn/sequential/sasrec/__init__.py +0 -0
- {replay_rec-0.21.0 → replay_rec-0.21.0rc0}/replay/nn/sequential/sasrec/agg.py +0 -0
- {replay_rec-0.21.0 → replay_rec-0.21.0rc0}/replay/nn/sequential/sasrec/diff_transformer.py +0 -0
- {replay_rec-0.21.0 → replay_rec-0.21.0rc0}/replay/nn/sequential/sasrec/model.py +0 -0
- {replay_rec-0.21.0 → replay_rec-0.21.0rc0}/replay/nn/sequential/sasrec/transformer.py +0 -0
- {replay_rec-0.21.0 → replay_rec-0.21.0rc0}/replay/nn/sequential/twotower/__init__.py +0 -0
- {replay_rec-0.21.0 → replay_rec-0.21.0rc0}/replay/nn/sequential/twotower/model.py +0 -0
- {replay_rec-0.21.0 → replay_rec-0.21.0rc0}/replay/nn/sequential/twotower/reader.py +0 -0
- {replay_rec-0.21.0 → replay_rec-0.21.0rc0}/replay/nn/transform/__init__.py +0 -0
- {replay_rec-0.21.0 → replay_rec-0.21.0rc0}/replay/nn/transform/copy.py +0 -0
- {replay_rec-0.21.0 → replay_rec-0.21.0rc0}/replay/nn/transform/grouping.py +0 -0
- {replay_rec-0.21.0 → replay_rec-0.21.0rc0}/replay/nn/transform/negative_sampling.py +0 -0
- {replay_rec-0.21.0 → replay_rec-0.21.0rc0}/replay/nn/transform/next_token.py +0 -0
- {replay_rec-0.21.0 → replay_rec-0.21.0rc0}/replay/nn/transform/rename.py +0 -0
- {replay_rec-0.21.0 → replay_rec-0.21.0rc0}/replay/nn/transform/reshape.py +0 -0
- {replay_rec-0.21.0 → replay_rec-0.21.0rc0}/replay/nn/transform/sequence_roll.py +0 -0
- {replay_rec-0.21.0 → replay_rec-0.21.0rc0}/replay/nn/transform/template/__init__.py +0 -0
- {replay_rec-0.21.0 → replay_rec-0.21.0rc0}/replay/nn/transform/template/sasrec.py +0 -0
- {replay_rec-0.21.0 → replay_rec-0.21.0rc0}/replay/nn/transform/template/twotower.py +0 -0
- {replay_rec-0.21.0 → replay_rec-0.21.0rc0}/replay/nn/transform/token_mask.py +0 -0
- {replay_rec-0.21.0 → replay_rec-0.21.0rc0}/replay/nn/transform/trim.py +0 -0
- {replay_rec-0.21.0 → replay_rec-0.21.0rc0}/replay/nn/utils.py +0 -0
- {replay_rec-0.21.0 → replay_rec-0.21.0rc0}/replay/preprocessing/__init__.py +0 -0
- {replay_rec-0.21.0 → replay_rec-0.21.0rc0}/replay/preprocessing/converter.py +0 -0
- {replay_rec-0.21.0 → replay_rec-0.21.0rc0}/replay/preprocessing/discretizer.py +0 -0
- {replay_rec-0.21.0 → replay_rec-0.21.0rc0}/replay/preprocessing/filters.py +0 -0
- {replay_rec-0.21.0 → replay_rec-0.21.0rc0}/replay/preprocessing/history_based_fp.py +0 -0
- {replay_rec-0.21.0 → replay_rec-0.21.0rc0}/replay/preprocessing/label_encoder.py +0 -0
- {replay_rec-0.21.0 → replay_rec-0.21.0rc0}/replay/preprocessing/sessionizer.py +0 -0
- {replay_rec-0.21.0 → replay_rec-0.21.0rc0}/replay/preprocessing/utils.py +0 -0
- {replay_rec-0.21.0 → replay_rec-0.21.0rc0}/replay/scenarios/__init__.py +0 -0
- {replay_rec-0.21.0 → replay_rec-0.21.0rc0}/replay/scenarios/fallback.py +0 -0
- {replay_rec-0.21.0 → replay_rec-0.21.0rc0}/replay/splitters/__init__.py +0 -0
- {replay_rec-0.21.0 → replay_rec-0.21.0rc0}/replay/splitters/base_splitter.py +0 -0
- {replay_rec-0.21.0 → replay_rec-0.21.0rc0}/replay/splitters/cold_user_random_splitter.py +0 -0
- {replay_rec-0.21.0 → replay_rec-0.21.0rc0}/replay/splitters/k_folds.py +0 -0
- {replay_rec-0.21.0 → replay_rec-0.21.0rc0}/replay/splitters/last_n_splitter.py +0 -0
- {replay_rec-0.21.0 → replay_rec-0.21.0rc0}/replay/splitters/new_users_splitter.py +0 -0
- {replay_rec-0.21.0 → replay_rec-0.21.0rc0}/replay/splitters/random_next_n_splitter.py +0 -0
- {replay_rec-0.21.0 → replay_rec-0.21.0rc0}/replay/splitters/random_splitter.py +0 -0
- {replay_rec-0.21.0 → replay_rec-0.21.0rc0}/replay/splitters/ratio_splitter.py +0 -0
- {replay_rec-0.21.0 → replay_rec-0.21.0rc0}/replay/splitters/time_splitter.py +0 -0
- {replay_rec-0.21.0 → replay_rec-0.21.0rc0}/replay/splitters/two_stage_splitter.py +0 -0
- {replay_rec-0.21.0 → replay_rec-0.21.0rc0}/replay/utils/__init__.py +0 -0
- {replay_rec-0.21.0 → replay_rec-0.21.0rc0}/replay/utils/common.py +0 -0
- {replay_rec-0.21.0 → replay_rec-0.21.0rc0}/replay/utils/dataframe_bucketizer.py +0 -0
- {replay_rec-0.21.0 → replay_rec-0.21.0rc0}/replay/utils/distributions.py +0 -0
- {replay_rec-0.21.0 → replay_rec-0.21.0rc0}/replay/utils/model_handler.py +0 -0
- {replay_rec-0.21.0 → replay_rec-0.21.0rc0}/replay/utils/session_handler.py +0 -0
- {replay_rec-0.21.0 → replay_rec-0.21.0rc0}/replay/utils/spark_utils.py +0 -0
- {replay_rec-0.21.0 → replay_rec-0.21.0rc0}/replay/utils/time.py +0 -0
- {replay_rec-0.21.0 → replay_rec-0.21.0rc0}/replay/utils/types.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: replay-rec
|
|
3
|
-
Version: 0.21.
|
|
3
|
+
Version: 0.21.0rc0
|
|
4
4
|
Summary: RecSys Library
|
|
5
5
|
License-Expression: Apache-2.0
|
|
6
6
|
License-File: LICENSE
|
|
@@ -14,29 +14,23 @@ Classifier: Intended Audience :: Developers
|
|
|
14
14
|
Classifier: Intended Audience :: Science/Research
|
|
15
15
|
Classifier: Natural Language :: English
|
|
16
16
|
Classifier: Topic :: Scientific/Engineering :: Artificial Intelligence
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
Requires-Dist: lightning (
|
|
21
|
-
Requires-Dist:
|
|
22
|
-
Requires-Dist: lightning ; extra == "torch-cpu"
|
|
17
|
+
Requires-Dist: d3rlpy (>=2.8.1,<2.9)
|
|
18
|
+
Requires-Dist: implicit (>=0.7.2,<0.8)
|
|
19
|
+
Requires-Dist: lightautoml (>=0.4.1,<0.5)
|
|
20
|
+
Requires-Dist: lightning (>=2.0.2,<=2.4.0)
|
|
21
|
+
Requires-Dist: numba (>=0.50,<1)
|
|
23
22
|
Requires-Dist: numpy (>=1.20.0,<2)
|
|
24
23
|
Requires-Dist: pandas (>=1.3.5,<2.4.0)
|
|
25
24
|
Requires-Dist: polars (<2.0)
|
|
26
|
-
Requires-Dist: psutil (<=7.0.0)
|
|
27
|
-
Requires-Dist: psutil ; extra == "spark"
|
|
25
|
+
Requires-Dist: psutil (<=7.0.0)
|
|
28
26
|
Requires-Dist: pyarrow (<22.0)
|
|
29
|
-
Requires-Dist: pyspark (>=3.0,<3.5)
|
|
30
|
-
Requires-Dist:
|
|
31
|
-
Requires-Dist:
|
|
32
|
-
Requires-Dist: pytorch-optimizer ; extra == "torch"
|
|
33
|
-
Requires-Dist: pytorch-optimizer ; extra == "torch-cpu"
|
|
27
|
+
Requires-Dist: pyspark (>=3.0,<3.5)
|
|
28
|
+
Requires-Dist: pytorch-optimizer (>=3.8.0,<4)
|
|
29
|
+
Requires-Dist: sb-obp (>=0.5.10,<0.6)
|
|
34
30
|
Requires-Dist: scikit-learn (>=1.6.1,<1.7.0)
|
|
35
31
|
Requires-Dist: scipy (>=1.8.1,<2.0.0)
|
|
36
32
|
Requires-Dist: setuptools
|
|
37
|
-
Requires-Dist: torch (>=1.8,<3.0.0)
|
|
38
|
-
Requires-Dist: torch ; extra == "torch"
|
|
39
|
-
Requires-Dist: torch ; extra == "torch-cpu"
|
|
33
|
+
Requires-Dist: torch (>=1.8,<3.0.0)
|
|
40
34
|
Requires-Dist: tqdm (>=4.67,<5)
|
|
41
35
|
Project-URL: Homepage, https://sb-ai-lab.github.io/RePlay/
|
|
42
36
|
Project-URL: Repository, https://github.com/sb-ai-lab/RePlay
|
|
@@ -65,19 +65,19 @@ dependencies = [
|
|
|
65
65
|
"scikit-learn (>=1.6.1,<1.7.0)",
|
|
66
66
|
"pyarrow (<22.0)",
|
|
67
67
|
"tqdm (>=4.67,<5)",
|
|
68
|
-
"
|
|
69
|
-
"
|
|
70
|
-
"
|
|
71
|
-
"
|
|
72
|
-
"
|
|
68
|
+
"torch (>=1.8,<3.0.0)",
|
|
69
|
+
"lightning (>=2.0.2,<=2.4.0)",
|
|
70
|
+
"pytorch-optimizer (>=3.8.0,<4)",
|
|
71
|
+
"lightautoml (>=0.4.1,<0.5)",
|
|
72
|
+
"numba (>=0.50,<1)",
|
|
73
|
+
"sb-obp (>=0.5.10,<0.6)",
|
|
74
|
+
"d3rlpy (>=2.8.1,<2.9)",
|
|
75
|
+
"implicit (>=0.7.2,<0.8)",
|
|
76
|
+
"pyspark (>=3.0,<3.5)",
|
|
77
|
+
"psutil (<=7.0.0)",
|
|
73
78
|
]
|
|
74
79
|
dynamic = ["dependencies"]
|
|
75
|
-
version = "0.21.0"
|
|
76
|
-
|
|
77
|
-
[project.optional-dependencies]
|
|
78
|
-
spark = ["pyspark", "psutil"]
|
|
79
|
-
torch = ["torch", "pytorch-optimizer", "lightning"]
|
|
80
|
-
torch-cpu = ["torch", "pytorch-optimizer", "lightning"]
|
|
80
|
+
version = "0.21.0.preview"
|
|
81
81
|
|
|
82
82
|
[project.urls]
|
|
83
83
|
homepage = "https://sb-ai-lab.github.io/RePlay/"
|
|
@@ -91,13 +91,6 @@ target-version = ["py39", "py310", "py311", "py312"]
|
|
|
91
91
|
packages = [{include = "replay"}]
|
|
92
92
|
exclude = [
|
|
93
93
|
"replay/conftest.py",
|
|
94
|
-
"replay/experimental",
|
|
95
|
-
]
|
|
96
|
-
|
|
97
|
-
[tool.poetry.dependencies]
|
|
98
|
-
torch = [
|
|
99
|
-
{markers = "extra == 'torch-cpu' and extra !='torch'", source = "torch-cpu-mirror"},
|
|
100
|
-
{markers = "extra == 'torch' and extra !='torch-cpu'", source = "PyPI"},
|
|
101
94
|
]
|
|
102
95
|
|
|
103
96
|
[[tool.poetry.source]]
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
"""
|
|
2
|
+
Most metrics require dataframe with recommendations
|
|
3
|
+
and dataframe with ground truth values —
|
|
4
|
+
which objects each user interacted with.
|
|
5
|
+
|
|
6
|
+
- recommendations (Union[pandas.DataFrame, spark.DataFrame]):
|
|
7
|
+
predictions of a recommender system,
|
|
8
|
+
DataFrame with columns ``[user_id, item_id, relevance]``
|
|
9
|
+
- ground_truth (Union[pandas.DataFrame, spark.DataFrame]):
|
|
10
|
+
test data, DataFrame with columns
|
|
11
|
+
``[user_id, item_id, timestamp, relevance]``
|
|
12
|
+
|
|
13
|
+
Metric is calculated for all users, presented in ``ground_truth``
|
|
14
|
+
for accurate metric calculation in case when the recommender system generated
|
|
15
|
+
recommendation not for all users. It is assumed, that all users,
|
|
16
|
+
we want to calculate metric for, have positive interactions.
|
|
17
|
+
|
|
18
|
+
But if we have users, who observed the recommendations, but have not responded,
|
|
19
|
+
those users will be ignored and metric will be overestimated.
|
|
20
|
+
For such case we propose additional optional parameter ``ground_truth_users``,
|
|
21
|
+
the dataframe with all users, which should be considered during the metric calculation.
|
|
22
|
+
|
|
23
|
+
- ground_truth_users (Optional[Union[pandas.DataFrame, spark.DataFrame]]):
|
|
24
|
+
full list of users to calculate metric for, DataFrame with ``user_id`` column
|
|
25
|
+
|
|
26
|
+
Every metric is calculated using top ``K`` items for each user.
|
|
27
|
+
It is also possible to calculate metrics
|
|
28
|
+
using multiple values for ``K`` simultaneously.
|
|
29
|
+
In this case the result will be a dictionary and not a number.
|
|
30
|
+
|
|
31
|
+
Make sure your recommendations do not contain user-item duplicates
|
|
32
|
+
as duplicates could lead to the wrong calculation results.
|
|
33
|
+
|
|
34
|
+
- k (Union[Iterable[int], int]):
|
|
35
|
+
a single number or a list, specifying the
|
|
36
|
+
truncation length for recommendation list for each user
|
|
37
|
+
|
|
38
|
+
By default, metrics are averaged by users,
|
|
39
|
+
but you can alternatively use method ``metric.median``.
|
|
40
|
+
Also, you can get the lower bound
|
|
41
|
+
of ``conf_interval`` for a given ``alpha``.
|
|
42
|
+
|
|
43
|
+
Diversity metrics require extra parameters on initialization stage,
|
|
44
|
+
but do not use ``ground_truth`` parameter.
|
|
45
|
+
|
|
46
|
+
For each metric, a formula for its calculation is given, because this is
|
|
47
|
+
important for the correct comparison of algorithms, as mentioned in our
|
|
48
|
+
`article <https://arxiv.org/abs/2206.12858>`_.
|
|
49
|
+
"""
|
|
50
|
+
|
|
51
|
+
from replay.experimental.metrics.base_metric import Metric, NCISMetric
|
|
52
|
+
from replay.experimental.metrics.coverage import Coverage
|
|
53
|
+
from replay.experimental.metrics.hitrate import HitRate
|
|
54
|
+
from replay.experimental.metrics.map import MAP
|
|
55
|
+
from replay.experimental.metrics.mrr import MRR
|
|
56
|
+
from replay.experimental.metrics.ncis_precision import NCISPrecision
|
|
57
|
+
from replay.experimental.metrics.ndcg import NDCG
|
|
58
|
+
from replay.experimental.metrics.precision import Precision
|
|
59
|
+
from replay.experimental.metrics.recall import Recall
|
|
60
|
+
from replay.experimental.metrics.rocauc import RocAuc
|
|
61
|
+
from replay.experimental.metrics.surprisal import Surprisal
|
|
62
|
+
from replay.experimental.metrics.unexpectedness import Unexpectedness
|