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); }
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); } }
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)); }
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"))); }
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)); }
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))); }