Example #1
0
        public void TestEstimatePref()
        {
            List <User> users = new List <User>(4);

            users.Add(GetUser("test1", 0.1, 0.3));
            users.Add(GetUser("test2", 0.2, 0.3, 0.3));
            users.Add(GetUser("test3", 0.4, 0.3, 0.5));
            users.Add(GetUser("test4", 0.7, 0.3, 0.8, 0.9));
            DataModel         dataModel   = new GenericDataModel(users);
            UserCorrelation   correlation = new PearsonCorrelation(dataModel);
            ClusterSimilarity similarity  = new FarthestNeighborClusterSimilarity(correlation);
            Recommender       recommender = new TreeClusteringRecommender(dataModel, similarity, 2);

            Assert.AreEqual(0.9, recommender.EstimatePreference("test3", "3"));
        }
Example #2
0
        public void TestNoRecommendations()
        {
            List <User> users = new List <User>(3);

            users.Add(GetUser("test1", 0.1));
            users.Add(GetUser("test2", 0.2, 0.6));
            users.Add(GetUser("test3", 0.4, 0.9));
            DataModel               dataModel   = new GenericDataModel(users);
            UserCorrelation         correlation = new PearsonCorrelation(dataModel);
            ClusterSimilarity       similarity  = new FarthestNeighborClusterSimilarity(correlation);
            Recommender             recommender = new TreeClusteringRecommender(dataModel, similarity, 2);
            IList <RecommendedItem> recommended = recommender.Recommend("test1", 1);

            Assert.IsNotNull(recommended);
            Assert.AreEqual(0, recommended.Count);
        }
Example #3
0
        public void testHowMany()
        {
            List <User> users = new List <User>(3);

            users.Add(GetUser("test1", 0.1, 0.2));
            users.Add(GetUser("test2", 0.2, 0.3, 0.3, 0.6));
            users.Add(GetUser("test3", 0.4, 0.4, 0.5, 0.9));
            users.Add(GetUser("test4", 0.1, 0.4, 0.5, 0.8, 0.9, 1.0));
            users.Add(GetUser("test5", 0.2, 0.3, 0.6, 0.7, 0.1, 0.2));
            DataModel               dataModel       = new GenericDataModel(users);
            UserCorrelation         correlation     = new PearsonCorrelation(dataModel);
            ClusterSimilarity       similarity      = new FarthestNeighborClusterSimilarity(correlation);
            Recommender             recommender     = new TreeClusteringRecommender(dataModel, similarity, 2);
            IList <RecommendedItem> fewRecommended  = recommender.Recommend("test1", 2);
            IList <RecommendedItem> moreRecommended = recommender.Recommend("test1", 4);

            for (int i = 0; i < fewRecommended.Count; i++)
            {
                Assert.AreEqual(fewRecommended[i].Item, moreRecommended[i].Item);
            }
        }
Example #4
0
        public void TestRescorer()
        {
            List <User> users = new List <User>(3);

            users.Add(GetUser("test1", 0.1, 0.2));
            users.Add(GetUser("test2", 0.2, 0.3, 0.3, 0.6));
            users.Add(GetUser("test3", 0.4, 0.4, 0.5, 0.9));
            DataModel               dataModel           = new GenericDataModel(users);
            UserCorrelation         correlation         = new PearsonCorrelation(dataModel);
            ClusterSimilarity       similarity          = new FarthestNeighborClusterSimilarity(correlation);
            Recommender             recommender         = new TreeClusteringRecommender(dataModel, similarity, 2);
            IList <RecommendedItem> originalRecommended = recommender.Recommend("test1", 2);
            IList <RecommendedItem> rescoredRecommended =
                recommender.Recommend("test1", 2, new ReversingRescorer <Item>());

            Assert.IsNotNull(originalRecommended);
            Assert.IsNotNull(rescoredRecommended);
            Assert.AreEqual(2, originalRecommended.Count);
            Assert.AreEqual(2, rescoredRecommended.Count);
            Assert.AreEqual(originalRecommended[0].Item, rescoredRecommended[1].Item);
            Assert.AreEqual(originalRecommended[1].Item, rescoredRecommended[0].Item);
        }
Example #5
0
        public void TestBestRating()
        {
            List <User> users = new List <User>(4);

            users.Add(GetUser("test1", 0.1, 0.3));
            users.Add(GetUser("test2", 0.2, 0.3, 0.3));
            users.Add(GetUser("test3", 0.4, 0.3, 0.5));
            users.Add(GetUser("test4", 0.7, 0.3, 0.8));
            DataModel               dataModel   = new GenericDataModel(users);
            UserCorrelation         correlation = new PearsonCorrelation(dataModel);
            ClusterSimilarity       similarity  = new FarthestNeighborClusterSimilarity(correlation);
            Recommender             recommender = new TreeClusteringRecommender(dataModel, similarity, 2);
            IList <RecommendedItem> recommended = recommender.Recommend("test1", 1);

            Assert.IsNotNull(recommended);
            Assert.AreEqual(1, recommended.Count);
            RecommendedItem firstRecommended = recommended[0];

            // item one should be recommended because it has a greater rating/score
            Assert.AreEqual(new GenericItem <String>("2"), firstRecommended.Item);
            Assert.AreEqual(0.3, firstRecommended.Value, EPSILON);
        }