Сопоставление пользователей с текущими данными

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

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

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

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


person Buns of Aluminum    schedule 26.08.2010    source источник


Ответы (1)


(Я автор.)

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

14 минут звучит слишком долго, чтобы загрузить такой небольшой объем данных, что-то не так. Вы можете получить дополнительную информацию по адресу [email protected].

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

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

person Sean Owen    schedule 30.08.2010