2. Sommaire
• Problématique
• Système de recommandation
• Flask
• Introduction à Hadoop
• Introduction à Spark
• Spark MLLib Collaborative Filtering
• Démo
3. 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.
4. 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.
5. 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.
7. 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.
8. 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.
9. 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
10. 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.
11. 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
12. 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
13. 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.
15. 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
16. 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).
18. • 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 .
19. 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é.
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.