2014-11-10 2 views
1

Я пишу рекомендательного системного оценщика с Apache Mahout, используя комплект обучения train.csv и метрику точности. Мой вопрос: можно ли использовать фиксированный набор тестов, не генерируемый оценщиком?Оценка рекомендации Mahout - как использовать фиксированный набор тестов

Чтобы быть более конкретным, у меня есть файл test.csv, который содержит список UserIds, и для этого я хочу дать рекомендации и оценить результаты с помощью показателя точности, только для этого фиксированного набора пользователей, который никогда не изменяется. Их рейтинги находятся в файле train.csv, я использую его для обучения алгоритму и содержит также все рейтинги других пользователей.

я пост также код, в котором я хочу, чтобы добавить эту функцию:

RandomUtils.useTestSeed(); 
    DataModel model = new FileDataModel(new File("files/train.csv")); 
    RecommenderIRStatsEvaluator evaluator = new GenericRecommenderIRStatsEvaluator(); 

    RecommenderBuilder recommenderBuilder = new RecommenderBuilder() { 

     public Recommender buildRecommender(DataModel model) throws TasteException { 
      //Here I build my recommender system 
      //return ... 
     } 
    }; 

    IRStatistics stats = evaluator.evaluate(recommenderBuilder, null, model, null, 5, 
      4/*relevance Threshold*/, 1); 


    System.out.println(stats.getPrecision()); 

ответ

0

Так что вы хотите кросс-проверки данных стандартного теста золота, которое у вас есть. Он разделен на поезд и тест. Вы хотите повторить тест. Это имеет большой смысл.

Оценщик Mahout выполняет разделение на вас, основываясь на случайном выборе тестовых и учебных данных из того, что вы проходите. Если вы пройдете фиксированное семя RNG, оценщик выберет тот же набор тестов и тренировок. Это не совсем то, что вы просили, но это один из способов получить повторяющиеся тесты CV.

В противном случае вам нужно будет взломать Evaluator, чтобы использовать ваши предварительно рассчитанные тестовые комплекты.

Точность метрики, которую я использую, представляет собой среднюю среднюю точность (MAP) при некотором количестве рекомендаций, таких как число, которое вы будете вычислять или показывать в пользовательском интерфейсе. Это не встроено в Оценщика Махута.

Чтобы сделать все это, вы бы взломали Оценщик.

BTW Я бы не использовал этот рекомендатель, если абсолютная простота не является наивысшим критерием дизайна. Новейшие редакторы Mahout строят модели, которые запрашиваются с помощью поисковой системы, такой как Solr или Elasticsearch. Они невероятно гибкие и масштабируемые.

Новый способ, описанный здесь: http://mahout.apache.org/users/recommender/intro-cooccurrence-spark.html Некоторые сообщения в блоге об этом методе здесь: http://occamsmachete.com/ml/

С помощью этого метода вы бы обучать на вашем train.csv и использовать историю пользователя в test.csv делать запросы. Вычислить точность всех запросов с помощью MAP. Новый метод использует поисковую систему для запросов, поэтому у вас также есть масштабируемая услуга.

Смежные вопросы