используйте Lenskit, чтобы указать рейтинг книги

У меня есть файл "csv", который содержит идентификатор пользователя, книгу, которую он прочитал, рейтинг для каждой книги. Я хочу использовать Lenskit, чтобы предсказать рейтинг книги для пользователя. Например, пользователь А прочитал 3 книги, А, В, С, я хочу поставить оценку книге А и посмотреть, насколько она близка к реальной оценке. Может ли кто-нибудь дать мне некоторое представление о том, как использовать Lenskit для этого. Я не разрабатываю какой-либо веб-сайт, и весь мой код представляет собой обычные java-файлы в Eclipse.


person user3369592    schedule 02.03.2015    source источник


Ответы (1)


Во-первых, традиционный способ сделать это — использовать перекрестную проверку, где вы выполняете надежный рандомизированное разделение данных на обучающие данные и тестовые данные.

LensKit Evaluator поддерживает это. Краткое руководство описывает, как начать работу; также есть краткое руководство, в котором представлены передовые методы проведения оценок.

Поэтому вам нужно будет настроить оценку, которая делает следующее:

  1. разделяет ваши данные для оценки
  2. запускает его на алгоритме LensKit, который вы хотите использовать
person Michael Ekstrand    schedule 04.03.2015
comment
Спасибо. Итак, я просто загружаю Lenskit и импортирую его в свой java-проект в Eclipse? Тогда я смогу использовать алгоритмы из Ленска со своим датасетом? - person user3369592; 04.03.2015
comment
@user3369592 user3369592 В принципе, да. Я бы рекомендовал использовать Maven, Gradle, Ivy или аналогичный инструмент для импорта LensKit из Maven Central вместо загрузки и импорта вручную. Соответствующий фрагмент кода Maven находится здесь: lenskit.org/download. - person Michael Ekstrand; 06.03.2015
comment
Когда я использую Intellij для использования этой демонстрации github.com/lenskit/lenskit-hello, intellij дал мне ошибку: EventDAO dao = new SimpleFileRatingDAO (inputFile, разделитель); SimpleFileRatingDAO устарел. - person user3369592; 09.03.2015
comment
@user3369592 user3369592, чтобы было ясно, это предупреждение, а не ошибка; код по-прежнему будет работать нормально. Но SimpleFileRatingDAO устарел в пользу TextEventDAO; мы просто еще не обновили документы и примеры. - person Michael Ekstrand; 10.03.2015
comment
@ Michael Ekstrand Я использовал Intellij для импорта этого проекта: github.com/lenskit/lenskit-hello. Я также загрузил набор данных фильма ml-100l. Затем я изменил java-файл hello.java inputFile = new File(ml-100k/u.data); Это outputedINFO o.g.l.k.i.m.ItemItemBuildContextProvider - создание контекста сборки INFO o.g.l.k.i.m.ItemItemModelBuilder - построение модели для 1682 элементов за 2,947 с, после чего программа просто остановилась - person user3369592; 10.03.2015
comment
я вывожу объект пользователей, и он пуст. Не могли бы вы дать мне несколько идей о том, как я могу получить элементы рекомендаций для пользователей. - person user3369592; 10.03.2015
comment
@user3369592 user3369592 Проект Lenskit-Hello принимает идентификаторы пользователей в командной строке и выводит рекомендации для этих пользователей. Попробуйте передать «100» в качестве аргумента командной строки. - person Michael Ekstrand; 11.03.2015
comment
@ Michael EkstrandСпасибо за помощь. Я использовал предикатор рейтинга в своем hello.java, чтобы видеть предварительный рейтинг пользователя в книге. Но теперь я хочу рассчитать общие ошибки предикации для всех пользователей. Я видел эту ссылку: grepcode.com/file/repo1.maven.org/maven2/org.grouplens.lenskit/… Можете ли вы дать мне некоторое представление о том, как использовать этот класс для вычисления общего несоответствия предикатов среди всех пользователей (используйте moive- набор данных 100k). - person user3369592; 12.03.2015
comment
ссылка, которую я указал выше, это RMSEPredictMetri: grepcode.com/file/repo1.maven.org/maven2/org.grouplens.lenskit/. Например, я попробовал с 5 пользователями, и все расхождения в предикатах находятся в пределах 0,5 (предикация - реальный рейтинг), но можем ли мы каким-либо образом увидеть общее расхождение в предикатах среди всех пользователей? - person user3369592; 12.03.2015
comment
@user3369592 user3369592 Вот для чего нужен оценщик; вы можете запустить его самостоятельно, как описано на странице QuickStart. Вы также можете запустить его из Java-программы, используя класс SimpleEvaluator. Показатели предназначены только для использования в рамках оценки. - person Michael Ekstrand; 12.03.2015
comment
Спасибо! Я помещаю свой новый вопрос здесь. stackoverflow.com/questions/29023592 / - person user3369592; 13.03.2015
comment
Когда я запускаю скрипт, он выдает ошибку: Нет подписи метода: eval.trainTest() применим для типов аргументов: - person user3369592; 13.03.2015