コード例 #1
0
ファイル: Douban.cs プロジェクト: HuXiLiFeng/GoodLuck
        public static void MatrixFactorizationTest()
        {
            List <Rating> baseRatings = Tools.GetRatings(BaseRatingFile, " ");
            List <Rating> testRatings = Tools.GetRatings(TestRatingFile, " ");

            MatrixFactorization model = new MatrixFactorization(MaxUserId, MaxItemId);

            model.TrySGD(baseRatings, testRatings, 100, 0.005, 0.02, 0.98);
        }
コード例 #2
0
ファイル: Yelp.cs プロジェクト: HuXiLiFeng/GoodLuck
        // Algorithm testing
        public static void MatrixFactorizationTest(double testSize = 0.1)
        {
            List <Rating>       ratings   = Tools.GetRatings(RatingFile, ",");
            var                 max       = Tools.GetMaxUserIdAndItemId(ratings);
            var                 maxUserId = max.Item1 + 1;
            var                 maxItemId = max.Item2 + 1;
            MatrixFactorization model     = new MatrixFactorization(maxUserId, maxItemId);
            var                 t         = Tools.TrainTestSplit(ratings, testSize);

            model.TrySGD(t.Item1, t.Item2, 100);
        }
コード例 #3
0
        public static void MatrixFactorizationTest(double testSize = 0.2)
        {
            List <Rating> ratings = Tools.GetRatings(DefaultRatingFile, "::");

            Tools.UpdateIndexesToZeroBased(ratings);

            var t = Tools.TrainTestSplit(ratings, testSize);

            MatrixFactorization model = new MatrixFactorization(MaxUserId, MaxItemId);

            model.TrySGD(t.Item1, t.Item2, 100, 0.005);
        }
コード例 #4
0
        // Algorithm testing
        public static void MatrixFactorizationTest()
        {
            List <Rating> baseRatings = Tools.GetRatings(BaseRatingFile);
            List <Rating> testRatings = Tools.GetRatings(TestRatingFile);

            Tools.UpdateIndexesToZeroBased(baseRatings);
            Tools.UpdateIndexesToZeroBased(testRatings);

            MatrixFactorization model = new MatrixFactorization(MaxUserId, MaxItemId);

            model.TrySGD(baseRatings, testRatings, 100);
        }
コード例 #5
0
ファイル: Program.cs プロジェクト: HuXiLiFeng/GoodLuck
        public static void MatrixFactorization(Dictionary <string, string> pairs)
        {
            string separator = "\t";

            if (pairs.Keys.Contains("separator"))
            {
                separator = pairs["separator"];
            }

            List <Rating> baseRatings = Tools.GetRatings(pairs["train"], separator);
            List <Rating> testRatings = Tools.GetRatings(pairs["test"], separator);

            int maxUserId = System.Math.Max(baseRatings.Max(r => r.UserId), testRatings.Max(r => r.UserId));
            int maxItemId = System.Math.Max(baseRatings.Max(r => r.ItemId), testRatings.Max(r => r.ItemId));

            Tools.UpdateIndexesToZeroBased(baseRatings);
            Tools.UpdateIndexesToZeroBased(testRatings);

            int f = 10;

            if (pairs.Keys.Contains("f"))
            {
                f = Int32.Parse(pairs["f"]);
            }

            int epochs = 100;

            if (pairs.Keys.Contains("epochs"))
            {
                epochs = Int32.Parse(pairs["epochs"]);
            }

            double gamma = 0.01;

            if (pairs.Keys.Contains("gamma"))
            {
                gamma = Double.Parse(pairs["gamma"]);
            }

            double lambda = 0.01;

            if (pairs.Keys.Contains("lambda"))
            {
                lambda = Double.Parse(pairs["lambda"]);
            }

            double min_rating = 1.0;

            if (pairs.Keys.Contains("min_rating"))
            {
                min_rating = Double.Parse(pairs["min_rating"]);
            }

            double max_rating = 5.0;

            if (pairs.Keys.Contains("max_rating"))
            {
                max_rating = Double.Parse(pairs["max_rating"]);
            }

            MatrixFactorization model = new MatrixFactorization(maxUserId, maxItemId, f);

            model.TrySGD(baseRatings, testRatings, epochs, gamma, lambda, min_rating, max_rating);
        }