563 lines
No EOL
15 KiB
Markdown
563 lines
No EOL
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/)
|
||
|
||
--> |