L'objectif de ce TP est de comprendre et d'implémenter un système de recommandation hybride qui combine deux approches courantes : le filtrage collaboratif et le filtrage basé sur le contenu. Vous utiliserez les données du célèbre dataset MovieLens pour recommander des films à des utilisateurs en fonction de leurs préférences et de leur historique.
- Manipulation de données avec Pandas.
- Utilisation des algorithmes de filtrage collaboratif et basé sur le contenu.
- Construction d’un profil utilisateur à partir de ses préférences.
- Recommandation d’articles (films) basés sur des similitudes.
- Connaissance de base de Python et Pandas.
- Familiarité avec les bibliothèques scikit-learn et Surprise.
Dans cette étape, vous allez charger deux fichiers du dataset MovieLens 100k :
u.data
: contient les évaluations (ratings) des utilisateurs pour les films.u.item
: contient les informations sur les films (titre, genres, etc.).
- Chargez les fichiers et créez un DataFrame
df_ratings
avec les colonnesuser_id
,item_id
,rating
, ettimestamp
. - Créez un autre DataFrame
movies_df
qui contient les informations sur les films (movie_id
,title
, etfeatures
).
L’objectif est de recommander des films à un utilisateur basé sur les évaluations similaires des autres utilisateurs.
- Implémentez un modèle de filtrage collaboratif basé sur la similarité des utilisateurs (cosine similarity) à l'aide de la bibliothèque Surprise.
- Divisez les données en un ensemble d'entraînement et de test, puis entraînez le modèle.
- Calculez la performance du modèle en utilisant la RMSE et la MAE.
Vous allez maintenant implémenter une méthode qui recommande des films basés sur les genres préférés d’un utilisateur.
- Transformez les genres des films en une matrice de TF-IDF (utilisez
TfidfVectorizer
). - Demandez à l’utilisateur de sélectionner ses genres préférés.
- Utilisez ces préférences pour calculer les similarités entre les genres sélectionnés et les films disponibles.
Le système de recommandation hybride combine les deux approches :
- Recommandations collaboratives basées sur les notes des utilisateurs similaires.
- Recommandations basées sur le contenu qui correspondent aux préférences de l’utilisateur.
- Récupérez les films recommandés via le filtrage collaboratif pour un utilisateur donné.
- Filtrez ces films en fonction des préférences de genres de l’utilisateur (utilisez la similarité calculée à l'étape précédente).
- Affichez les 5 meilleurs films recommandés avec leurs titres et genres.
Ajoutez une fonctionnalité qui permet à l’utilisateur de sélectionner dynamiquement ses genres préférés via une entrée.
- Permettez à l'utilisateur de spécifier ses genres préférés (par exemple : Action, Comedy, etc.).
- Adaptez les recommandations pour qu'elles correspondent à ces genres.