Aller au contenu

Partie 1 – Introduction au Machine Learning et exploration des données

  • 9h20 – 10h30
  • Théorie 35 min · TP 5 35 min
  • Slides 6 à 13

Et si on pouvait annoncer le prix d'une course avant même de monter dans le taxi ? Comment Uber fait-il ?

Programmation classique Machine Learning
Règles ──┐ Données ──┐
├──► Programme ──► Réponses ├──► Apprentissage ──► Modèle (= les règles)
Données ──┘ Réponses ──┘

Essayez d’écrire à la main la règle du tarif d’un taxi new-yorkais : 3 $ de prise en charge, 3,50 $ par mile… sauf JFK (forfait 70 $), sauf la nuit, sauf les péages, sauf les embouteillages, sauf… La règle explose. Avec le ML, on montre 120 000 courses avec leur prix et l’algorithme trouve les règles tout seul, exceptions comprises.

Trois idées à garder :

  • Un modèle est une fonction apprise à partir d’exemples.
  • Il ne « comprend » pas : il repère des régularités statistiques.
  • Il n’est jamais meilleur que ses données (garbage in, garbage out).
🔍 Vulgarisation : Comment l'algorithme « devine » la formule du prix sans qu'on la lui programme ?

Prenons 3 courses toutes simples dont on connaît la distance ($x$) et le prix ($y$) :

  • Course 1 : 2 miles ➔ 10 $
  • Course 2 : 4 miles ➔ 17 $
  • Course 3 : 6 miles ➔ 24 $

En programmation classique, un expert doit vous donner la formule : $\text{Prix} = 3 + 3,5 \times \text{distance}$.

En Machine Learning (régression linéaire), l’algorithme part d’une formule au hasard $\text{Prix} = a + b \times \text{distance}$ (par exemple $a=0, b=1$) :

  1. Itération 1 : il prédit $2$, 4$, 6$$ au lieu de $10$, 17$, 24$$. L’erreur moyenne est énorme ! Il ajuste $a$ et $b$ vers le haut (en lisant les données en RAM).
  2. Itération 2, 3… 20 : à chaque tour sur les données en mémoire, il réduit l’écart entre sa prédiction et le vrai tarif (descente de gradient).
  3. Résultat final : il converge tout seul vers $a = 3,0$$ (prise en charge) et $b = 3,50$$/mile ! Et c’est exactement parce que cet entraînement nécessite 10 à 50 passes successives sur les mêmes lignes que Spark en RAM est jusqu’à 100× plus rapide que MapReduce sur disque.
Supervisé : on connaît la réponseNon supervisé : on cherche une structure
DonnéesDes exemples avec une étiquette (le label)Des données sans étiquette
QuestionsRégression : prédire un nombre (le montant d’une course). Classification : prédire une catégorie (pourboire oui / non)Clustering : regrouper ce qui se ressemble (des familles de courses)
AlgorithmesRégression linéaire, arbres, Random Forest, SVMK-means
UsagesPrix, risque, churn, diagnosticSegmentation de clients, détection d’anomalies
AnalogieApprendre avec un professeur qui corrigeTrier une boîte de photos sans légende

Sur le fil rouge : régression au TP 6, classification au TP 7, clustering au TP 8.

1. Question métier → 2. Explorer → 3. Préparer les features → 4. Entraîner → 5. Évaluer → 6. Déployer
▲ │
└───────────────────── on itère ────────────────────────┘

Un data scientist passe l’essentiel de son temps sur les étapes 2 et 3, souvent 80 %, pas à entraîner.

MotDéfinitionSur le fil rouge
FeaturesLes variables d’entrée, connues au moment de prédiredistance, heure, zone, passagers
LabelCe que l’on veut prédirefare_amount, pourboire oui / non
Train / test80 % pour apprendre, 20 % pour juger. Jamais mélangésrandomSplit([0.8, 0.2], seed=42)
Sur-apprentissageLe modèle apprend par cœur : excellent en train, mauvais en testL’élève qui apprend les corrigés par cœur et échoue dès que l’énoncé change
🔍 Vulgarisation : Le sur-apprentissage (Overfitting), ou l'étudiant qui apprend les corrigés par cœur

