Пользователь сопоставляется с текущими данными - PullRequest
2 голосов
/ 26 августа 2010

У меня есть база данных, заполненная пользователями двух разных типов (наставниками и подопечными), поэтому я хочу, чтобы вторая группа (подопечные) могла "искать" людей в первой группе (наставники), которые соответствуют их профилю. Наставники и подопечные могут входить и менять элементы в своем профиле в любой момент времени.

В настоящее время я использую Apache Mahout для сопоставления пользователей (Recommender.mostS SimilarIDs ()). Проблема, с которой я сталкиваюсь, заключается в том, что мне приходится перезагружать пользовательские данные каждый раз, когда кто-то ищет. Само по себе это не занимает много времени, но когда Mahout обрабатывает данные, кажется, что это занимает очень много времени (14 минут для 3000 наставников и 3000 подопечных). После обработки сопоставление занимает всего несколько секунд. Я также получаю одно и то же сообщение INFO снова и снова во время его обработки («Обработано 2248 пользователей»), хотя просмотр кода показывает, что сообщение должно выводиться только через каждые 10000 пользователей.

Я использую GenericUserBasedRecommender и GenericDataModel, а также NearestNUserNeighborhood, AveragingPreferenceInferrer и PearsonCorrelationShoity. Я загружаю наставников из базы данных, добавляю учеников в список POJO и преобразовываю их в FastByIDMap для передачи в DataModel.

Есть ли лучший способ сделать это? Владелец продукта должен быть актуальным для каждого поиска.

1 Ответ

1 голос
/ 30 августа 2010

(я автор.)

Вам не нужно просить его каждый раз перезагружать данные, почему это так?

14 минут звучит слишком долго, слишком долго, чтобы загрузить такой небольшой объем данных, что-то не так. Вы можете получить дополнительную информацию по адресу user@mahout.apache.org.

Вы видите сообщения журнала от DataModel, которые вы можете отключить в выбранной вами системе ведения журналов. Он печатает один окончательный счет. Об этом не о чем беспокоиться.

Я бы посоветовал вам не использовать PreferenceInferrer, если вы не уверены, что хотите этого. У вас действительно есть рейтинги здесь? Я мог бы предложить LogLikelihoodSimilarity, если нет.

...