Zamiast filtrowania grupowego zastosowałbym metodę faktoryzacji macierzy, w której użytkownicy i filmy reprezentowane są przez wektory utajonych obiektów, których iloczyn skalarny daje oceny. Zwykle wybiera się jedynie rangę (liczbę cech) bez względu na to, co reprezentują cechy, a algorytm zajmuje się resztą. Podobnie jak PCA, wynik nie jest natychmiast interpretowalny, ale daje dobre wyniki. To, co chcesz zrobić, to rozszerzyć matrycę filmową o dodatkowe funkcje, o których wspomniałeś, i upewnij się, że pozostaną one stałe, ponieważ algorytm szacuje dwie matryce za pomocą regularizastionu. Odpowiednie wpisy w matrycy użytkownika zostaną zainicjowane losowo, a następnie oszacowane przez algorytm faktoryzacji macierzy. To wszechstronne i wydajne podejście, ale wymaga pewnej wiedzy na temat uczenia maszynowego,
Widziałem jakiś fajny notatnik ipython, ale nie mogę go teraz znaleźć, więc odsyłam cię do innego, który, choć nie tak miły, wciąż wyjaśnia niektóre matematyki.