Exemplo n.º 1
0
        public void TestMovieLensSingle()
        {
            // step 1: dataset
            var config = new CsvConfiguration()
            {
                Delimiter = "::",
                HasHeaderRecord = true
            };

            // load data
            var trainReader = new CsvReader(Paths.MovieLens1MTrain75, config);
            var testReader = new CsvReader(Paths.MovieLens1MTest25, config, true);

            var container = new DataContainer();
            trainReader.LoadData(container);
            testReader.LoadData(container);

            var startTime = DateTime.Now;

            var splitter = new RatingSimpleSplitter(container);

            //var recommender = new MediaLiteRatingPredictor(new MatrixFactorization());
            var recommender = new LibFmTrainTester(libFmPath: "LibFm.Net.64.exe");

            // evaluation
            var ctx = new EvalutationContext<ItemRating>(recommender, splitter);
            var ep = new EvaluationPipeline<ItemRating>(ctx);
            ep.Evaluators.Add(new RMSE());
            ep.Run();

            var duration = (int)DateTime.Now.Subtract(startTime).TotalMilliseconds;

            Console.WriteLine("RMSE\tDuration\n{0}\t{1}", ctx["RMSE"], duration);
        }
Exemplo n.º 2
0
        public void TestEpinionsTrustAware()
        {
            // step 1: dataset
            var config = new CsvConfiguration()
            {
                Delimiter       = " ",
                HasHeaderRecord = true
            };

            // load data
            var trainReader = new CsvReader(Paths.EpinionTrain80, config);
            var testReader  = new CsvReader(Paths.EpinionTest20, config, true);
            var readers     = new List <IDatasetReader>()
            {
                trainReader, testReader
            };
            var epinionTrustReader = new EpinionTrustReader(readers.ToArray(), Paths.EpinionRelationsImplicit);

            var container = new DataContainer();

            epinionTrustReader.LoadData(container);

            var startTime = DateTime.Now;

            var splitter = new RatingSimpleSplitter(container);

            //var recommender = new MediaLiteRatingPredictor(new MatrixFactorization());
            var fb          = new TrustAwareLibFmFeatureBuilder(container, 4, true);
            var recommender = new LibFmTrainTester(featureBuilder: fb);


            // evaluation
            var ctx = new EvalutationContext <ItemRating>(recommender, splitter);
            var ep  = new EvaluationPipeline <ItemRating>(ctx);

            ep.Evaluators.Add(new RMSE());
            ep.Run();

            var duration = (int)DateTime.Now.Subtract(startTime).TotalMilliseconds;

            Console.WriteLine("RMSE\tDuration\n{0}\t{1}", ctx["RMSE"], duration);
        }
Exemplo n.º 3
0
        static void TrainTestFm()
        {
            var reader = new PlayingSessionReader(path);
            var container = new MusicDataContainer();

            reader.LoadData(container);

            var splitter = new RatingSimpleSplitter(container, 0.25f);
            //var itemRecommender = new MostPopular();
            //var model = new MediaLitePosFeedbakItemRecommender(itemRecommender);
            var fm = new LibFmTrainTester();

            var context = new EvalutationContext<ItemRating>(fm, splitter);

            var pipline = new EvaluationPipeline<ItemRating>(context);
            pipline.Evaluators.Add(new RMSE());
            pipline.Evaluators.Add(new MAE());

            pipline.Run();
        }
Exemplo n.º 4
0
        static void TrainTestFm()
        {
            var reader    = new PlayingSessionReader(path);
            var container = new MusicDataContainer();

            reader.LoadData(container);

            var splitter = new RatingSimpleSplitter(container, 0.25f);
            //var itemRecommender = new MostPopular();
            //var model = new MediaLitePosFeedbakItemRecommender(itemRecommender);
            var fm = new LibFmTrainTester();

            var context = new EvalutationContext <ItemRating>(fm, splitter);

            var pipline = new EvaluationPipeline <ItemRating>(context);

            pipline.Evaluators.Add(new RMSE());
            pipline.Evaluators.Add(new MAE());

            pipline.Run();
        }
