Intersection

class rectools.metrics.intersection.Intersection(k: int, ref_k: Optional[int] = None)[source]

Bases: MetricAtK

Metric to measure intersection in user-item pairs between recommendation lists.

The intersection@k equals the share of reco that is present in ref_reco.

This corresponds to the following algorithm:
  1. filter reco by k

  2. filter ref_reco by ref_k

  3. calculate the proportion of items in reco that are also present in ref_reco

The second and third steps are equivalent to computing Recall@ref_k when:
  • Interactions consists of reco without the Columns.Rank column.

  • Recommendation table is ref_reco

Parameters
  • k (int) – Number of items in top of recommendations list that will be used to calculate metric.

  • ref_k (int, optional) – Number of items in top of reference recommendations list that will be used to calculate metric. If ref_k is None than ref_reco will be filtered with ref_k = k. Default: None.

Inherited-members

Methods

calc(reco, ref_reco)

Calculate metric value.

calc_per_user(reco, ref_reco)

Calculate metric values for all users.

Attributes

ref_k

calc(reco: DataFrame, ref_reco: DataFrame) float[source]

Calculate metric value.

Parameters
  • reco (pd.DataFrame) – Recommendations table with columns Columns.User, Columns.Item, Columns.Rank.

  • ref_reco (pd.DataFrame) – Reference recommendations table with columns Columns.User, Columns.Item, Columns.Rank.

Returns

Value of metric (average between users).

Return type

float

calc_per_user(reco: DataFrame, ref_reco: DataFrame) Series[source]

Calculate metric values for all users.

Parameters
  • reco (pd.DataFrame) – Recommendations table with columns Columns.User, Columns.Item, Columns.Rank.

  • ref_reco (pd.DataFrame) – Reference recommendations table with columns Columns.User, Columns.Item, Columns.Rank.

Returns

Values of metric (index - user id, values - metric value for every user).

Return type

pd.Series