Système de recommandation de
films avec Spark Machine
Learning
Sommaire
• Problématique
• Système de recommandation
• Flask
• Introduction à Hadoop
• Introduction à Spark
• Spark MLLib Collaborative Filtering
• Démo
Problématique
Le nombre grandissant des produits a rendu le choix du
consommateurs très dur, ajoutons à cela que les systèmes de
recommandations des sites s’appuyent sur la popularité, d’autre part
les solutions machines learning existantes qui se base sur Mahout,
sont très couteuses.
Le segment choisit pour notre sujet est la recommandation des films,
qui est l’une des bases les plus critiques pour les distributeurs VOD et
les services de streaming.
Système de recommandation
Un système de recommandation est une forme spécifique de filtrage de
l'information visant à présenter les éléments d'information (films,
musique, livres, news) qui sont susceptibles d'intéresser l'utilisateur.
Un système de recommandation requiert 3 étapes :
• Recueillir de l'information sur l'utilisateur.
• Bâtir une matrice ou un modèle utilisateur contenant l'information
recueillie.
• Extraire à partir de cette matrice une liste de recommandations.
Exemples
• 30% du CA total d’Amazon est généré grâce au système
de recommandation de produits.
• Le succès de Netflix repose
sur son système de
recommandation de films.
Technologies utilisées
• Hadoop
• Spark – Spark MLLib
• Flask
• Python
Flask
• Flask est un Framework open-source de développement web en
Python. Son but principal est d'être léger, afin de garder la souplesse
de la programmation Python, associé à un système de templates.
• Celui-ci a été utilisé car notre code a été écrit en Python.
Hadoop
• C’est un framework Open source qui est le fruit d’un des progrès les
plus significatifs dans l’automatisation de la parallélisation venu des
travaux de Google.
• Le noyau de Hadoop est constitué de la partie stockage HDFS (
Hadoop Distributed File System) et de la partie traitement
MapReduce.
• Hadoop fractionne les données en plusieurs blocs et les distribue à
travers les nœuds du cluster.
HDFS
• HDFS assure une portabilité et peut être déployé sur différents
systèmes d’exploitation.
• HDFS est un système distribué ou chaque nœud d’un cluster
correspond à un sous ensemble du volume globale de données du
cluster.
• HDFS utilise une taille de bloc fixée à 64 Mo
• HDFS fournit un système de réplication des blocs dont le nombre de
réplication est configurable
Spark
Spark est un Framework permettant de traiter de manières complexe
de données de types variés. Par conséquent il se situe plus au niveau
des étapes Map et Reduce.
Spark se combine très bien avec des clusters Hadoop et permet
d’appliquer des algorithmes complexes sur des données issues de ces
clusters.
RDD
La notion centrale du Spark est le RDD ( Resilient Distributed Dataset):
• Dataset : Il s’agit du jeu de données qui se parcourt comme une
collection
• Distributed : Cette structure distribuée afin d ‘être découpé pour être
traité dans les différents nœuds
• Resilient : Il pourra être relu en cas de problème
Les fonctionnalités de Spark
• Le Resilient Distributed Dataset (RDD) est un concept créé par les
fondateurs de Spark. C'est sous ce format que sont gérées les données en
Spark. Par défaut, lors de la lecture d'un fichier, les données sont
manipulées sous forme d'un RDD de String où chaque élément correspond
à une ligne du fichier. Il est ensuite possible d'effectuer des opérations sur
le RDD. Il en existe deux sortes :
• les transformations : elles transforment un RDD en un autre RDD (map,
filter, reduceByKey) ;
• les actions : elles transforment un RDD en une valeur (count, collect…).
Il est important de noter que les transformations sont « lazy », c'est-à-dire
que Spark n'exécutera les calculs demandés que si une action est appliquée à
un RDD
L’écosystème de Spark
l’écosystème contient des librairies additionnelles qui permettent de
travailler dans le domaine des analyses big data et du machine
learning.
Spark vs Hadoop
MLlib: Une bibliothèque optimisée pour le calcul
parallélisé
• MLlib est la bibliothèque de Machine Learning de Spark. Tous les
algorithmes de cette bibliothèque sont conçus de manière à être
optimisés pour le calcul en parallèle sur un cluster. les performances
deviennent extrêmement intéressantes lorsque les volumétries sont
très importantes
• MLlib a été conçu pour une utilisation très simple des algorithmes en
les appelant sur des RDD dans un format spécifique, quel que soit
l'algorithme choisi. L'architecture se rapproche ainsi de ce que l'on
trouve dans la bibliothèque scikit-learn de Python
Filtrage collaborative
filtrage collaboratif est sous-jacent aux systèmes de recommandation. Il
regroupe des techniques qui visent à opérer une sélection sur les éléments à
présenter aux utilisateurs (filtrage) en se basant sur le comportement et les
goûts exprimés de très nombreux autres utilisateurs
Le recueil d’information joue un rôle crucial dans le processus, il peut être :
• Explicite. L’utilisateur attribue des notes aux produit ou indique son
appréciation (like).
• Implicite. Recueil basé sur le comportement (achats, clics, durée sur une
page).
Par exemple
Youssef
Bilal
soukaina
Principe : les meilleures recommandations proviennent des individus qui
présentent des goûts ou comportements similaires.
• Point de départ. Nous devons disposer d’une base où les préférences
d’un grand nombre d’utilisateurs sont disponibles.
youssef
bilal
soukaina
youssra
Identifier les utilisateurs dont le profil de notes est le plus proche de Youssra. Se servir des notes de ces
individus pour l’item n°4 pour estimer la note de Youssra.
La recommandation ne tient absolument pas compte de la nature ou du contenu de l’item .
Les éléments clés de l’algorithme sont :
• Disposer d’une mesure de similarité ;
• Décider du nombre de voisins ;
• Calcul de la note agrégée, avec possiblement une
pondération tenant compte de la proximité.
Jeu de données
• Nous avons utilisé un jeu de données qui contient 21 000 000 ratings,
appliqués à 27000 films par 230000 utilisateurs.
• Chaque ligne dans le jeu de données ratings est formatée comme
suit : userId, movieId, rating.
• Chaque ligne dans le jeu de données movies est formatée comme
suit : movieId,Title, genres.
Modélisation
Base initiale
Base d’apprentissage
Base de test
Base de validation
Construction d’un modèle et
stockage mémoire simplement
Prédiction
Démo

