Shortcuts

Source code for catalyst.metrics.hitrate

"""
Hitrate metric:
    * :func:`hitrate`
"""
import torch


[docs]def hitrate( outputs: torch.Tensor, targets: torch.Tensor, k=10 ) -> torch.Tensor: """ Calculate the hit rate score given model outputs and targets. Hit-rate is a metric for evaluating ranking systems. Generate top-N recommendations and if one of the recommendation is actually what user has rated, you consider that a hit. By rate we mean any explicit form of user's interactions. Add up all of the hits for all users and then divide by number of users Compute top-N recomendation for each user in the training stage and intentionally remove one of this items fro the training data. Args: outputs (torch.Tensor): Tensor weith predicted score size: [batch_size, slate_length] model outputs, logits targets (torch.Tensor): Binary tensor with ground truth. 1 means the item is relevant for the user and 0 not relevant size: [batch_szie, slate_length] ground truth, labels k (int): Parameter fro evaluation on top-k items Returns: hitrate (torch.Tensor): the hit rate score """ k = min(outputs.size(1), k) _, indices_for_sort = outputs.sort(descending=True, dim=-1) true_sorted_by_preds = torch.gather( targets, dim=-1, index=indices_for_sort ) true_sorted_by_pred_shrink = true_sorted_by_preds[:, :k] hits = torch.sum(true_sorted_by_pred_shrink, dim=1) / k return hits
__all__ = ["hitrate"]