Chaque matin au marché de Dantokpa à Cotonou, Mama Adjoavi regarde ses stocks de tomates, observe les prix des jours précédents, et décide combien vendre aujourd’hui pour maximiser ses bénéfices. Elle ne le sait pas, mais elle fait de la régression linéaire — instinctivement, dans sa tête.

La régression linéaire, c’est l’art de trouver la droite qui passe au plus près d’un nuage de points. C’est simple à comprendre, puissant à utiliser, et c’est la porte d’entrée de toute la data science moderne.

L’histoire : Galton et les fils qui ressemblent à leurs pères

📜 Naissance d’une idée

En 1886, le statisticien britannique Francis Galton étudie un phénomène curieux : les fils de pères très grands sont souvent grands, mais rarement aussi grands que leurs pères. Et les fils de pères très petits sont souvent petits, mais rarement aussi petits.

Il appelle ce phénomène la « régression vers la moyenne » — les valeurs extrêmes tendent à revenir vers la moyenne de la population. Pour modéliser cette relation entre la taille du père et celle du fils, il invente une méthode graphique : tracer la droite qui résume le mieux la relation entre deux variables.

Né d’une observation biologique sur des familles anglaises du XIXe siècle, cet outil voyage aujourd’hui dans les algorithmes de Netflix, les modèles météo de l’ASECNA, et les prédictions de récolte des agriculteurs béninois.

L’intuition : une droite dans un nuage

Imagine que tu collectes des données dans un village agricole du Borgou : la quantité de pluie (en mm) et la production de maïs (en kg) pour 6 saisons consécutives.

Saison Pluie (mm) — x Maïs (kg) — y
1100200
2150280
3200350
4120230
5180320
6250420

Si tu traces ces points sur un graphe, tu verras qu’ils forment un nuage avec une tendance claire : plus il pleut, plus la production est élevée. La régression linéaire consiste à trouver la droite qui résume le mieux cette tendance.

📈 Nuage de points et droite de régression
x y Pluie (mm) Maïs (kg) 100 150 200 250 200 280 350 420 Données réelles Droite de régression ŷ = ax + b

La formule : d’où vient cette droite ?

La droite de régression s’écrit :

ŷ = ax + b

Où :

📌 Signification des paramètres

ŷ (y chapeau) = la valeur prédite par le modèle

x = la variable d’entrée (ici, la quantité de pluie)

a = la pente de la droite (combien y augmente quand x augmente de 1)

b = l’ordonnée à l’origine (valeur de y quand x = 0)

Pour trouver les valeurs de a et b qui donnent la meilleure droite possible, on utilise la méthode des moindres carrés : on minimise la somme des carrés des écarts entre les valeurs réelles et les valeurs prédites.

Méthode des moindres carrés : Trouver a et b tels que la somme ∑(yᵢ – ŷᵢ)² soit minimale. Autrement dit, la droite doit être aussi proche que possible de tous les points à la fois.

Les formules mathématiques pour calculer a et b sont :

a = ∑(xᵢ – x̄)(yᵢ – ȳ) / ∑(xᵢ – x̄)²
b = ȳ – a × x̄
où x̄ = moyenne de x et ȳ = moyenne de y

Application : les données du Borgou

Reprenons nos données agricoles et calculons a et b :

xyx – x̄y – ȳ(x-x̄)(y-ȳ)(x-x̄)²
100200-66,7-10066704448,9
150280-16,7-20334278,9
20035033,35016651108,9
120230-46,7-7032692180,9
18032013,320266176,9
25042083,312099966938,9
x̄=166,7ȳ=300∑=22200∑=15133
a = 22200 / 15133 ≈ 1,47
b = 300 – 1,47 × 166,7 ≈ 54,9
ŷ = 1,47x + 54,9

Interprétation concrète : chaque millimètre de pluie supplémentaire apporte environ 1,47 kg de maïs en plus. Si la météo annonce 220 mm de pluie pour la prochaine saison, on prédit : ŷ = 1,47 × 220 + 54,9 ≈ 378 kg de maïs.

Et maintenant, avec Python

Faire ces calculs à la main, c’est bien pour comprendre. Mais en pratique, on utilise Python. Voici comment faire la même chose en quelques lignes :

