563 lines
15 KiB
Markdown
563 lines
15 KiB
Markdown
|
<!--
|
|||
|
theme: default
|
|||
|
paginate: true
|
|||
|
footer: Glenn Rolland © 2020
|
|||
|
|
|||
|
_backgroundColor: #662d91
|
|||
|
_color: white
|
|||
|
-->
|
|||
|
|
|||
|
# Gestion de projets _data_
|
|||
|
|
|||
|
### Étapes d'un projet _data_
|
|||
|
|
|||
|
> Glenn Y. Rolland
|
|||
|
> <glenux@glenux.net>
|
|||
|
|
|||
|
---
|
|||
|
|
|||
|
## Vue d'ensemble
|
|||
|
|
|||
|
### Plusieurs méthodes spécifiques mais peu de maturité
|
|||
|
|
|||
|
* Méthode CRISP (anciennement CRISP-DM)
|
|||
|
* développée par IBM dans les années 60
|
|||
|
* pour des projets de DataMining
|
|||
|
* s'applique efficacement à la data-science
|
|||
|
* Egalement des façons de faire plus récentes (trop?)
|
|||
|
* Certains points fluctuent selon les méthodes
|
|||
|
|
|||
|
---
|
|||
|
|
|||
|
## Vue d'ensemble
|
|||
|
|
|||
|
### Méthode CRISP
|
|||
|
|
|||
|
1. Formaliser questions business
|
|||
|
2. Collecte des données
|
|||
|
3. Construction du Data Hub
|
|||
|
4. Modélisation (et analyse) des données
|
|||
|
5. Évaluation
|
|||
|
6. Déploiement et industrialisation
|
|||
|
|
|||
|
----
|
|||
|
|
|||
|
<!--
|
|||
|
_class: chapter
|
|||
|
-->
|
|||
|
|
|||
|
![bg right](images/bg_business_question.jpg)
|
|||
|
|
|||
|
## Étape 1 -<br/> Formaliser les questions business
|
|||
|
|
|||
|
----
|
|||
|
|
|||
|
## Étape 1 - Formaliser les questions business
|
|||
|
|
|||
|
### Objectifs
|
|||
|
|
|||
|
* Périmétrer le projet
|
|||
|
* quels services ?
|
|||
|
* quels enjeux opérationnels ?
|
|||
|
* quels référentiels et réglementations à respecter ?
|
|||
|
* quel environnement ?
|
|||
|
* Formaliser
|
|||
|
* les objectifs
|
|||
|
* les lignes rouges à ne pas franchir
|
|||
|
|
|||
|
---
|
|||
|
|
|||
|
## Étape 1 - Formaliser les questions business
|
|||
|
|
|||
|
### Comment ? <small>(1/2)</small>
|
|||
|
|
|||
|
* Définir les problématiques à résoudre parmi cinq types de questions :
|
|||
|
* Quelle quantité ? (régression)
|
|||
|
* Est-ce A ou B (ou C, D, E... ) ? (classification)
|
|||
|
* Comment les données sont-elles organisées? (clustering)
|
|||
|
* Est-ce étrange ? (détection d’anomalie)
|
|||
|
* Que devons-nous faire ensuite ? (apprentissage par renforcement)
|
|||
|
|
|||
|
---
|
|||
|
|
|||
|
## Étape 1 - Formaliser les questions business
|
|||
|
|
|||
|
### Comment ? <small>(2/2)</small>
|
|||
|
|
|||
|
* Identifier les variables à prédire
|
|||
|
* Prévisions de ventes (régression)
|
|||
|
* Profil client (clustering)
|
|||
|
* « Qu’est-ce qui attire le plus les clients : un coupon de 5 € ou une remise de 25 % ? » (classification)
|
|||
|
|
|||
|
---
|
|||
|
|
|||
|
<!--
|
|||
|
_class: chapter
|
|||
|
-->
|
|||
|
|
|||
|
![bg right](images/bg_data_collection.jpg)
|
|||
|
|
|||
|
|
|||
|
## Étape 2 -<br/> Collecte des données
|
|||
|
|
|||
|
---
|
|||
|
|
|||
|
## Étape 2 - Collecte des données
|
|||
|
|
|||
|
### Objectif
|
|||
|
|
|||
|
* Identifier les données utiles
|
|||
|
* Rendre leur accès possible
|
|||
|
* Les données sont rarement au même endroit
|
|||
|
* Identifier les sources où obtenir ces données
|
|||
|
* Savoir y accéder
|
|||
|
|
|||
|
<br/>
|
|||
|
|
|||
|
:warning: La collecte de données est consommatrice de temps et d’énergie
|
|||
|
|
|||
|
---
|
|||
|
|
|||
|
## Étape 2 - Collecte des données
|
|||
|
|
|||
|
### Cas idéal : bases de données existantes
|
|||
|
|
|||
|
* Une partie des données sont regroupée dans une ou plusieurs bases de données (BDD) :
|
|||
|
* Il faut trouver les BDD dans son entreprise (ou chez les fournisseurs)
|
|||
|
* Les BDD sont accessibles, documentées et les données structurées (ex: data warehouse, BDD relationnelle).
|
|||
|
* Il faut récupérer des données peu structurées via des requêtes (requêtes SQL, etc.)
|
|||
|
|
|||
|
---
|
|||
|
|
|||
|
## Étape 2 - Collecte des données
|
|||
|
|
|||
|
### Cas fréquent : pas de base de données
|
|||
|
|
|||
|
* Il faut extraire les données depuis d'autre supports
|
|||
|
* Reconnaissance de texte automatisée (_Optical Character Recognition_ ou _OCR_)
|
|||
|
* Recopie depuis des formulaires papier (_data entry_)
|
|||
|
* Extraction de données depuis des sites web (_web scraping_)
|
|||
|
* Extraction de données depuis des services web (_API REST_, _XML RPC_)
|
|||
|
|
|||
|
----
|
|||
|
|
|||
|
## Étape 2 - Collecte des données
|
|||
|
|
|||
|
### Cas du _web scraping_ <small>(1/2)</small>
|
|||
|
|
|||
|
* Il s'agit d'écrire un programme pour
|
|||
|
* télécharger une page d'un site web
|
|||
|
* la découper pour extraire les données,
|
|||
|
* les structurer et l'exporter au format souhaité
|
|||
|
* Méthode rarement utilisables en production
|
|||
|
* s’apparente à voler des données sur un site…
|
|||
|
* … sauf autorisation explicite contraire !
|
|||
|
|
|||
|
----
|
|||
|
|
|||
|
## Étape 2 - Collecte des données
|
|||
|
|
|||
|
### Cas du _web scraping_ <small>(2/2)</small>
|
|||
|
|
|||
|
* Méthode chronophage et difficile :
|
|||
|
* À faire au cas, car tous les sites sont différents :cry:
|
|||
|
* Certaines parties des sites sont dynamiques :scream:
|
|||
|
* Les sites web évoluent et leur structure peut changer du jour au lendemain :sob:
|
|||
|
|
|||
|
----
|
|||
|
|
|||
|
## Étape 2 - Collecte des données
|
|||
|
|
|||
|
### Cas des API (Application Programming Interface)
|
|||
|
|
|||
|
* Fournies par des tiers (organisations, développeurs, etc.)
|
|||
|
* Implémentées par les développeurs dans un programme sur mesure
|
|||
|
* Permettent d'effectuer des actions sur un système extérieur
|
|||
|
* ex: [OpenWeatherMap API](https://openweathermap.org/api)
|
|||
|
* ex: [Covid-19 API](https://covid2019-api.herokuapp.com/)
|
|||
|
* ex: [SNCF API](https://www.digital.sncf.com/startup/api)
|
|||
|
|
|||
|
:warning: Le nombre d'accès peut être limité dans le temps (ex: 100 connexions / heure)
|
|||
|
|
|||
|
:blue_book: Le site [Programme Web](https://www.programmableweb.com/) référence les API publiques depuis 2005
|
|||
|
|
|||
|
---
|
|||
|
|
|||
|
<!--
|
|||
|
_class: chapter
|
|||
|
-->
|
|||
|
|
|||
|
## Étape 3 -<br/>Construction du <br/>Data Hub
|
|||
|
|
|||
|
![bg right](images/bg_data_hub.jpg)
|
|||
|
|
|||
|
---
|
|||
|
|
|||
|
## Étape 3 - Construction du Data Hub
|
|||
|
|
|||
|
### Objectifs
|
|||
|
|
|||
|
* Nettoyer les données
|
|||
|
* Mettre en forme les données
|
|||
|
* Rendre utilisable par les algorithmes qui seront choisis
|
|||
|
|
|||
|
### Enjeux
|
|||
|
|
|||
|
* Éviter des erreurs dans les hypothèses
|
|||
|
* Limiter les biais dans les modèles prédictifs
|
|||
|
|
|||
|
---
|
|||
|
|
|||
|
## Étape 3 - Construction du Data Hub
|
|||
|
|
|||
|
### Contraintes
|
|||
|
|
|||
|
* Phase la plus chronophage du projet
|
|||
|
* 50 à 80% du temps
|
|||
|
* Volumétrie des données (To, Po et +)
|
|||
|
* Aller-retours en data scientists et les équipes métiers
|
|||
|
* Des formats de données différents à convertir
|
|||
|
* CSV, JSON, XML, SQL, etc.
|
|||
|
|
|||
|
---
|
|||
|
|
|||
|
## Étape 3 - Construction du Data Hub
|
|||
|
|
|||
|
### Risque : données erronées
|
|||
|
|
|||
|
* Erreurs de saisie
|
|||
|
* Incompatibilités entre la source de données et la base
|
|||
|
|
|||
|
### Risque : données incomplètes
|
|||
|
|
|||
|
* ex: Les utilisateurs ne renseignent que les champs obligatoires
|
|||
|
* ex: Les utilisateurs ne renseignent que ceux qui les concernent dans leur activité (les autres données passent à la trappe)
|
|||
|
|
|||
|
---
|
|||
|
|
|||
|
## Étape 3 - Construction du Data Hub
|
|||
|
|
|||
|
### Risque : données non normées
|
|||
|
|
|||
|
* Plusieurs utilisateurs renseignent une donnée identique sous des formats différents
|
|||
|
* ex: un individu de sexe masculin sera renseigné M., Mr ou Monsieur
|
|||
|
|
|||
|
⇒ Conséquence : impossible de comparer les données
|
|||
|
|
|||
|
---
|
|||
|
|
|||
|
## Étape 3 - Construction du Data Hub
|
|||
|
|
|||
|
### Risque : les doublons
|
|||
|
|
|||
|
* Un donnée se retrouve plusieurs fois dans la base
|
|||
|
* Laquelle est la plus à jour ?
|
|||
|
* Laquelle est la source ?
|
|||
|
* Comment fusionner les données ?
|
|||
|
|
|||
|
⇒ Conséquence : sur-représentation d'une information
|
|||
|
|
|||
|
---
|
|||
|
|
|||
|
## Étape 3 - Construction du Data Hub
|
|||
|
|
|||
|
### Risque : les données obsolètes
|
|||
|
|
|||
|
* ex: Une entreprise a fermé, a déménagé
|
|||
|
* ex: Un client s'est inscrit il y a 10 ans, mais n'a jamais utilisé le site depuis
|
|||
|
* ex: Mme X a remplacé Mr Y
|
|||
|
|
|||
|
⇒ Conséquence : la qualité et la pertinence de la base se détériore
|
|||
|
|
|||
|
---
|
|||
|
|
|||
|
## Étape 3 - Construction du Data Hub
|
|||
|
|
|||
|
### Outils
|
|||
|
|
|||
|
* Pandas (Python)
|
|||
|
* Dplyr/Data.table (R)
|
|||
|
* SQL
|
|||
|
|
|||
|
---
|
|||
|
|
|||
|
<!--
|
|||
|
_class: chapter
|
|||
|
-->
|
|||
|
|
|||
|
## Étape 4 - Modélisation et analyse des données
|
|||
|
|
|||
|
![bg right](images/bg_data_analysis.jpg)
|
|||
|
|
|||
|
---
|
|||
|
|
|||
|
## Étape 4 - Modélisation et analyse des données
|
|||
|
|
|||
|
### Formulation des hypothèses - Objectifs
|
|||
|
|
|||
|
* Établir des liens de corrélation entre les données
|
|||
|
* Croiser les différentes natures de données
|
|||
|
* Dégager des tendances
|
|||
|
|
|||
|
Exemple : estimation d’un prix de vente d’un bien immobilier
|
|||
|
|
|||
|
* jeu de données : localisation, superficie, rendement locatif, age et qualité de la construction, équipements
|
|||
|
* hypothèses: relation entre prix de vente (m$^2$) et localisation
|
|||
|
|
|||
|
---
|
|||
|
|
|||
|
## Étape 4 - Modélisation et analyse des données
|
|||
|
|
|||
|
### Formulation des hypothèses - Outils
|
|||
|
|
|||
|
* Graphiques
|
|||
|
* Diagrammes de dispersion
|
|||
|
* Courbes de distributions
|
|||
|
* Histogrammes
|
|||
|
* Power BI
|
|||
|
* Qlickview
|
|||
|
* Jupyter Notebooks
|
|||
|
|
|||
|
---
|
|||
|
|
|||
|
## Étape 4 - Modélisation et analyse des données
|
|||
|
|
|||
|
### Formulation des hypothèses - Contraintes
|
|||
|
|
|||
|
* Se fait en itérations avec l'étape de nettoyage
|
|||
|
* En fouillant les hypothèses on trouve des incohérences et vice versa
|
|||
|
|
|||
|
---
|
|||
|
|
|||
|
## Étape 4 - Modélisation et analyse des données
|
|||
|
|
|||
|
### Déterminations des variables synthétiques
|
|||
|
|
|||
|
* Sélection des variables pertinentes (Feature selection)
|
|||
|
* Sélectionner les variables qui expliquent/ impactent le problème à résoudre
|
|||
|
* Retirer du jeu de données les variables à faibles intérêts sont
|
|||
|
* Modèle simple
|
|||
|
* Intuitif et compréhensible
|
|||
|
* Réduction de la phase d’apprentissage des modèles
|
|||
|
* Réduction de la dimensionnalité
|
|||
|
* Modèle complexe
|
|||
|
* Analyse fine et précise de la problématique donnée
|
|||
|
|
|||
|
---
|
|||
|
|
|||
|
## Étape 4 - Modélisation et analyse des données
|
|||
|
|
|||
|
### Déterminations des variables synthétiques
|
|||
|
|
|||
|
* Transformation des variables (Feature construction)
|
|||
|
* créer de nouvelles variables à partir des variables brutes du jeu de données
|
|||
|
* Cette méthode s’applique très souvent aux variables continues (le nombre de possibilités est infini)
|
|||
|
* lorsque les experts métiers préconisent que le problème à prédire dépend d’une valeur seuil
|
|||
|
|
|||
|
Exemple : pour une variable "age"
|
|||
|
|
|||
|
* le data scientist pourrait fixer un seuil à 18 ans et ainsi créer deux nouvelles variables ("majeur" ou "mineur")
|
|||
|
|
|||
|
---
|
|||
|
|
|||
|
## Étape 4 - Modélisation et analyse des données
|
|||
|
|
|||
|
### Construction du modèle
|
|||
|
|
|||
|
* Cette étape correspond à la phase de _machine learning_ à proprement parler
|
|||
|
* Choisir les différents modèles de machine learning
|
|||
|
* Permettre de modéliser au mieux la variable cible à expliquer (problématique métier)
|
|||
|
|
|||
|
---
|
|||
|
|
|||
|
## Étape 4 - Modélisation et analyse des données
|
|||
|
|
|||
|
### Modèle GLM (linéaire généralisé)
|
|||
|
|
|||
|
* Logit en classification + régression linéaire
|
|||
|
* Simple
|
|||
|
* Interprétable
|
|||
|
* Souvent de bons proxys dans des cas simples
|
|||
|
|
|||
|
---
|
|||
|
|
|||
|
## Étape 4 - Modélisation et analyse des données
|
|||
|
|
|||
|
### Modèle Random Forest et Boosted Trees (xgboost, lightgbm)
|
|||
|
|
|||
|
* Non paramétriques
|
|||
|
* S’adaptent très bien aux données « spontanément »
|
|||
|
* Des performances nettement meilleures que les modèles GLM dans la grande majorité des cas
|
|||
|
* Plus difficiles à calibrer (tuning d’hyper paramètres)
|
|||
|
* Moins stables dans le temps et moins interprétables
|
|||
|
* Peut représenter un frein à leur mise en production
|
|||
|
|
|||
|
---
|
|||
|
|
|||
|
## Étape 4 - Modélisation et analyse des données
|
|||
|
|
|||
|
### Modèle _Deep Learning_
|
|||
|
|
|||
|
* Spécifiquement adaptés lorsque les données sont du texte ou des images
|
|||
|
* Performent bien mieux que les méthodes citées précédemment
|
|||
|
|
|||
|
---
|
|||
|
|
|||
|
## Étape 4 - Modélisation et analyse des données
|
|||
|
|
|||
|
### Autres modèles ?
|
|||
|
|
|||
|
* De nombreux autres modèles existent (SVM, Naïve Bayes)
|
|||
|
* Parfois plus performants dans des cas spécifiques
|
|||
|
* Assez peu utilisés
|
|||
|
|
|||
|
---
|
|||
|
|
|||
|
## Étape 4 - Modélisation et analyse des données
|
|||
|
|
|||
|
### Validation du modèle ?
|
|||
|
|
|||
|
* Diviser le jeu de données retraité en plusieurs parties
|
|||
|
* 70% pour la conception + 30% pour le test
|
|||
|
* 50% pour la conception + 30% pour le test + 20% pour la validation
|
|||
|
* La division se fait aléatoirement
|
|||
|
* Attention à ce que les différentes "classes" de données soient équitablement réparties
|
|||
|
|
|||
|
---
|
|||
|
|
|||
|
<!--
|
|||
|
* validation du modele
|
|||
|
* comment |
|
|||
|
Afin de sélectionner le « modèle le plus adéquat », il est d’usage de diviser
|
|||
|
le jeu de données retraité en deux parties. La première partie - 70% du jeux
|
|||
|
de données - participera à la conception du modèle et la seconde partie à le
|
|||
|
tester. Dans le cadre de modèles complexes qui nécessitent de tuner des
|
|||
|
paramètres afin de ne pas apprendre indirectement sur le jeu de test, les
|
|||
|
données peuvent être divisées en trois parties afin de concevoir, tester et
|
|||
|
valider le modèle.
|
|||
|
|
|||
|
En général, cette division en deux/ trois jeux de données se fait
|
|||
|
aléatoirement. Les différentes classes vont « naturellement » être bien
|
|||
|
réparties sauf dans le cas où l’une d’entre elles est très sous représentée,
|
|||
|
ce qui est un point d’attention général de la modélisation : il va falloir
|
|||
|
essayer de « forcer l’apprentissage » à identifier des phénomènes très rares
|
|||
|
et donc par nature difficiles à détecter. Par exemple, si le problème est un
|
|||
|
sujet de classification, il faut s’assurer que l’ensemble des classes à
|
|||
|
prédire est bien représenté dans les jeux de données.
|
|||
|
|
|||
|
Lors de la phase de « training », le premier jeu de données va permettre de
|
|||
|
concevoir/caliber le modèle c’est-à-dire d’estimer les paramètres du « modèle
|
|||
|
théorique ». Par exemple si le data scientist suggère que la variable cible Y
|
|||
|
repose sur un modèle théorique établi comme suit :
|
|||
|
|
|||
|
Y= m * X + b
|
|||
|
|
|||
|
Avec :
|
|||
|
|
|||
|
Y : Variable à expliquer (problématique métier)
|
|||
|
|
|||
|
X : variable explicative
|
|||
|
|
|||
|
m et b : les paramètres
|
|||
|
|
|||
|
La phase de training va permettre à l'algorithme de machine learning de
|
|||
|
déterminer mécaniquement et par itération les paramètres « m » et « b » de la
|
|||
|
manière la plus précise possible en fonction du jeu de données (les couples
|
|||
|
(Xi Yi) du jeu de données N°1).
|
|||
|
|
|||
|
Le second jeu de données va permettre d’évaluer le modèle c’est-à-dire de
|
|||
|
faire tourner le modèle établi en phase de training sur les données X non
|
|||
|
encore utilisées. Le modèle va générer des données Yi et il suffira de
|
|||
|
s’assurer que les outputs ne dévient pas de manière significative avec les
|
|||
|
données cibles réelles Yi du jeu de donné N°2). Le niveau de performance des
|
|||
|
modèles se matérialise par la fonction d’erreur.
|
|||
|
|
|||
|
De ces deux phases dépendront la sélection du modèle prédictif retenu et le
|
|||
|
déploiement de ce dernier.
|
|||
|
-->
|
|||
|
|
|||
|
## Étape 4 - Modélisation et analyse des données
|
|||
|
|
|||
|
### Présentation & communication
|
|||
|
|
|||
|
* Restituer ses travaux de manière claire, pédagogue et dynamique
|
|||
|
* Tirer rapidement des informations
|
|||
|
* Représentations graphiques pertinentes et dynamiques (vs des données statistiques chiffrées)
|
|||
|
|
|||
|
<!--
|
|||
|
* outils
|
|||
|
* directement sous Python (Jupyter)
|
|||
|
* des outils de BI plus souples tels que Power BI
|
|||
|
* Qlickview
|
|||
|
-->
|
|||
|
|
|||
|
---
|
|||
|
|
|||
|
<!--
|
|||
|
_class: chapter
|
|||
|
-->
|
|||
|
|
|||
|
## 5. Évaluation
|
|||
|
|
|||
|
![bg right](images/bg_data_evaluation.jpg)
|
|||
|
|
|||
|
---
|
|||
|
|
|||
|
## 5. Évaluation
|
|||
|
|
|||
|
### Enjeux
|
|||
|
|
|||
|
* Vérifier que l'analyse répond bien aux questions posées
|
|||
|
* Robustesse ?
|
|||
|
* Précision
|
|||
|
* Évaluer le retour sur investissement de la démarche data
|
|||
|
* Décide du déploiement du modèle ou de son amélioration
|
|||
|
|
|||
|
---
|
|||
|
|
|||
|
<!--
|
|||
|
_class: chapter
|
|||
|
-->
|
|||
|
|
|||
|
## Étape 6 -<br/> Déploiement et industrialisation
|
|||
|
|
|||
|
![bg right](images/bg_production_1.jpg)
|
|||
|
|
|||
|
---
|
|||
|
|
|||
|
## Étape 6 - Déploiement et industrialisation
|
|||
|
|
|||
|
### Objectifs
|
|||
|
|
|||
|
* Mise en production
|
|||
|
* Génération d'un rapport
|
|||
|
* Mise en place d'une application
|
|||
|
* L'intégrer au processus de décision
|
|||
|
|
|||
|
---
|
|||
|
|
|||
|
## Étape 6 - Déploiement et industrialisation
|
|||
|
|
|||
|
### De nouvelles questions
|
|||
|
|
|||
|
* Comment mettre à jour un modèle apprenant ?
|
|||
|
* Comment vérifier son bon fonctionnement ?
|
|||
|
|
|||
|
---
|
|||
|
|
|||
|
<!--
|
|||
|
_class: chapter
|
|||
|
-->
|
|||
|
|
|||
|
|
|||
|
## Merci pour votre attention !
|
|||
|
|
|||
|
<!--
|
|||
|
|
|||
|
## Références
|
|||
|
|
|||
|
* [Méthode CRISP : la clé de la réussite en Data Science![Flag: url](flags/flag-url.png)](https://fr.blog.businessdecision.com/methode-crisp-la-cle-de-la-reussite-en-data-science/)
|
|||
|
* <http://www.mc2i.fr/La-methode-CRISP-pour-les-projets-Big-Data>[![Flag: url](flags/flag-url.png)](http://www.mc2i.fr/La-methode-CRISP-pour-les-projets-Big-Data)
|
|||
|
* [READ. Les 7 étapes d'un projet data science![Flag: url](flags/flag-url.png)](https://www.linkedin.com/pulse/les-7-%C3%A9tapes-dun-projet-data-science-j%C3%A9r%C3%A9my-bouzidi/)
|
|||
|
|
|||
|
-->
|