Recommandation par filtrage hybride

Le filtrage hybride consiste à combiner les techniques de recommandation basées sur le contenu avec celles basées sur le filtrage collaboratif. Beaucoup d'approches sont possibles. Nous en décrivons une ci-dessous que nous mettons en &eolig;uvre.

Le problème et les données

Le problème

Nous reprenons les jeux de données MovieLens utilisés dans le TP sur recommandation par filtrage collaboratif. Nous rappelons les éléments qui suivent.
Chaque utilisateur est décrit par quelques attributs :

Chaque film est décrit par :

On dispose alors d'une liste de notes sous la forme :

Dans le plus petit jeu de données, il y a 100.000 notes, provenant de 943 utilisateurs pour 1682 films.

Nous allons utiliser à la fois les attributs des données et les notes. Nous allons considérer un problème qui consiste à prédire la note attribuée par un utilisateur à un film. Il s'agît alors d'un problème de classification supervisée dans lequel il y a 5 classes, une classe par note possible. Les numéros d'identification de l'utilisateur et de l'item sont sans intérêt ; pour l'item, nous ne retiendrons que les attributs spécifiant le genre du film.

Apprentissage supervisé des notes

Construction du jeu d'apprentissage et du jeu de test

Nous devons construire le jeu de données permettant l'apprentissage des notes. Pour cela, un exemple est constitué d'un triplet (utilisateur, item, note). Un exemple est donc constitué des attributs de l'utilisateur et de l'item, la classe étant la note.

Construire le jeu d'apprentissage à partir des données présentes dans u1.base et un jeu de test avec les données présentes dans u1.test.
Les deux jeux de données doivent avoir les mêmes attributs.
Ils sont placés dans deux matrices.
On convient que la classe est dans la dernière colonne (celle de numéro ncol (jeu)).
Pour une raison purement technique, la classe (la note) doit avoir une valeur dont la plus petite est 0. La classe doit donc être la note - 1 et non pas la note. Faites-le.

Apprentissage supervisée

Il y a une multitude d'algorithmes utilisables pour réaliser une tâche d'apprentissage supervisée. Les méthodes d'ensemble sont connues pour leur excellente performance. Aussi, nous allons utiliser l'une d'entre-elles connue sous le nom de forêt aléatoire : une forêt aléatoire est un ensemble d'arbres de décision. Il y a plusieurs manières de construire un arbre de décision et plusieurs manières de combiner des arbres pour prédire la classe d'une donnée. Nous allons utiliser la méthode extreme gradient boosting tree qui est disponible dans R. Elle est très performante, très rapide et très facile à utiliser. On peut l'utiliser pour réaliser une tâche de classification binaire, ou à plus de 2 classes, une tâche de régression linéaire ou logistique, ou une tâche de ranking.

Prédiction des notes

Recommandation

Si vous avez fait tout ce qui précède

Je propose ici des sujets pour aller plus loin.