public void NNearestNeighbour_Evaluation_Using_RootMeanSquaredMetric() { RandomUtils.useTestSeed(); RMSRecommenderEvaluator evaluator = new RMSRecommenderEvaluator(); IRecommenderBuilder pearsonRecommenderBuilder = new TestRecommenderBuilderPearson(); IRecommenderBuilder euclideanRecommenderBuilder = new TestRecommenderBuilderEuclidean(); IRecommenderBuilder logLikelyRecommenderBuilder = new TestRecommenderBuilderLogLikelihood(); IRecommenderBuilder spearmanRecommenderBuilder = new TestRecommenderBuilderSpearman(); IRecommenderBuilder tanimotoRecommenderBuilder = new TestRecommenderBuilderTanimoto(); // Root mean square metric applied to the recommendations based on the algorithms below. // Common metric used for assessing the accuracy of the recommendations. // The lower the result the better the algorithm. // Training Data: 70% // Test Data: 30% using (var scope = Container.BeginLifetimeScope()) { _recommenderService = scope.Resolve <RecommenderService>(); GenericDataModel model = _recommenderService.GetUserBasedDataModel(); double score = evaluator.Evaluate(pearsonRecommenderBuilder , null, model, 0.7, 1.0); double scoreEuclid = evaluator.Evaluate(euclideanRecommenderBuilder , null, model, 0.7, 1.0); double scoreLoglikely = evaluator.Evaluate(logLikelyRecommenderBuilder , null, model, 0.7, 1.0); double scoreSpearman = evaluator.Evaluate(spearmanRecommenderBuilder , null, model, 0.7, 1.0); double scoreTanimoto = evaluator.Evaluate(tanimotoRecommenderBuilder , null, model, 0.7, 1.0); } }
public void TestEvaluate() { DataModel model = GetDataModel(); RecommenderBuilder builder = new SlopeOneRecommenderBuilder(); RecommenderEvaluator evaluator = new RMSRecommenderEvaluator(); double eval = evaluator.Evaluate(builder, model, 0.75, 1.0); Assert.AreEqual(0.26387685767414826, eval, EPSILON); }