public static void SVDPlusPlusTest() { List <Rating> baseRatings = Tools.GetRatings(BaseRatingFile, " "); List <Rating> testRatings = Tools.GetRatings(TestRatingFile, " "); SVDPlusPlus model = new SVDPlusPlus(MaxUserId, MaxItemId); model.TrySGD(baseRatings, testRatings, 100, 0.005, 0.02, 0.98); }
public void TestDefaultBehaviorIsNoDecay() { var mf = new SVDPlusPlus() { LearnRate = 1.1f, NumIter = 10, Ratings = TestUtils.CreateRatings() }; mf.Train(); Assert.AreEqual(1.1f, mf.current_learnrate); }
public void TestCurrentLearnRate() { var mf = new SVDPlusPlus() { LearnRate = 1.1f, Ratings = TestUtils.CreateRatings() }; mf.InitModel(); Assert.AreEqual(1.1f, mf.LearnRate); Assert.AreEqual(1.1f, mf.current_learnrate); }
public static void SVDPlusPlusTest() { List <Rating> baseRatings = Tools.GetRatings(BaseRatingFile); List <Rating> testRatings = Tools.GetRatings(TestRatingFile); Tools.UpdateIndexesToZeroBased(baseRatings); Tools.UpdateIndexesToZeroBased(testRatings); SVDPlusPlus model = new SVDPlusPlus(MaxUserId, MaxItemId); model.TrySGD(baseRatings, testRatings, 100, 0.01, 0.01, 0.96); }
public static void SVDPlusPlusTest(double testSize = 0.1) { List <Rating> ratings = Tools.GetRatings(DefaultRatingFile, "::"); Tools.UpdateIndexesToZeroBased(ratings); var t = Tools.TrainTestSplit(ratings, testSize); SVDPlusPlus model = new SVDPlusPlus(MaxUserId, MaxItemId); model.TrySGD(t.Item1, t.Item2, 100); }
public void TestDecay() { var svdpp = new SVDPlusPlus() { LearnRate = 1.0f, Decay = 0.5f, NumIter = 1, Ratings = TestUtils.CreateRatings() }; svdpp.Train(); Assert.AreEqual(0.5f, svdpp.current_learnrate); svdpp.Iterate(); Assert.AreEqual(0.25f, svdpp.current_learnrate); }
public void TestMatrixInit() { var svdpp = new SVDPlusPlus() { Ratings = TestUtils.CreateRatings() }; svdpp.InitModel(); Assert.IsNotNull(svdpp.user_factors); Assert.IsNotNull(svdpp.item_factors); Assert.IsNotNull(svdpp.p); Assert.IsNotNull(svdpp.y); Assert.IsNotNull(svdpp.user_bias); Assert.IsNotNull(svdpp.item_bias); }
public void TestFoldIn() { var svdpp = new SVDPlusPlus() { Ratings = TestUtils.CreateRatings() }; svdpp.Train(); var user_ratings = new List <Tuple <int, float> >(); user_ratings.Add(new Tuple <int, float>(0, 4.0f)); var candidate_items = new List <int> { 0, 1 }; // have a known and an unknown item var results = svdpp.ScoreItems(user_ratings, candidate_items); Assert.AreEqual(2, results.Count); }
static void Main(string[] args) { String path_training_data = "user_ratedmovies.dat"; String path_user_data = "users.dat"; String path_atr_data = "movie_genres.dat"; String path_pred_data = "predict.dat"; var user_mapping = new Mapping(); var item_mapping = new Mapping(); //var user_mapping = new EntityMapping(); //var item_mapping = new EntityMapping(); //String path_training_data = "1.rec.train"; //String path_test_data = "1.rec.test"; //String path_training_data = "u1.base"; //String path_test_data = "u1.test"; //var training_data = ItemData.Read(path_training_data); //var test_data = ItemData.Read(path_test_data); var training_data = RatingData.Read(path_training_data, user_mapping, item_mapping); var relevant_items = item_mapping.InternalIDs; var atr_data = AttributeData.Read(path_atr_data, item_mapping); var pred_data = RatingData.Read(path_pred_data, user_mapping, item_mapping); //var user_data = ItemData.Read(path_user_data, user_mapping); Console.WriteLine("I'm here"); //Console.WriteLine(String.Join(";", user_data.AllUsers)); //var test_data = RatingData.Read(path_test_data); //var recommender = new ItemKNN(); //recommender.Feedback = training_data; //recommender.Train(); //var recommender = new GSVDPlusPlus(); //var recommender = new MatrixFactorization(); //recommender.Ratings = training_data; // recommender.MaxRating = 5; // recommender.MinRating = 1; //recommender.ItemAttributes = atr_data; //recommender.NumFactors = 5; //recommender.NumIter = 10; //recommender.Train(); var recommender = new SVDPlusPlus(); recommender.Ratings = training_data; //recommender.AdditionalFeedback = user_data; Console.WriteLine("I'm here2"); Console.WriteLine(recommender.ToString()); //recommender.ItemAttributes = atr_data; recommender.NumFactors = 10; Console.WriteLine("I'm here3"); Console.WriteLine(recommender.ToString()); recommender.Train(); Console.WriteLine("I'm here4"); //var results = recommender.DoIterativeCrossValidation(recommdender, 10, 1, 1, true); var results = recommender.DoCrossValidation(10, false, true); ////var results = recommender.Evaluate(test_data, training_data); foreach (var key in results.Keys) { Console.WriteLine("{0}={1}", key, results[key]); } Console.WriteLine(results); //recommender.Predict(); recommender.WritePredictions(pred_data, "test45.dat", user_mapping, item_mapping, "{0}|{1}|{2}"); Console.WriteLine(recommender.Predict(1, 1)); Console.ReadLine(); }