Согласен с @Ricardo. Этот вопрос слишком широкий, например, вопрос «Каков наилучший способ оптимизации системы?»
Одной из общих черт почти всех существующих механизмов рекомендаций является то, что окончательная рекомендация сводится к умножению некоторого числа матриц и векторов. Например, умножьте матрицу, содержащую весовые коэффициенты близости между пользователями, на вектор оценок товара.
(Конечно, вы должны быть готовы к тому, что большинство ваших векторов будет супер разреженным!)
Мой ответ, безусловно, слишком поздний для @Allain, но для других пользователей, которые находят этот вопрос с помощью поиска, пришлите мне личку и задайте более конкретный вопрос, и я обязательно отвечу.
(я профессионально проектирую двигатели.)