MeanInvUserFreq
- class rectools.metrics.novelty.MeanInvUserFreq(k: int)[source]
Bases:
MetricAtK
Mean Inverse User Frequency metric.
Estimate mean novelty of items in recommendations, where “novelty” of item is inversely proportional to the number of users who interacted with it.
\[MIUF@k = -(\sum_{i=1}^{k} \log_{2} (users(i) / n\_users)) / k\]where - users(i) is number of users that previously interacted with item with rank i. - n_users is the overall number of users in previous interactions.
- 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, 2, 2, 3, 3], ... Columns.Item: [3, 2, 3, 1, 2], ... Columns.Rank: [1, 1, 2, 1, 2], ... } ... ) >>> prev_interactions = pd.DataFrame( ... { ... Columns.User: [1, 1, 2, 3], ... Columns.Item: [1, 2, 1, 1], ... } ... ) >>> MeanInvUserFreq(k=1).calc_per_user(reco, prev_interactions).values array([1.5849625, 1.5849625, 0. ]) >>> MeanInvUserFreq(k=3).calc_per_user(reco, prev_interactions).values array([1.5849625 , 1.5849625 , 0.79248125])
- Inherited-members
- Parameters
k (int) –
Methods
calc
(reco, prev_interactions)Calculate metric value.
calc_from_fitted
(fitted)Calculate metric value from fitted data.
calc_per_user
(reco, prev_interactions)Calculate metric values for all users.
calc_per_user_from_fitted
(fitted)Calculate metric values for all users from fitted data.
fit
(reco, prev_interactions, k_max)Prepare intermediate data for effective calculation.
Attributes
- calc(reco: DataFrame, prev_interactions: DataFrame) float [source]
Calculate metric value.
- Parameters
reco (pd.DataFrame) – Recommendations table with columns Columns.User, Columns.Item, Columns.Rank.
prev_interactions (pd.DataFrame) – Table with previous user-item interactions, with columns Columns.User, Columns.Item.
- Returns
Value of metric (average between users).
- Return type
float
- calc_from_fitted(fitted: MIUFFitted) float [source]
Calculate metric value from fitted data.
For parameters used result of fit method.
- Parameters
fitted (MIUFFitted) – Meta data that got from .fit method.
- Returns
Value of metric (average between users).
- Return type
float
- calc_per_user(reco: DataFrame, prev_interactions: DataFrame) Series [source]
Calculate metric values for all users.
- Parameters
reco (pd.DataFrame) – Recommendations table with columns Columns.User, Columns.Item, Columns.Rank.
prev_interactions (pd.DataFrame) – Table with previous user-item interactions, 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_fitted(fitted: MIUFFitted) Series [source]
Calculate metric values for all users from fitted data.
For parameters used result of fit method.
- Parameters
fitted (MIUFFitted) – Meta data that got from .fit method.
- Returns
Values of metric (index - user id, values - metric value for every user).
- Return type
pd.Series
- classmethod fit(reco: DataFrame, prev_interactions: DataFrame, k_max: int) MIUFFitted [source]
Prepare intermediate data for effective calculation.
You can use this method to prepare some intermediate data for later calculation. It can optimize calculations if you want calculate metric for different values of k.
- Parameters
reco (pd.DataFrame) – Recommendations table with columns Columns.User, Columns.Item, Columns.Rank.
prev_interactions (pd.DataFrame) – Table with previous user-item interactions, with columns Columns.User, Columns.Item.
k_max (int) – k is number of items at the top of recommendations list that will be used to calculate metric. So k_max is maximum value of k parameter for which you want to calculate metric.
- Return type