MRR
- class rectools.metrics.ranking.MRR(k: int)[source]
Bases:
_RankingMetric
Mean Reciprocal Rank at k (MRR@k).
MRR calculates as mean value of reciprocal rank of first relevant recommendation among all users.
Estimates relevance of recommendations taking in account their order.
\[MRR@K = \frac{1}{|U|} \sum_{i=1}^{|U|} \frac{1}{rank_{i}}\]- where
\({|U|}\) is a number of unique users;
\(rank_{i}\) is a rank of first relevant recommendation starting from
1
.
If a user doesn’t have any relevant recommendation then his metric value will be
0
.- Parameters
k (int) – Number of items at the top of recommendations list that will be used to calculate metric.
Examples
>>> reco = pd.DataFrame( ... { ... Columns.User: [1, 1, 2, 2, 3, 3, 3, 3, 4, 4, 4], ... Columns.Item: [7, 8, 1, 2, 2, 1, 3, 4, 7, 8, 3], ... Columns.Rank: [1, 2, 1, 2, 1, 2, 3, 4, 1, 2, 3], ... } ... ) >>> interactions = pd.DataFrame( ... { ... Columns.User: [1, 1, 2, 3, 3, 3, 4, 4, 4], ... Columns.Item: [1, 2, 1, 1, 3, 4, 1, 2, 3], ... } ... ) >>> # Here >>> # - for user ``1`` we return non-relevant recommendations; >>> # - for user ``2`` we return 2 items and relevant is first; >>> # - for user ``3`` we return 4 items, 2nd, 3rd and 4th are relevant; >>> # - for user ``4`` we return 3 items and relevant is last; >>> MRR(k=1).calc_per_user(reco, interactions).values array([0., 1., 0., 0.]) >>> MRR(k=3).calc_per_user(reco, interactions).values array([0. , 1. , 0.5 , 0.33333333])
- Inherited-members
- Parameters
k (int) –
Methods
calc
(reco, interactions)Calculate metric value.
calc_from_merged
(merged)Calculate metric value from merged recommendations.
calc_per_user
(reco, interactions)Calculate metric values for all users.
calc_per_user_from_merged
(merged)Calculate metric values for all users from merged recommendations.
Attributes
- calc_from_merged(merged: DataFrame) float [source]
Calculate metric value from merged recommendations.
- Parameters
merged (pd.DataFrame) – Result of merging recommendations and interactions tables. Can be obtained using merge_reco function.
- Returns
Value of metric (average between users).
- Return type
float
- calc_per_user(reco: DataFrame, interactions: DataFrame) Series [source]
Calculate metric values for all users.
- Parameters
reco (pd.DataFrame) – Recommendations table with columns Columns.User, Columns.Item, Columns.Rank.
interactions (pd.DataFrame) – Interactions table with columns Columns.User, Columns.Item.
- Returns
Values of metric (index - user id, values - metric value for every user).
- Return type
pd.Series
- calc_per_user_from_merged(merged: DataFrame) Series [source]
Calculate metric values for all users from merged recommendations.
- Parameters
merged (pd.DataFrame) – Result of merging recommendations and interactions tables. Can be obtained using merge_reco function.
- Returns
Values of metric (index - user id, values - metric value for every user).
- Return type
pd.Series