Apache Mahout делает все, что вы здесь упоминаете. Он основан на Java и поддерживает пользовательскую совместную фильтрацию (среди прочих) с GenericUserBasedRecommender
. Это алгоритм k-ближайшего соседа, в который вы можете подключить реализации сходства, такие как PearsonCorrelationSimilarity
и другие.
Посмотрите на пакет org.apache.mahout.cf.taste
и подпакеты. В подпакете .impl.eval
найдите GenericRecommenderIRStatsEvaluator
. Это запустит тест, который сообщает точность, отзыв и F1.
Наконец, уже есть несколько рабочих примеров, основанных на GroupLens
в mahout-examples
.