Afin de satisfaire leurs consommateurs, les entreprises sont amenées de plus en plus souvent à tenter de prédire les préférences de leurs utilisateurs. Un bel exemple est celui de la plateforme de location de vidéos qui souhaite prédire, pour chacun de ses utilisateurs, quels sont les films les plus susceptibles de lui plaire. Pour cela, la firme peut demander à chaque utilisateur de remplir un questionnaire sur ses goûts cinématographiques, et ensuite comparer ces goûts avec les caractéristiques des films de son catalogue (drame, comédie, horreur, catastrophe, documentaire...). Cette approche suppose de disposer de ces caractéristiques et, ce qui est moins réaliste, de la bonne volonté des utilisateurs pour remplir ledit questionnaire. Cette approche s'appelle le *content filtering*. Une approche plus naturelle pour les utilisateurs est de leur proposer d'attribuer une note aux films qu'ils visionnent. Il s'agit alors pour la plateforme de tirer parti de cette masse de données pour en déduire des recommandations pertinentes. Votre défi est de proposer des solutions algorithmiques qui accomplissent cette tâche. Cette approche s'appelle le *collaborative filtering*. Dans ce projet, on se concentrera sur les approches basée sur la factorisation matricielle. Voir par exemple: - https://www.youtube.com/watch?v=n3RKsY2H-NE&ab_channel=ArtoftheProblem pour une introduction assez haut niveau, et - https://www.youtube.com/watch?v=giIXNoiqO_U&list=PL3ZVX5cUMdLbiFgitZszhnMUZHDDEL0rS (Lectures 16.x) pour une introduction plus détaillée.