Exemple #1
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);
            Item      item1     = new GenericItem <String>("0");
            Item      item2     = new GenericItem <String>("1");
            Item      item3     = new GenericItem <String>("2");
            Item      item4     = new GenericItem <String>("3");
            ICollection <GenericItemCorrelation.ItemItemCorrelation> correlations =
                new List <GenericItemCorrelation.ItemItemCorrelation>(6);

            correlations.Add(new GenericItemCorrelation.ItemItemCorrelation(item1, item2, 1.0));
            correlations.Add(new GenericItemCorrelation.ItemItemCorrelation(item1, item3, 0.5));
            correlations.Add(new GenericItemCorrelation.ItemItemCorrelation(item1, item4, 0.2));
            correlations.Add(new GenericItemCorrelation.ItemItemCorrelation(item2, item3, 0.7));
            correlations.Add(new GenericItemCorrelation.ItemItemCorrelation(item2, item4, 0.5));
            correlations.Add(new GenericItemCorrelation.ItemItemCorrelation(item3, item4, 0.9));
            ItemCorrelation         correlation         = new GenericItemCorrelation(correlations);
            Recommender             recommender         = new GenericItemBasedRecommender(dataModel, correlation);
            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);
        }
Exemple #2
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);
            IList <GenericItemCorrelation.ItemItemCorrelation> correlations =
                new List <GenericItemCorrelation.ItemItemCorrelation>(6);

            for (int i = 0; i < 6; i++)
            {
                for (int j = i + 1; j < 6; j++)
                {
                    correlations.Add(
                        new GenericItemCorrelation.ItemItemCorrelation(new GenericItem <String>(i.ToString()),
                                                                       new GenericItem <String>(j.ToString()),
                                                                       1.0 / (1.0 + (double)i + (double)j)));
                }
            }
            ItemCorrelation         correlation     = new GenericItemCorrelation(correlations);
            Recommender             recommender     = new GenericItemBasedRecommender(dataModel, correlation);
            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);
            }
        }
Exemple #3
0
        private static ItemBasedRecommender buildRecommender2()
        {
            List <User> users = new List <User>(4);

            users.Add(GetUser("test1", 0.1, 0.3, 0.9, 0.8));
            users.Add(GetUser("test2", 0.2, 0.3, 0.3, 0.4));
            users.Add(GetUser("test3", 0.4, 0.3, 0.5, 0.1, 0.1));
            users.Add(GetUser("test4", 0.7, 0.3, 0.8, 0.5, 0.6));
            DataModel dataModel = new GenericDataModel(users);
            ICollection <GenericItemCorrelation.ItemItemCorrelation> correlations =
                new List <GenericItemCorrelation.ItemItemCorrelation>(10);
            Item item1 = new GenericItem <String>("0");
            Item item2 = new GenericItem <String>("1");
            Item item3 = new GenericItem <String>("2");
            Item item4 = new GenericItem <String>("3");
            Item item5 = new GenericItem <String>("4");

            correlations.Add(new GenericItemCorrelation.ItemItemCorrelation(item1, item2, 1.0));
            correlations.Add(new GenericItemCorrelation.ItemItemCorrelation(item1, item3, 0.8));
            correlations.Add(new GenericItemCorrelation.ItemItemCorrelation(item1, item4, -0.6));
            correlations.Add(new GenericItemCorrelation.ItemItemCorrelation(item1, item5, 1.0));
            correlations.Add(new GenericItemCorrelation.ItemItemCorrelation(item2, item3, 0.9));
            correlations.Add(new GenericItemCorrelation.ItemItemCorrelation(item2, item4, 0.0));
            correlations.Add(new GenericItemCorrelation.ItemItemCorrelation(item2, item2, 1.0));
            correlations.Add(new GenericItemCorrelation.ItemItemCorrelation(item3, item4, -0.1));
            correlations.Add(new GenericItemCorrelation.ItemItemCorrelation(item3, item5, 0.1));
            correlations.Add(new GenericItemCorrelation.ItemItemCorrelation(item4, item5, -0.5));
            ItemCorrelation correlation = new GenericItemCorrelation(correlations);

            return(new GenericItemBasedRecommender(dataModel, correlation));
        }
Exemple #4
0
        public void TestFromCorrelation()
        {
            User            user1            = GetUser("test1", 1.0, 2.0);
            User            user2            = GetUser("test2", 2.0, 5.0);
            User            user3            = GetUser("test3", 3.0, 6.0);
            DataModel       dataModel        = GetDataModel(user1, user2, user3);
            ItemCorrelation otherCorrelation = new PearsonCorrelation(dataModel);
            ItemCorrelation itemCorrelation  = new GenericItemCorrelation(otherCorrelation, dataModel);

            AssertCorrelationEquals(1.0,
                                    itemCorrelation.GetItemCorrelation(dataModel.GetItem("0"), dataModel.GetItem("0")));
            AssertCorrelationEquals(0.960768922830523,
                                    itemCorrelation.GetItemCorrelation(dataModel.GetItem("0"), dataModel.GetItem("1")));
        }
Exemple #5
0
        private static ItemBasedRecommender buildRecommender()
        {
            DataModel dataModel = new GenericDataModel(GetMockUsers());
            ICollection <GenericItemCorrelation.ItemItemCorrelation> correlations =
                new List <GenericItemCorrelation.ItemItemCorrelation>(2);
            Item item1 = new GenericItem <String>("0");
            Item item2 = new GenericItem <String>("1");
            Item item3 = new GenericItem <String>("2");

            correlations.Add(new GenericItemCorrelation.ItemItemCorrelation(item1, item2, 1.0));
            correlations.Add(new GenericItemCorrelation.ItemItemCorrelation(item1, item3, 0.5));
            ItemCorrelation correlation = new GenericItemCorrelation(correlations);

            return(new GenericItemBasedRecommender(dataModel, correlation));
        }
Exemple #6
0
        public void TestSimple()
        {
            Item item1 = new GenericItem <String>("1");
            Item item2 = new GenericItem <String>("2");
            Item item3 = new GenericItem <String>("3");
            Item item4 = new GenericItem <String>("4");
            List <GenericItemCorrelation.ItemItemCorrelation> correlations =
                new List <GenericItemCorrelation.ItemItemCorrelation>(4);

            correlations.Add(new GenericItemCorrelation.ItemItemCorrelation(item1, item2, 0.5));
            correlations.Add(new GenericItemCorrelation.ItemItemCorrelation(item2, item1, 0.6));
            correlations.Add(new GenericItemCorrelation.ItemItemCorrelation(item1, item1, 0.5));
            correlations.Add(new GenericItemCorrelation.ItemItemCorrelation(item1, item3, 0.3));
            GenericItemCorrelation itemCorrelation = new GenericItemCorrelation(correlations);

            Assert.AreEqual(1.0, itemCorrelation.GetItemCorrelation(item1, item1));
            Assert.AreEqual(0.6, itemCorrelation.GetItemCorrelation(item1, item2));
            Assert.AreEqual(0.6, itemCorrelation.GetItemCorrelation(item2, item1));
            Assert.AreEqual(0.3, itemCorrelation.GetItemCorrelation(item1, item3));
            Assert.IsTrue(Double.IsNaN(itemCorrelation.GetItemCorrelation(item3, item4)));
        }