Loss functions

Loss functions for recommender models.

The pointwise, BPR, and hinge losses are a good fit for implicit feedback models trained through negative sampling.

The regression and Poisson losses are used for explicit feedback models.

spotlight.losses.adaptive_hinge_loss(positive_predictions, negative_predictions, mask=None)[source]

Adaptive hinge pairwise loss function. Takes a set of predictions for implicitly negative items, and selects those that are highest, thus sampling those negatives that are closes to violating the ranking implicit in the pattern of user interactions.

Approximates the idea of weighted approximate-rank pairwise loss introduced in [2]

Parameters:
  • positive_predictions (tensor) – Tensor containing predictions for known positive items.
  • negative_predictions (tensor) – Iterable of tensors containing predictions for sampled negative items. More tensors increase the likelihood of finding ranking-violating pairs, but risk overfitting.
  • mask (tensor, optional) – A binary tensor used to zero the loss from some entries of the loss tensor.
Returns:

The mean value of the loss function.

Return type:

loss, float

References

[2]Weston, Jason, Samy Bengio, and Nicolas Usunier. “Wsabie: Scaling up to large vocabulary image annotation.” IJCAI. Vol. 11. 2011.
spotlight.losses.bpr_loss(positive_predictions, negative_predictions, mask=None)[source]

Bayesian Personalised Ranking [1] pairwise loss function.

Parameters:
  • positive_predictions (tensor) – Tensor containing predictions for known positive items.
  • negative_predictions (tensor) – Tensor containing predictions for sampled negative items.
  • mask (tensor, optional) – A binary tensor used to zero the loss from some entries of the loss tensor.
Returns:

The mean value of the loss function.

Return type:

loss, float

References

[1]Rendle, Steffen, et al. “BPR: Bayesian personalized ranking from implicit feedback.” Proceedings of the twenty-fifth conference on uncertainty in artificial intelligence. AUAI Press, 2009.
spotlight.losses.hinge_loss(positive_predictions, negative_predictions, mask=None)[source]

Hinge pairwise loss function.

Parameters:
  • positive_predictions (tensor) – Tensor containing predictions for known positive items.
  • negative_predictions (tensor) – Tensor containing predictions for sampled negative items.
  • mask (tensor, optional) – A binary tensor used to zero the loss from some entries of the loss tensor.
Returns:

The mean value of the loss function.

Return type:

loss, float

spotlight.losses.logistic_loss(observed_ratings, predicted_ratings)[source]

Logistic loss for explicit data.

Parameters:
  • observed_ratings (tensor) – Tensor containing observed ratings which should be +1 or -1 for this loss function.
  • predicted_ratings (tensor) – Tensor containing rating predictions.
Returns:

The mean value of the loss function.

Return type:

loss, float

spotlight.losses.pointwise_loss(positive_predictions, negative_predictions, mask=None)[source]

Logistic loss function.

Parameters:
  • positive_predictions (tensor) – Tensor containing predictions for known positive items.
  • negative_predictions (tensor) – Tensor containing predictions for sampled negative items.
  • mask (tensor, optional) – A binary tensor used to zero the loss from some entries of the loss tensor.
Returns:

The mean value of the loss function.

Return type:

loss, float

spotlight.losses.poisson_loss(observed_ratings, predicted_ratings)[source]

Poisson loss.

Parameters:
  • observed_ratings (tensor) – Tensor containing observed ratings.
  • predicted_ratings (tensor) – Tensor containing rating predictions.
Returns:

The mean value of the loss function.

Return type:

loss, float

spotlight.losses.regression_loss(observed_ratings, predicted_ratings)[source]

Regression loss.

Parameters:
  • observed_ratings (tensor) – Tensor containing observed ratings.
  • predicted_ratings (tensor) – Tensor containing rating predictions.
Returns:

The mean value of the loss function.

Return type:

loss, float