public void NNearestNeighbour_Evaluation_Using_AverageAbsoluteDifferenceMetric()
        {
            RandomUtils.useTestSeed();
            AverageAbsoluteDifferenceRecommenderEvaluator evaluator = new AverageAbsoluteDifferenceRecommenderEvaluator();

            IRecommenderBuilder pearsonRecommenderBuilder   = new TestRecommenderBuilderPearson();
            IRecommenderBuilder euclideanRecommenderBuilder = new TestRecommenderBuilderEuclidean();
            IRecommenderBuilder logLikelyRecommenderBuilder = new TestRecommenderBuilderLogLikelihood();
            IRecommenderBuilder spearmanRecommenderBuilder  = new TestRecommenderBuilderSpearman();
            IRecommenderBuilder tanimotoRecommenderBuilder  = new TestRecommenderBuilderTanimoto();

            // Average Absolute Difference For the recommendations based on metric applied
            // 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);
            }
        }
Example #2
0
        public void TestEvaluate()
        {
            DataModel            model     = GetDataModel();
            RecommenderBuilder   builder   = new SlopeOneRecommenderBuilder();
            RecommenderEvaluator evaluator =
                new AverageAbsoluteDifferenceRecommenderEvaluator();
            double eval = evaluator.Evaluate(builder, model, 0.75, 1.0);

            Assert.AreEqual(0.26387685767414826, eval, EPSILON);
        }