<!--
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

&nbsp;<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

&rArr; 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 ?

&rArr; 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

&rArr; 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/)

-->