Retrieval API

Holdout Builders

compresso_recsys.retrieval.build_eval_holdout(*, train_item_ids, eval_interactions, min_user_support=5, random_state=42, eval_fold=0)[source]

Build fixed eval holdout (source/target) using compressed_elsa fold protocol.

Return type:

dict[str, object]

Parameters:
  • train_item_ids (Index | ndarray)

  • eval_interactions (DataFrame)

  • min_user_support (int)

  • random_state (int)

  • eval_fold (int)

eval_fold:
  • 0: stacked 5-fold behavior (paper default in compressed_elsa)

  • 1: single fold

compresso_recsys.retrieval.build_item_cold_holdout(*, item_ids, interactions, source_item_ids, target_item_ids, min_source_items=1, min_target_items=1)[source]

Build source=train-item and target=cold-item holdout for overlapping users.

Return type:

dict[str, object]

Parameters:
  • item_ids (Index | ndarray)

  • interactions (DataFrame)

  • source_item_ids (set[str] | list[str] | ndarray)

  • target_item_ids (set[str] | list[str] | ndarray)

  • min_source_items (int)

  • min_target_items (int)

compresso_recsys.retrieval.build_leave_last_out_holdout(*, item_ids, interactions, min_source_items=1, min_target_items=1)[source]

Build per-user source/target by holding out each user’s latest interaction.

Return type:

dict[str, object]

Parameters:
  • item_ids (Index | ndarray)

  • interactions (DataFrame)

  • min_source_items (int)

  • min_target_items (int)

compresso_recsys.retrieval.build_temporal_holdout(*, item_ids, interactions, test_frac=0.1, min_source_items=1, min_target_items=1)[source]

Build source/target using a global timestamp cutoff.

Return type:

dict[str, object]

Parameters:
  • item_ids (Index | ndarray)

  • interactions (DataFrame)

  • test_frac (float)

  • min_source_items (int)

  • min_target_items (int)

Embedding Evaluation

compresso_recsys.retrieval.evaluate_item_embeddings(*, train_item_ids, item_embeddings, eval_interactions, k=100, holdout_frac=0.2, min_items_per_user=2, min_user_support=5, random_state=42, eval_fold=0, score_batch_size=512, debug=False, debug_users=5, show_progress=False)[source]

Evaluate item embeddings with torch top-k retrieval.

  • User profile: sum of source-item embeddings.

  • Scores: dot(profile, item_embedding).

  • Seen source items are masked.

Return type:

dict[str, float]

Parameters:
  • train_item_ids (Index)

  • item_embeddings (ndarray)

  • eval_interactions (DataFrame)

  • k (int)

  • holdout_frac (float)

  • min_items_per_user (int)

  • min_user_support (int)

  • random_state (int)

  • eval_fold (int)

  • score_batch_size (int)

  • debug (bool)

  • debug_users (int)

  • show_progress (bool)

compresso_recsys.retrieval.evaluate_item_embeddings_with_holdout(*, item_embeddings, source_indices, target_indices, k=100, score_batch_size=512, debug=False, debug_users=5, show_progress=False)[source]
Return type:

dict[str, float]

Parameters:
  • item_embeddings (ndarray)

  • source_indices (list[ndarray])

  • target_indices (list[ndarray])

  • k (int)

  • score_batch_size (int)

  • debug (bool)

  • debug_users (int)

  • show_progress (bool)