Académique Documents
Professionnel Documents
Culture Documents
Musicly Capostone
Musicly Capostone
Projet Module 5 :
1. Introduction
Le taux de désabonnement (ou attrition de clients) est une tendance des clients à abandonner une
marque et à cesser d'être un client payant d'une entreprise particulière.
Le pourcentage de clients qui cessent d’utiliser les produits ou services d’une entreprise au cours
d’une période donnée est appelé taux de désabonnement (attrition).
L'engagement, la fidélisation et le taux de désabonnement des clients ont toujours été des sujets
cruciaux pour les entreprises. De ce fait, l'analyse prédictive aide les entreprises à prendre des
mesures proactives telles que des offres et des remises pour fidéliser leurs clients et, dans
certains cas, améliorer la fidélité.
Chaque fois qu'un utilisateur interagit avec une application de diffusion de musique, des
données sont générées :
• en train de lire des chansons,
• de les ajouter à des listes de lecture,
• de les noter avec le pouce vers le bas / haut,
• d'ajouter un ami,
• de se connecter ou de se déconnecter,
• de modifier les paramètres.
Ecole Hassania des Travaux Publics MSDE (Edition 2)
Les journaux d'activité (logfiles) des utilisateurs contiennent des informations clés pour aider
les entreprises à comprendre si les utilisateurs sont satisfaits du service.
Afin de rester sur la bonne voie avec ses objectifs financiers, il est essentiel pour les entreprises
de streaming musical d'identifier les utilisateurs susceptibles de se désabonner. C'est-à-dire les
utilisateurs qui risquent de passer du niveau premium au niveau gratuit ou d'annuler le service.
Si une entreprise de Streaming de musique identifie avec précision ces utilisateurs à l'avance,
elle peut leur offrir des remises ou d'autres incitations similaires et économiser des millions de
revenus. C'est un fait bien connu qu'il est plus coûteux d'acquérir un nouveau client que de
conserver un client existant.
2. Enoncé du problème
Pour aider à atteindre cette phase de prédiction d’attrition des clients, vous devez en premier
degré effectuer une exploration et un prétraitement rigoureux des données, notamment :
• Définir ce qu'est le taux de désabonnement (churn)
• Explorez comment les utilisateurs actifs et les utilisateurs actifs diffèrent selon les
données
• Trouver les colonnes d'intérêt à utiliser dans la modélisation et créer de nouvelles
fonctionnalités basées sur les données disponibles (ingénierie des fonctionnalités)
• Sélectionner les fonctionnalités les plus adaptées à la modélisation (sélection des
fonctionnalités)
✓ N.B : Le projet doit se faire avec pyspark sur un notebook ayant un moteur de calcul Spark
(voir la section pré-requis)
✓ N.B : Le livrable du projet doit être sous format html et ipynb, en exportant le notebook
une fois que vous avez fini.
✓ N.B : Chaque tache doit se faire sur une cellule indépendante (sauf si elles sont groupées).
Vos interprétations, analyses, commentaires et conclusions doivent se faire dans des
cellules apparts.
✓ N.B : Le deadline pour votre projet est pour le Vendredi 26 Mars à 23H
Pré-requis
• Plateforme requise:
o Databricks Community Edition
https://community.cloud.databricks.com/login.html
Ecole Hassania des Travaux Publics MSDE (Edition 2)
• Required cluster:
o Databricks Runtime Version
6.4 (includes Apache Spark 2.4.5, Scala 2.11)
• Dataset:
o Musicly-event-data.json (sur le drive)
L'ensemble de données se présente sous la forme d'un fichier JSON
contenant 543705 échantillons de données du journal des événements
d'octobre à décembre 2018 pour la plate-forme de streaming de
musique Musicly, similaire à des sociétés comme Spotify et Pandora.
• Documentation Spark
o Pyspark
https://spark.apache.org/docs/2.4.3/api/python/pyspark.sql.html
o Import de libraries
Vous pouvez importer les bibliothèques ci-dessous pour effectuer votre
exploration et analyse de données, ainsi que certaines configurations de
base :
from pyspark import SparkConf
from pyspark.sql import SparkSession
from pyspark.sql import Window
import numpy as np
import pandas as pd
import datetime
from time import time
import matplotlib.pyplot as plt
import matplotlib.colors as mcolors
import seaborn as sns
%matplotlib inline
sns.set_palette('pastel')
pd.set_option('display.max_columns', None)
pd.set_option('display.expand_frame_repr', False)
pd.set_option('max_colwidth', -1)
spark = SparkSession \
.builder \
.appName("Sparkify") \
.getOrCreate()
spark.sparkContext.getConf().getAll()
df = spark.read.format("json").load("……..json")
df.printSchema()
Ecole Hassania des Travaux Publics MSDE (Edition 2)
Comprehension de données
root
|-- artist: string (nullable = true)
|-- auth: string (nullable = true)
|-- firstName: string (nullable = true)
|-- gender: string (nullable = true)
|-- itemInSession: long (nullable = true)
|-- lastName: string (nullable = true)
|-- length: double (nullable = true)
|-- level: string (nullable = true)
|-- location: string (nullable = true)
|-- method: string (nullable = true)
|-- page: string (nullable = true)
|-- registration: long (nullable = true)
|-- sessionId: long (nullable = true)
|-- song: string (nullable = true)
|-- status: long (nullable = true)
|-- ts: long (nullable = true)
|-- userAgent: string (nullable = true)
|-- userId: string (nullable = true)’
Les 543 705 lignes de l'ensemble de données appartiennent à un total de 448 utilisateurs
uniques, dont 99 sont des utilisateurs désabonnés et 349 sont des utilisateurs actifs. Il y a
quelques colonnes où les données sont manquantes, et elles sont liées à des colonnes contenant
des informations utilisateur et des colonnes liées à un type d'événement spécifique, à savoir les
événements où une chanson a été jouée.
To Do :
1. Quel est le nombre de colonnes dans le dataframe ?
2. Quel est le nombre d'échantillons dans le dataframe ?
3. Afficher les 10 premières lignes en tant que dataframe pandas
4. Détecter les anomalies au niveau Artist et faire un reformattage de ces valeurs.
5. Faire une description sur le groupement des champs suivants de votre dataset :
a. 'auth', 'firstName', 'gender', 'itemInSession', 'lastName', 'length', 'level', 'location'
b. 'method', 'page', 'registration', 'sessionId'
c. 'status', 'ts', 'userAgent', 'userId'
Ecole Hassania des Travaux Publics MSDE (Edition 2)
Afin de comprendre tous les événements de l'ensemble de données qui se sont produites entre
octobre et décembre 2018.
18. Diviser la colonne location en deux, une colonne avec le nom de l’emplacement et une
colonne avec state/etat. Garder que le premier state/etat et afficher séparément le nom
de l’emplacement et le champ etat.
Une fois que vous avez effectué une analyse préliminaire, créez une colonne Churn à utiliser
comme étiquette pour le modèle. Il est recommandé d'utiliser les événements de confirmation
d'annulation pour définir votre taux de désabonnement, qui se produisent à la fois pour les
utilisateurs payants et gratuits.
Ecole Hassania des Travaux Publics MSDE (Edition 2)
Une fois que vous avez défini le taux de désabonnement, effectuez une analyse exploratoire
des données pour observer le comportement des utilisateurs qui sont restés par rapport aux
utilisateurs qui ont abandonné. Vous pouvez commencer par explorer les agrégats sur ces deux
groupes d'utilisateurs, en observant le degré d'action spécifique qu'ils ont vécu par unité de
temps ou nombre de chansons jouées.
To Do :
Il est recommandé d'utiliser une définition assez stricte mais simple pour le taux de
désabonnement, où un utilisateur est considéré comme étant désabonné seulement quand il
a supprimé son compte et a complètement cessé d'utiliser le service. Ceci est facilement
accessible dans les données comme 'page == Cancellation Confirmation' et s'applique aux
plans gratuits et payants de la même manière.
Si nous analysons le nombre d'utilisateurs désabonnés et actifs, nous allons voir qu’il y a
environ trois fois plus d'échantillons avec des utilisateurs actifs. Et afin de comprendre mieux
pourquoi ces utilisateurs ont choisi de se désabonner, vous allez faire l’analyse suivante et
interpréter le résultat :
10. Convertir votre dataframe en pandas dataframe
11. Créer un filtre sur les lignes qui ont la valeur «Annuler» dans la colonne «page»
12. Utiliser le filtre pour sélectionner les lignes/évènements avant les lignes du filtre créé
pour voir ce que l'utilisateur a fait avant l'événement 'Annuler'.
13. Quelle est votre interprétation du résultat ?
Afin de mieux comprendre le comportement de l’utilisateur ainsi que la relation de son activité
et son désabonnement, vous allez afficher les informations suivantes et interpréter le résultat :
Ecole Hassania des Travaux Publics MSDE (Edition 2)