Exemplo n.º 5
0
        public void TestAmazonAllDomains2()
        {
            // step 1: dataset
            var config = new CsvConfiguration()
            {
                Delimiter       = ",",
                HasHeaderRecord = true
            };

            var container = new DataContainer();

            var bookReader  = new CsvReader(Paths.AmazonBooksRatings, config);
            var musicReader = new CsvReader(Paths.AmazonMusicRatings, config);
            var dvdReader   = new CsvReader(Paths.AmazonDvdRatings, config);
            var videoReader = new CsvReader(Paths.AmazonVideoRatings, config);

            bookReader.LoadData(container);
            musicReader.LoadData(container);
            dvdReader.LoadData(container);
            videoReader.LoadData(container);

            var splitter    = new RatingSimpleSplitter(container, 0.25f);
            var startTime   = DateTime.Now;
            var recommender = new LibFmTrainTester();
            //var recommender = new MediaLiteRatingPredictor(new MatrixFactorization());

            // step3: evaluation
            var ctx = new EvalutationContext <ItemRating>(recommender, splitter);
            var ep  = new EvaluationPipeline <ItemRating>(ctx);

            ep.Evaluators.Add(new RMSE());
            ep.Evaluators.Add(new MAE());
            ep.Run();

            var duration = DateTime.Now.Subtract(startTime);

            Console.WriteLine("RMSE\t{0}\nDuration\t{1}", ctx["RMSE"], (int)duration.TotalMilliseconds);
        }
Exemplo n.º 6
0
        public void TestMovieLensSingle()
        {
            // step 1: dataset
            var config = new CsvConfiguration()
            {
                Delimiter       = "::",
                HasHeaderRecord = true
            };

            // load data
            var trainReader = new CsvReader(Paths.MovieLens1MTrain75, config);
            var testReader  = new CsvReader(Paths.MovieLens1MTest25, config, true);

            var container = new DataContainer();

            trainReader.LoadData(container);
            testReader.LoadData(container);

            var startTime = DateTime.Now;

            var splitter = new RatingSimpleSplitter(container);

            //var recommender = new MediaLiteRatingPredictor(new MatrixFactorization());
            var recommender = new LibFmTrainTester(libFmPath: "LibFm.Net.64.exe");

            // evaluation
            var ctx = new EvalutationContext <ItemRating>(recommender, splitter);
            var ep  = new EvaluationPipeline <ItemRating>(ctx);

            ep.Evaluators.Add(new RMSE());
            ep.Run();

            var duration = (int)DateTime.Now.Subtract(startTime).TotalMilliseconds;

            Console.WriteLine("RMSE\tDuration\n{0}\t{1}", ctx["RMSE"], duration);
        }
Exemplo n.º 7
0
        public void TestAmazonAllDomains2()
        {
            // step 1: dataset
            var config = new CsvConfiguration()
            {
                Delimiter = ",",
                HasHeaderRecord = true
            };

            var container = new DataContainer();

            var bookReader = new CsvReader(Paths.AmazonBooksRatings, config);
            var musicReader = new CsvReader(Paths.AmazonMusicRatings, config);
            var dvdReader = new CsvReader(Paths.AmazonDvdRatings, config);
            var videoReader = new CsvReader(Paths.AmazonVideoRatings, config);

            bookReader.LoadData(container);
            musicReader.LoadData(container);
            dvdReader.LoadData(container);
            videoReader.LoadData(container);

            var splitter = new RatingSimpleSplitter(container, 0.25f);
            var startTime = DateTime.Now;
            var recommender = new LibFmTrainTester();
            //var recommender = new MediaLiteRatingPredictor(new MatrixFactorization());

            // step3: evaluation
            var ctx = new EvalutationContext<ItemRating>(recommender, splitter);
            var ep = new EvaluationPipeline<ItemRating>(ctx);
            ep.Evaluators.Add(new RMSE());
            ep.Evaluators.Add(new MAE());
            ep.Run();

            var duration = DateTime.Now.Subtract(startTime);

            Console.WriteLine("RMSE\t{0}\nDuration\t{1}", ctx["RMSE"], (int)duration.TotalMilliseconds);
        }