У меня есть файл "csv", который содержит идентификатор пользователя, книгу, которую он прочитал, рейтинг для каждой книги. Я хочу использовать Lenskit, чтобы предсказать рейтинг книги для пользователя. Например, пользователь А прочитал 3 книги, А, В, С, я хочу поставить оценку книге А и посмотреть, насколько она близка к реальной оценке. Может ли кто-нибудь дать мне некоторое представление о том, как использовать Lenskit для этого. Я не разрабатываю какой-либо веб-сайт, и весь мой код представляет собой обычные java-файлы в Eclipse.
используйте Lenskit, чтобы указать рейтинг книги
Ответы (1)
Во-первых, традиционный способ сделать это — использовать перекрестную проверку, где вы выполняете надежный рандомизированное разделение данных на обучающие данные и тестовые данные.
LensKit Evaluator поддерживает это. Краткое руководство описывает, как начать работу; также есть краткое руководство, в котором представлены передовые методы проведения оценок.
Поэтому вам нужно будет настроить оценку, которая делает следующее:
- разделяет ваши данные для оценки
- запускает его на алгоритме LensKit, который вы хотите использовать
person
Michael Ekstrand
schedule
04.03.2015
Спасибо. Итак, я просто загружаю Lenskit и импортирую его в свой java-проект в Eclipse? Тогда я смогу использовать алгоритмы из Ленска со своим датасетом?
- person user3369592; 04.03.2015
@user3369592 user3369592 В принципе, да. Я бы рекомендовал использовать Maven, Gradle, Ivy или аналогичный инструмент для импорта LensKit из Maven Central вместо загрузки и импорта вручную. Соответствующий фрагмент кода Maven находится здесь: lenskit.org/download.
- person Michael Ekstrand; 06.03.2015
Когда я использую Intellij для использования этой демонстрации github.com/lenskit/lenskit-hello, intellij дал мне ошибку: EventDAO dao = new SimpleFileRatingDAO (inputFile, разделитель); SimpleFileRatingDAO устарел.
- person user3369592; 09.03.2015
@user3369592 user3369592, чтобы было ясно, это предупреждение, а не ошибка; код по-прежнему будет работать нормально. Но
SimpleFileRatingDAO
устарел в пользу TextEventDAO
; мы просто еще не обновили документы и примеры.
- person Michael Ekstrand; 10.03.2015
@ 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
я вывожу объект пользователей, и он пуст. Не могли бы вы дать мне несколько идей о том, как я могу получить элементы рекомендаций для пользователей.
- person user3369592; 10.03.2015
@user3369592 user3369592 Проект Lenskit-Hello принимает идентификаторы пользователей в командной строке и выводит рекомендации для этих пользователей. Попробуйте передать «100» в качестве аргумента командной строки.
- person Michael Ekstrand; 11.03.2015
@ Michael EkstrandСпасибо за помощь. Я использовал предикатор рейтинга в своем hello.java, чтобы видеть предварительный рейтинг пользователя в книге. Но теперь я хочу рассчитать общие ошибки предикации для всех пользователей. Я видел эту ссылку: grepcode.com/file/repo1.maven.org/maven2/org.grouplens.lenskit/… Можете ли вы дать мне некоторое представление о том, как использовать этот класс для вычисления общего несоответствия предикатов среди всех пользователей (используйте moive- набор данных 100k).
- person user3369592; 12.03.2015
ссылка, которую я указал выше, это RMSEPredictMetri: grepcode.com/file/repo1.maven.org/maven2/org.grouplens.lenskit/. Например, я попробовал с 5 пользователями, и все расхождения в предикатах находятся в пределах 0,5 (предикация - реальный рейтинг), но можем ли мы каким-либо образом увидеть общее расхождение в предикатах среди всех пользователей?
- person user3369592; 12.03.2015
@user3369592 user3369592 Вот для чего нужен оценщик; вы можете запустить его самостоятельно, как описано на странице QuickStart. Вы также можете запустить его из Java-программы, используя класс
SimpleEvaluator
. Показатели предназначены только для использования в рамках оценки.
- person Michael Ekstrand; 12.03.2015
Спасибо! Я помещаю свой новый вопрос здесь. stackoverflow.com/questions/29023592 /
- person user3369592; 13.03.2015
Когда я запускаю скрипт, он выдает ошибку: Нет подписи метода: eval.trainTest() применим для типов аргументов:
- person user3369592; 13.03.2015