Замість спільної фільтрації я б застосував підхід до матричної факторизації, в якому користувачі та фільми подібно представлені векторами прихованих функцій, крапкові продукти яких дають рейтинг. Зазвичай один просто вибирає ранг (кількість особливостей), не зважаючи на те, що представляють функції, а алгоритм робить все інше. Як і PCA, результат не відразу зрозумілий, але він дає хороші результати. Що ви хочете зробити, це розширити матрицю фільму, щоб включити додаткові згадані вами функції та переконайтесь, що вони залишаються фіксованими, оскільки алгоритм оцінює дві матриці за допомогою регуляризації. Відповідні записи в матриці користувача будуть ініціалізовані випадковим чином, після чого оцінюються алгоритмом матричної факторизації. Це універсальний та ефективний підхід, але він потребує певного розуміння машинного навчання,
Нещодавно я побачив хороший зошит з ipython, але зараз не можу його знайти, тому я віднесу вас до іншого, який, хоча і не такий приємний, все ж роз'яснює деякі математики.