コード例 #1
0
ファイル: Douban.cs プロジェクト: HuXiLiFeng/GoodLuck
        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);
        }
コード例 #2
0
        public void TestDefaultBehaviorIsNoDecay()
        {
            var mf = new SVDPlusPlus()
            {
                LearnRate = 1.1f, NumIter = 10, Ratings = TestUtils.CreateRatings()
            };

            mf.Train();
            Assert.AreEqual(1.1f, mf.current_learnrate);
        }
コード例 #3
0
        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);
        }
コード例 #4
0
        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);
        }
コード例 #5
0
ファイル: ML_1M.cs プロジェクト: HuXiLiFeng/GoodLuck
        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);
        }
コード例 #6
0
        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);
        }
コード例 #7
0
        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);
        }
コード例 #8
0
        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);
        }
コード例 #9
0
ファイル: Program.cs プロジェクト: jratzenboeck/LFUGD3
        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();
        }