Python # Régression linéaire – Production de maïs au Borgou import numpy as np from sklearn.linear_model import LinearRegression import matplotlib.pyplot as plt # Données : pluie (mm) et production maïs (kg) x = np.array([100, 150, 200, 120, 180, 250]).reshape(-1, 1) y = np.array([200, 280, 350, 230, 320, 420]) # Créer et entraîner le modèle modele = LinearRegression() modele.fit(x, y) # Afficher les paramètres print(f »Pente a = {modele.coef_[0]:.2f} ») print(f »Ordonnée b = {modele.intercept_:.2f} ») # Prédire pour 220 mm de pluie prediction = modele.predict([[220]]) print(f »Prédiction pour 220mm : {prediction[0]:.0f} kg ») # Tracer le graphique plt.scatter(x, y, color=‘#1a3a5c’, label=‘Données réelles’) plt.plot(x, modele.predict(x), color=‘#4a90d9’, label=‘Droite de régression’) plt.xlabel(‘Pluie (mm)’) plt.ylabel(‘Production maïs (kg)’) plt.title(‘Régression linéaire – Borgou, Bénin’) plt.legend() plt.show()
💻 Résultat attendu

Pente a = 1.47 → identique à notre calcul manuel ✅

Ordonnée b = 54.90 → identique aussi ✅

Prédiction pour 220mm : 378 kg

Les limites à connaître

La régression linéaire est puissante, mais elle n’est pas magique. Voici ce qu’il faut garder en tête :

⚠️ Attention !

1. Elle suppose une relation linéaire. Si la vraie relation est courbe, la droite sera une mauvaise approximation.

2. Elle est sensible aux valeurs aberrantes. Un point très éloigné des autres peut tirer la droite vers lui.

3. Corrélation ≠ causalité. Ce que la pluie et le maïs ont en commun ne prouve pas que l’un cause l’autre — même si ici c’est logique !

4. Ne pas extrapoler trop loin. Prédire pour 2000 mm de pluie avec un modèle calibré entre 100 et 250 mm serait hasardeux.

Tous les modèles sont faux, mais certains sont utiles. — George Box, statisticien britannique

✏️ Exercice corrigé

Un vendeur de sachets d’eau à Cotonou note ses ventes sur 5 jours de forte chaleur :

Température (°C) : 32, 34, 36, 35, 38
Sachets vendus : 120, 145, 170, 158, 200

a) Calcule la moyenne de x (température) et de y (sachets).

b) Calcule la pente a de la droite de régression.

c) Si demain la température atteint 40°C, combien de sachets faut-il prévoir ?

▸ Correction

a) x̄ = (32+34+36+35+38)/5 = 175/5 = 35°C

ȳ = (120+145+170+158+200)/5 = 793/5 = 158,6 sachets

b) Calcul de a :

∑(xᵢ-x̄)(yᵢ-ȳ) = (-3)(-38,6)+(-1)(-13,6)+(1)(11,4)+(0)(-0,6)+(3)(41,4)

= 115,8 + 13,6 + 11,4 + 0 + 124,2 = 265

∑(xᵢ-x̄)² = 9+1+1+0+9 = 20

a = 265/20 = 13,25

b = 158,6 – 13,25 × 35 = 158,6 – 463,75 = -305,15

c) ŷ = 13,25 × 40 – 305,15 = 530 – 305,15 ≈ 225 sachets à prévoir ✅

Ce qu’on retient

La régression linéaire, c’est le pont entre les mathématiques pures et la data science. Elle transforme un nuage de points chaotique en une droite qui prédit, qui explique, qui décide. De Galton aux marchés de Cotonou, en passant par les champs du Borgou, c’est le même outil — élégant, simple, universel.

Et le plus beau ? Tu viens de comprendre le fondement mathématique d’algorithmes qui font tourner des entreprises valant des milliards. Pas mal pour une droite.

Dans le prochain article, nous découvrirons pourquoi les abeilles construisent des hexagones — et ce que ça nous apprend sur l’optimisation mathématique. Un problème que les abeilles ont résolu bien avant les ingénieurs.