Système de recommandations de films

  • 1.
    Système de recommandationde films avec Spark Machine Learning
  • 2.
    Sommaire • Problématique • Systèmede recommandation • Flask • Introduction à Hadoop • Introduction à Spark • Spark MLLib Collaborative Filtering • Démo
  • 3.
    Problématique Le nombre grandissantdes produits a rendu le choix du consommateurs très dur, ajoutons à cela que les systèmes de recommandations des sites s’appuyent sur la popularité, d’autre part les solutions machines learning existantes qui se base sur Mahout, sont très couteuses. Le segment choisit pour notre sujet est la recommandation des films, qui est l’une des bases les plus critiques pour les distributeurs VOD et les services de streaming.
  • 4.
    Système de recommandation Unsystème de recommandation est une forme spécifique de filtrage de l'information visant à présenter les éléments d'information (films, musique, livres, news) qui sont susceptibles d'intéresser l'utilisateur. Un système de recommandation requiert 3 étapes : • Recueillir de l'information sur l'utilisateur. • Bâtir une matrice ou un modèle utilisateur contenant l'information recueillie. • Extraire à partir de cette matrice une liste de recommandations.
  • 5.
    Exemples • 30% duCA total d’Amazon est généré grâce au système de recommandation de produits. • Le succès de Netflix repose sur son système de recommandation de films.
  • 6.
    Technologies utilisées • Hadoop •Spark – Spark MLLib • Flask • Python
  • 7.
    Flask • Flask estun Framework open-source de développement web en Python. Son but principal est d'être léger, afin de garder la souplesse de la programmation Python, associé à un système de templates. • Celui-ci a été utilisé car notre code a été écrit en Python.
  • 8.
    Hadoop • C’est unframework Open source qui est le fruit d’un des progrès les plus significatifs dans l’automatisation de la parallélisation venu des travaux de Google. • Le noyau de Hadoop est constitué de la partie stockage HDFS ( Hadoop Distributed File System) et de la partie traitement MapReduce. • Hadoop fractionne les données en plusieurs blocs et les distribue à travers les nœuds du cluster.
  • 9.
    HDFS • HDFS assureune portabilité et peut être déployé sur différents systèmes d’exploitation. • HDFS est un système distribué ou chaque nœud d’un cluster correspond à un sous ensemble du volume globale de données du cluster. • HDFS utilise une taille de bloc fixée à 64 Mo • HDFS fournit un système de réplication des blocs dont le nombre de réplication est configurable
  • 10.
    Spark Spark est unFramework permettant de traiter de manières complexe de données de types variés. Par conséquent il se situe plus au niveau des étapes Map et Reduce. Spark se combine très bien avec des clusters Hadoop et permet d’appliquer des algorithmes complexes sur des données issues de ces clusters.
  • 11.
    RDD La notion centraledu Spark est le RDD ( Resilient Distributed Dataset): • Dataset : Il s’agit du jeu de données qui se parcourt comme une collection • Distributed : Cette structure distribuée afin d ‘être découpé pour être traité dans les différents nœuds • Resilient : Il pourra être relu en cas de problème
  • 12.
    Les fonctionnalités deSpark • Le Resilient Distributed Dataset (RDD) est un concept créé par les fondateurs de Spark. C'est sous ce format que sont gérées les données en Spark. Par défaut, lors de la lecture d'un fichier, les données sont manipulées sous forme d'un RDD de String où chaque élément correspond à une ligne du fichier. Il est ensuite possible d'effectuer des opérations sur le RDD. Il en existe deux sortes : • les transformations : elles transforment un RDD en un autre RDD (map, filter, reduceByKey) ; • les actions : elles transforment un RDD en une valeur (count, collect…). Il est important de noter que les transformations sont « lazy », c'est-à-dire que Spark n'exécutera les calculs demandés que si une action est appliquée à un RDD
  • 13.
    L’écosystème de Spark l’écosystèmecontient des librairies additionnelles qui permettent de travailler dans le domaine des analyses big data et du machine learning.
  • 14.
  • 15.
    MLlib: Une bibliothèqueoptimisée pour le calcul parallélisé • MLlib est la bibliothèque de Machine Learning de Spark. Tous les algorithmes de cette bibliothèque sont conçus de manière à être optimisés pour le calcul en parallèle sur un cluster. les performances deviennent extrêmement intéressantes lorsque les volumétries sont très importantes • MLlib a été conçu pour une utilisation très simple des algorithmes en les appelant sur des RDD dans un format spécifique, quel que soit l'algorithme choisi. L'architecture se rapproche ainsi de ce que l'on trouve dans la bibliothèque scikit-learn de Python
  • 16.
    Filtrage collaborative filtrage collaboratifest sous-jacent aux systèmes de recommandation. Il regroupe des techniques qui visent à opérer une sélection sur les éléments à présenter aux utilisateurs (filtrage) en se basant sur le comportement et les goûts exprimés de très nombreux autres utilisateurs Le recueil d’information joue un rôle crucial dans le processus, il peut être : • Explicite. L’utilisateur attribue des notes aux produit ou indique son appréciation (like). • Implicite. Recueil basé sur le comportement (achats, clics, durée sur une page).
  • 17.
    Par exemple Youssef Bilal soukaina Principe :les meilleures recommandations proviennent des individus qui présentent des goûts ou comportements similaires.
  • 18.
    • Point dedépart. Nous devons disposer d’une base où les préférences d’un grand nombre d’utilisateurs sont disponibles. youssef bilal soukaina youssra Identifier les utilisateurs dont le profil de notes est le plus proche de Youssra. Se servir des notes de ces individus pour l’item n°4 pour estimer la note de Youssra. La recommandation ne tient absolument pas compte de la nature ou du contenu de l’item .
  • 19.
    Les éléments clésde l’algorithme sont : • Disposer d’une mesure de similarité ; • Décider du nombre de voisins ; • Calcul de la note agrégée, avec possiblement une pondération tenant compte de la proximité.
  • 20.
    Jeu de données •Nous avons utilisé un jeu de données qui contient 21 000 000 ratings, appliqués à 27000 films par 230000 utilisateurs. • Chaque ligne dans le jeu de données ratings est formatée comme suit : userId, movieId, rating. • Chaque ligne dans le jeu de données movies est formatée comme suit : movieId,Title, genres.
  • 21.
  • 22.
    Base initiale Base d’apprentissage Basede test Base de validation Construction d’un modèle et stockage mémoire simplement Prédiction
  • 23.