public void TestExpectedWeightedConfusion() { double expectedAbsoluteErrorAsWeightedConfusion = this.evaluator.ExpectedWeightedConfusion( this.dataset, this.uncertainPredictions, RatingMatrix.AbsoluteErrorLossMatrix(this.starRatingInfo.MinStarRating, this.starRatingInfo.MaxStarRating)); Assert.Equal( this.evaluator.ModelDomainRatingPredictionMetricExpectation(this.dataset, this.uncertainPredictions, Metrics.AbsoluteError), expectedAbsoluteErrorAsWeightedConfusion, CompareEps); double expectedSquaredErrorAsWeightedConfusion = this.evaluator.ExpectedWeightedConfusion( this.dataset, this.uncertainPredictions, RatingMatrix.SquaredErrorLossMatrix(this.starRatingInfo.MinStarRating, this.starRatingInfo.MaxStarRating)); Assert.Equal( this.evaluator.ModelDomainRatingPredictionMetricExpectation(this.dataset, this.uncertainPredictions, Metrics.SquaredError), expectedSquaredErrorAsWeightedConfusion, CompareEps); double expectedZeroOneErrorAsWeightedConfusion = this.evaluator.ExpectedWeightedConfusion( this.dataset, this.uncertainPredictions, RatingMatrix.ZeroOneErrorLossMatrix(this.starRatingInfo.MinStarRating, this.starRatingInfo.MaxStarRating)); Assert.Equal( this.evaluator.ModelDomainRatingPredictionMetricExpectation(this.dataset, this.uncertainPredictions, Metrics.ZeroOneError), expectedZeroOneErrorAsWeightedConfusion, CompareEps); }
public void TestWeightedConfusion() { Assert.Equal( this.evaluator.ModelDomainRatingPredictionMetric(this.dataset, this.predictions, Metrics.AbsoluteError), this.evaluator.WeightedConfusion(this.dataset, this.predictions, RatingMatrix.AbsoluteErrorLossMatrix(this.starRatingInfo.MinStarRating, this.starRatingInfo.MaxStarRating)), CompareEps); Assert.Equal( this.evaluator.ModelDomainRatingPredictionMetric(this.dataset, this.predictions, Metrics.SquaredError), this.evaluator.WeightedConfusion(this.dataset, this.predictions, RatingMatrix.SquaredErrorLossMatrix(this.starRatingInfo.MinStarRating, this.starRatingInfo.MaxStarRating)), CompareEps); Assert.Equal( this.evaluator.ModelDomainRatingPredictionMetric(this.dataset, this.predictions, Metrics.ZeroOneError), this.evaluator.WeightedConfusion(this.dataset, this.predictions, RatingMatrix.ZeroOneErrorLossMatrix(this.starRatingInfo.MinStarRating, this.starRatingInfo.MaxStarRating)), CompareEps); }
public void TestConfusionMatrix() { var trueConfusion = new RatingMatrix(this.starRatingInfo.MinStarRating, this.starRatingInfo.MaxStarRating); trueConfusion[1, 4] = 3.0 / 12.0; trueConfusion[2, 2] = 1.0 / 3.0; trueConfusion[2, 3] = 1.0 / 6.0; trueConfusion[3, 5] = 1.0 / 12.0; trueConfusion[4, 1] = 1.0 / 12.0; trueConfusion[5, 5] = 1.0 / 12.0; RatingMatrix confusion = this.evaluator.ConfusionMatrix(this.dataset, this.predictions, RecommenderMetricAggregationMethod.PerUserFirst); Assert.Equal(trueConfusion.MaxRating, confusion.MaxRating); for (int i = 1; i <= confusion.MaxRating; ++i) { for (int j = 1; j <= confusion.MaxRating; ++j) { Assert.Equal(trueConfusion[i, j], confusion[i, j], CompareEps); } } }