def get_regularization_loss()

in sourcecode/scoring/reputation_matrix_factorization/reputation_matrix_factorization.py [0:0]


  def get_regularization_loss(self, numRatings):
    regularizationLoss = self.l2Lambda * self.l2GlobalBiasMultiplier * (self.globalBias**2)

    if self._ratingPerNoteLossRatio is None:
      regularizationLoss += self.l2Lambda * (self.noteEmbedding.weight**2).mean()
      regularizationLoss += (
        self.l2Lambda * self.l2NoteBiasMultiplier * (self.noteBias.weight**2).mean()
      )
    else:
      simulatedNumberOfNotesForLoss = numRatings / self._ratingPerNoteLossRatio
      regularizationLoss += (
        self.l2Lambda * (self.noteEmbedding.weight**2).sum() / simulatedNumberOfNotesForLoss
      )
      regularizationLoss += (
        self.l2Lambda
        * self.l2NoteBiasMultiplier
        * (self.noteBias.weight**2).sum()
        / simulatedNumberOfNotesForLoss
      )

    if self._ratingPerUserLossRatio is None:
      regularizationLoss += self.l2Lambda * (self.raterEmbedding.weight**2).mean()
      regularizationLoss += (
        self.l2Lambda * self.l2RaterBiasMultiplier * (self.raterBias.weight**2).mean()
      )
      regularizationLoss += (
        self.l2Lambda * self.l2RaterReputationMultiplier * (self.raterReputation.weight**2).mean()
      )
    else:
      simulatedNumberOfRatersForLoss = numRatings / self._ratingPerUserLossRatio
      regularizationLoss += (
        self.l2Lambda * (self.raterEmbedding.weight**2).sum() / simulatedNumberOfRatersForLoss
      )
      regularizationLoss += (
        self.l2Lambda
        * self.l2RaterBiasMultiplier
        * (self.raterBias.weight**2).sum()
        / simulatedNumberOfRatersForLoss
      )
      regularizationLoss += (
        self.l2Lambda
        * self.l2RaterReputationMultiplier
        * (self.raterReputation.weight**2).sum()
        / simulatedNumberOfRatersForLoss
      )

    return regularizationLoss