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