Imaginez deux étudiants qui préparent un examen de mathématiques :

  • L’étudiant A (bon modèle qui généralise) fait les 80 exercices d’entraînement (train) en comprenant la méthode. Le jour de l’examen, sur 20 exercices nouveaux (test), il obtient 17/20.
  • L’étudiant B (modèle en sur-apprentissage / Overfitting, ex. arbre avec maxDepth=30) a une mémoire photographique : il apprend par cœur « Exercice page 12, si le taxi part à 8h14 avec 2 passagers sous la pluie = 23,40 $ ».
    • Sur les 80 exercices d’entraînement (train), il a 20/20 (99 % de réussite) !
    • Mais le jour de l’examen (test), l’heure est 8h15 au lieu de 8h14 : il est perdu et obtient 11/20 (60 %).

Règle d’or : un score de 99 % sur le jeu d’entraînement (train) ne prouve rien. Seul le score sur les 20 % de test (jamais vus pendant le .fit()) mesure la vraie valeur de votre modèle.

En binômes, puis vote à main levée : R = régression, C = classification, G = groupement (clustering).

1. Estimer la durée d'une course Régression : un nombre de minutes.
2. Repérer les courses au montant anormal Ça dépend. Avec des exemples de fraudes étiquetées : classification. Sans : non supervisé (détection d'anomalies, clustering). La nature des données décide, pas la question.
3. Prédire si un client paiera par carte Classification : carte ou espèces.
4. Regrouper les zones selon leur activité horaire Clustering : pas d'étiquette, on cherche des groupes.
5. Prévoir le nombre de courses demain à 18h Régression : une série temporelle, que l'on retrouvera demain avec le streaming.
6. Dire à un chauffeur où attendre ses clients Pas un seul modèle : une régression de la demande par zone et par heure, puis une règle métier. La réalité combine souvent plusieurs briques.

Deux graphiques réels du fil rouge guident toute la journée :

  • Le nuage tarif selon la distance montre une ligne horizontale à 70 $ : le forfait JFK. Une droite ne le verra pas ; un arbre, si.
  • La heatmap courses par jour et par heure montre deux pics, 8h et 18h : l’heure sera une bonne feature.
Spark agrège ou échantillonne toPandas() Bibliothèque Python
groupBy, sample ──► quelques milliers ──► le graphique
des millions de lignes de lignes
🧮 Calcul de mémoire : Pourquoi df.toPandas() fait planter le Driver en 3 secondes sur un gros volume ?

Sur un cluster de 10 machines Workers (ayant chacune 32 Go de RAM, soit 320 Go au total), vous manipulez une table de 50 Go sans difficulté car chaque machine n’en porte que 5 Go.

Mais votre Driver (le processus qui exécute votre notebook Jupyter) tourne sur une seule machine avec souvent 4 à 8 Go de RAM :

  • Si vous écrivez df.toPandas() directement sur les 50 Go : vous ordonnez aux 10 Workers d’envoyer leurs 50 Go à travers le réseau dans la mémoire de l’unique Driver → java.lang.OutOfMemoryError: Java heap space immédiat !
  • Si vous écrivez d’abord df.groupBy("heure").count().toPandas() : les 10 Workers calculent les totaux sur les 50 Go en parallèle et n’envoient au Driver qu’un tableau de 24 lignes (une par heure, moins de 2 Ko) ! Matplotlib l’affiche en 10 millisecondes.
BibliothèqueUsage
MatplotlibLa base, statique
SeabornStatistique, beau par défaut
PlotlyInteractif, web
BokehInteractif, tableaux de bord

Matplotlib et Seaborn pour l’analyse ; Plotly et Bokeh quand on veut zoomer, survoler ou publier un tableau de bord.

TP 5 – Explorer avant de prédire (35 min) : quatre graphiques, trois observations qui guideront nos modèles.

Ensuite, pause de 15 minutes, puis la partie 2 : notre premier modèle.

Dépôt des participants : formations2026/formation-spark-ml (branche participants)

Contenu pédagogique © Ambient IT · 140 Avenue Jean Lolive, 93500 Pantin · formation@ambient-it.net · +33 (0)1 48 10 09 46

Organisme de formation enregistré sous le numéro 11 75 54743 75. Cet enregistrement ne vaut pas agrément de l'État.

v 6264cf4