Aller au contenu principal
iaPrédire un nombre

Prédire un nombre

Ce que ce chapitre apporte

  • Écrire un problème de prédiction numérique et dire ce que le modèle minimise.
  • Trouver la droite des moindres carrés, et comprendre pourquoi c'est elle.
  • Interpréter une pente, et savoir ce qu'elle ne dit pas.
  • Distinguer RMSE, MAE et coefficient de détermination.
  • Lire un graphe des résidus et y reconnaître un modèle mal spécifié.
  • Reconnaître l'effet de levier d'un relevé aberrant.
  • Étendre la méthode à plusieurs attributs et lire l'incertitude des coefficients.
  • Dire pourquoi une prévision hors du domaine observé n'engage à rien.
Le chapitre précédent cherchait des groupes sans savoir lesquels. Celui-ci pose une question plus étroite et plus exigeante : à partir de quelques attributs, produire une valeur numérique, et savoir de combien on se trompe. C'est le premier modèle de ce module, le plus simple qui existe, et il contient déjà presque tout ce qui compte : une quantité à minimiser, des coefficients qui s'interprètent, des mesures d'erreur qui ne disent pas la même chose, et une figure de diagnostic que presque personne ne regarde.

La question

Régression

Une régression cherche une fonction qui, à partir d'attributs xx, produit une valeur numérique y^\hat{y} aussi proche que possible de la valeur réelle yy.

Contrairement au partitionnement, la bonne réponse est connue sur les exemples d'apprentissage : on peut donc mesurer l'erreur.

Prédire un nombre, ce n'est pas prédire une catégorie
La différence n'est pas de degré, elle est de nature.
Pour une catégorie, une réponse est juste ou fausse, et l'on compte les erreurs. Se tromper de peu n'existe pas.
Pour un nombre, aucune prévision n'est exacte, et ce qui compte est l'ampleur de l'écart. Prévoir 27,4 degrés au lieu de 27,5 est un excellent résultat ; prévoir 41 est une faute. La même prévision n'est ni juste ni fausse : elle est plus ou moins loin.
Toute la suite découle de là. Il faut choisir comment résumer une collection d'écarts en un seul nombre, et ce choix n'est pas neutre.

Une droite, et ce qu'on lui demande

Le modèle le plus simple suppose que yy dépend de xx de façon affine :

y^=ax+b\hat{y} = a x + b

Reste à choisir aa et bb. La figure ci-dessous laisse le faire à la main. Chaque trait vertical est l'écart entre un relevé et la droite, et chaque carré est construit sur ce trait : son aire est le carré de l'écart.

2426283020406080charge du processeur (%)température (°C)
somme des carrés 40,82

Le minimum vaut 0,28, soit 40,55 de moins qu'ici.

Sept relevés, et une droite à régler. L'aire totale des carrés est ce que la méthode minimise : elle part de 40,8 et descend jusqu'à 0,28 pour la meilleure droite. Chercher ce minimum à la main est le plus court chemin pour comprendre d'où vient la formule. Droite optimale : y = 0,099 x + 22,136, somme 0,28.
Pourquoi des carrés, et pas des valeurs absolues
Il faut résumer sept écarts en un seul nombre, et les additionner tels quels ne marcherait pas : un écart de +3+3 et un écart de 3-3 s'annuleraient, et une droite absurde obtiendrait un score parfait.
Il faut donc rendre les écarts positifs, et deux façons se présentent : la valeur absolue ou le carré.
Le carré l'emporte pour deux raisons. La première est mathématique : la somme des carrés est dérivable partout, ce qui donne une solution en formule fermée, alors que la valeur absolue impose une recherche numérique. La seconde est un choix assumé : le carré pénalise davantage les grands écarts. Une erreur de 10 compte cent fois une erreur de 1, et non dix fois. Le modèle préfère donc dix erreurs moyennes à une seule énorme.
Ce choix se retourne contre soi dès qu'un relevé est faux, et la section sur le levier en montre le prix.
La solution, en formules

La droite qui minimise i(yiaxib)2\sum_i (y_i - a x_i - b)^2 est donnée par

a=xyxˉyˉx2xˉ2b=yˉaxˉa = \frac{\overline{xy} - \bar{x}\,\bar{y}}{\overline{x^2} - \bar{x}^2} \qquad b = \bar{y} - a\,\bar{x}

La seconde égalité dit que la droite passe par le point moyen (xˉ,yˉ)(\bar{x}, \bar{y}), quelle que soit la pente.

D'où viennent ces formules
La somme des carrés est une fonction de deux variables, aa et bb. Au minimum, ses deux dérivées partielles s'annulent, ce qui donne deux équations linéaires en aa et bb. Les résoudre donne exactement les deux expressions ci-dessus.
Cela mérite d'être souligné : ce minimum est trouvé d'un coup, sans itération et sans départ à choisir, ce qui est un luxe. Aucun autre modèle de ce module n'aura cette chance, et c'est précisément le sujet du chapitre suivant.
Que la droite passe par le point moyen n'est pas un détail non plus. C'est ce qui explique la figure du levier plus bas : deux droites ajustées sur des données presque identiques se croisent au voisinage du centre du nuage, et divergent aux extrémités.

Ce que la pente veut dire

Une pente est une association, pas un mécanisme
Une pente de 0,0990{,}099 degré par point de charge se lit ainsi : parmi les relevés observés, ceux dont la charge est supérieure d'un point ont en moyenne une température supérieure de 0,099 degré.
Elle ne dit pas qu'augmenter la charge d'un point ferait monter la température de 0,099 degré. Cette seconde affirmation porte sur une intervention, et rien dans des données observées ne la justifie.
La différence n'est pas une subtilité de langage : c'est elle qui sépare une description d'une décision. Le chapitre 1 l'a déjà montré avec un renversement complet du sens d'une comparaison selon qu'on agrège ou non.

Mesurer l'erreur

Trois mesures, trois questions

RMSE, l'écart quadratique moyen : 1ni(yiy^i)2\sqrt{\frac{1}{n}\sum_i (y_i - \hat{y}_i)^2}. Dans l'unité de yy, et sensible aux grands écarts.

MAE, l'écart absolu moyen : 1niyiy^i\frac{1}{n}\sum_i |y_i - \hat{y}_i|. Dans l'unité de yy aussi, et beaucoup plus stable.

Coefficient de détermination : R2=1i(yiy^i)2i(yiyˉ)2R^2 = 1 - \dfrac{\sum_i (y_i - \hat{y}_i)^2}{\sum_i (y_i - \bar{y})^2}. Sans unité. Il compare le modèle à la prévision la plus bête possible, qui consiste à toujours répondre la moyenne.

Laquelle regarder, et dans quel ordre
Le RMSE d'abord, parce qu'il est dans l'unité du problème. Dire « on se trompe de 2,6 degrés en moyenne » se comprend sans explication, alors qu'un R2R^2 de 0,62 ne se comprend qu'en connaissant la variance des données.
Le MAE ensuite, et surtout l'écart entre les deux. Le RMSE est toujours supérieur ou égal au MAE, et le rapport entre eux mesure l'irrégularité des erreurs. RMSE 2,6 pour un MAE 2,1 signale des erreurs de tailles comparables ; RMSE 12 pour un MAE 2 signale une poignée de catastrophes noyées dans de bonnes prévisions.
Le R2R^2 en dernier, comme point de comparaison. Un R2R^2 de 0 signifie que le modèle ne fait pas mieux que répondre toujours la moyenne. Un R2R^2 négatif, ce qui arrive sur des données nouvelles, signifie qu'il fait pire.
Un R² élevé ne veut pas dire un bon modèle
Il monte mécaniquement quand la variable expliquée est très étalée, et il monte toujours quand on ajoute une colonne, même une colonne de bruit pur.
Il ne dit rien sur la forme de l'erreur, rien sur les données que le modèle n'a pas vues, et rien sur le fait que le modèle serait valable si on agissait sur les variables.
Les deux sections suivantes montrent deux jeux de données où le R2R^2 est identique et où les situations n'ont rien à voir.

Quatre jeux, les mêmes chiffres

main.py
Sortie
>_ Prêt à exécuter…
Ce que ces quatre jeux démontrent
Ils ont la même moyenne en xx (9,00), la même moyenne en yy (7,50), le même écart-type (2,03), la même droite (y=0,50x+3,00y = 0{,}50x + 3{,}00) et le même R2R^2 (0,67). Un tableau de résultats les déclarerait identiques.
Le premier est le seul où une droite est le bon modèle.
Le deuxième est une parabole nette : la relation existe, elle est parfaitement déterministe, et elle n'est pas affine. Y répondre par une droite est une erreur de modèle, pas une erreur de mesure.
Le troisième est une droite parfaite gâchée par un seul relevé faux.
Le quatrième n'a qu'une seule valeur de xx, sauf pour un point isolé qui détermine à lui seul toute la pente. Retirer ce point rend le calcul impossible.
Aucun résumé numérique ne les distingue. La figure les distingue en une seconde. C'est la démonstration la plus économique qui existe de la règle : regarder avant de calculer.

Un seul relevé faux

2426283020406080charge du processeur (%)température (°C)
somme des carrés 43,48

Le minimum vaut 25,47, soit 18,01 de moins qu'ici.

Les sept relevés précédents, plus un huitième à 90 % où le capteur est tombé en panne. La droite affichée au départ est celle qui était juste avant. Poser la meilleure droite montre où les moindres carrés vont la chercher : elle quitte le nuage pour aller au-devant du point aberrant, parce que son carré à lui pèse plus que tous les autres réunis. Droite optimale : y = 0,045 x + 24,326, somme 25,47.
main.py
Sortie
>_ Prêt à exécuter…
L'effet de levier, et pourquoi la position compte
Un relevé faux au bord du domaine change la pente de 55 %. Le même écart au centre ne la change pas du tout : il ne déplace que le niveau.
La raison est dans la formule. La droite passe toujours par le centre de gravité du nuage, donc un point situé près de ce centre ne peut que pousser la droite vers le haut ou vers le bas. Un point situé loin agit comme un bras de levier : plus il est éloigné en xx, plus il fait pivoter la droite.
La conséquence pratique est nette : les relevés à vérifier en priorité ne sont pas les plus surprenants en yy, ce sont ceux qui sont extrêmes en xx. Ce sont eux qui décident de la pente, et donc de toutes les prévisions.

Plusieurs attributs

Régression multiple

Avec pp attributs, le modèle s'écrit y^=b0+b1x1++bpxp\hat{y} = b_0 + b_1 x_1 + \dots + b_p x_p.

En rangeant les attributs dans une matrice XX dont la première colonne ne contient que des 1, les coefficients qui minimisent la somme des carrés sont la solution de l'équation normale

(XX)β=Xy(X^{\top} X)\, \beta = X^{\top} y

Une variable qualitative entre par des colonnes indicatrices : une modalité sert de référence, et les autres reçoivent chacune une colonne valant 1 ou 0.

main.py
Sortie
>_ Prêt à exécuter…
Ce que ce tableau démontre, ligne par ligne

Les données ont été fabriquées par une recette connue : 22+822 + 8 si salle C + 0,02×+\ 0{,}02 \times âge, plus un bruit d'écart-type 2,5. Le modèle ne la connaît pas et doit la retrouver.

Chaque valeur réelle tombe dans la marge estimée. La constante 22 est dans 21,77±0,5421{,}77 \pm 0{,}54, le coefficient d'âge 0,02 dans 0,023±0,0060{,}023 \pm 0{,}006, le coefficient de salle C 8 dans 8,50±0,618{,}50 \pm 0{,}61.

La salle B ressort à 0,24±0,490{,}24 \pm 0{,}49, une marge qui contient zéro. C'est exactement ce que dit la recette : la salle B ne diffère pas de la salle A. Le modèle a su le dire.

L'âge seul donne un R2R^2 de 0,040. Le même âge, accompagné de la salle, participe à un R2R^2 de 0,622. Une variable n'est pas informative en soi : elle l'est en présence des autres.

Ajouter la charge processeur fait passer le R2R^2 de 0,622 à 0,623. Elle n'entre pas dans la recette, et le modèle le montre en ne lui accordant rien. Noter que le R2R^2 a tout de même augmenté : il augmente toujours.

Le RMSE vaut 2,62 pour un bruit de 2,50. Il n'existe aucun modèle capable de descendre au-dessous de 2,50 sur ces données, quelle que soit sa sophistication. Le modèle affine a atteint la limite du problème, et tout effort supplémentaire serait dépensé à apprendre du bruit.

L'incertitude est le chiffre qu'on oublie de lire
Un coefficient sans sa marge n'est pas un résultat, c'est une décimale.
Le calcul tient en trois lignes : l'écart-type des résidus donne la variance résiduelle, et la diagonale de σ2(XX)1\sigma^2 (X^{\top}X)^{-1} donne la variance de chaque coefficient. Deux écarts-types de part et d'autre délimitent l'intervalle usuel.
Sa lecture est immédiate. Un intervalle qui contient zéro signifie que les données ne permettent pas d'affirmer que la variable joue un rôle, ce qui est très différent d'affirmer qu'elle n'en joue aucun. Un intervalle large signifie qu'il faudrait plus de relevés avant de conclure quoi que ce soit.

Quand ce n'est pas une droite

main.py
Sortie
>_ Prêt à exécuter…
Le graphe des résidus est la figure de diagnostic
On y porte l'erreur en fonction de la valeur prédite. Ce n'est pas une figure décorative : c'est celle qui dit si le modèle est bien spécifié.
Un nuage sans forme autour de zéro : le modèle a capté ce qu'il y avait à capter, il ne reste que du bruit.
Une courbe : il manque un terme. Le modèle se trompe de façon systématique et prévisible, ce qui veut dire qu'on pourrait faire mieux sans nouvelle donnée.
Un entonnoir, l'erreur qui grandit avec la prévision : l'ampleur de l'erreur dépend du niveau. Un passage au logarithme règle souvent le problème.
Des points très isolés : des relevés à aller vérifier un par un.
Ici les deux R2R^2 valent 0,69 et 0,87, ce qui est une différence, mais les deux graphes de résidus disent bien davantage : à gauche, une courbe franche ; à droite, un nuage presque plat.
Prévoir hors du domaine observé n'engage à rien
Le modèle n'a vu que des charges comprises entre 10 et 88 %. À 95 %, la latence réelle vaut 220 ms ; la droite en annonce 89 et le modèle avec un carré 112.
Les deux se trompent d'un facteur deux, et le second n'est pas plus honnête que le premier : il est simplement faux différemment. Aucune sophistication du modèle ne remplace une observation.
La règle est simple à énoncer et constamment violée : un modèle ajusté sur un domaine ne dit rien de ce qui se passe en dehors. C'est précisément dans ces régions extrêmes qu'on aimerait pouvoir prévoir, et précisément là qu'on ne peut pas.
Ce que ferait scikit-learn
from sklearn.linear_model import LinearRegression
from sklearn.preprocessing import PolynomialFeatures
from sklearn.metrics import mean_squared_error, mean_absolute_error, r2_score

m = LinearRegression().fit(X, y)
print(m.coef_, m.intercept_, r2_score(y, m.predict(X)))
Xc = PolynomialFeatures(degree=2, include_bias=False).fit_transform(X)

LinearRegression résout la même équation normale, en passant par une décomposition plus stable numériquement que l'inversion directe. Elle ne fournit pas l'incertitude des coefficients : pour cela, il faut statsmodels, dont le tableau de sortie donne aussi les intervalles.

Exercices type

Pourquoi minimiser la somme des carrés plutôt que la somme des écarts ?

Parce que la somme des écarts s'annule pour une infinité de droites : un écart de +3+3 compense un écart de 3-3, et une droite absurde obtiendrait un score parfait.

Il faut donc une quantité toujours positive, et il y a deux candidates : la valeur absolue et le carré.

Le carré est retenu pour deux raisons. Il est dérivable partout, ce qui donne une solution en formule fermée au lieu d'une recherche numérique. Et il pénalise davantage les grands écarts, ce qui est un choix assumé, pas une nécessité.

Minimiser la somme des valeurs absolues est parfaitement légitime, s'appelle la régression médiane, et résiste beaucoup mieux aux relevés aberrants. Elle demande simplement plus de calcul.

Le R² d'un modèle passe de 0,62 à 0,63 quand on ajoute une variable. Faut-il la garder ?

Non, et le raisonnement compte plus que la réponse.

Le R2R^2 augmente toujours quand on ajoute une colonne, y compris une colonne de nombres tirés au hasard. Une hausse de 0,01 n'est donc pas une preuve d'apport : c'est ce que produit une variable sans aucun rapport.

Trois façons de trancher. Regarder l'intervalle du coefficient : s'il contient zéro, les données ne montrent rien. Regarder l'erreur sur des données que le modèle n'a pas vues, ce qui est le sujet du chapitre sur la généralisation. Ou se demander si la variable a une raison d'être là.

Une variable de plus, c'est aussi une colonne à collecter, à nettoyer et à surveiller, indéfiniment.

Le graphe des résidus dessine une courbe nette. Que faire ?

C'est le signe qu'il manque un terme au modèle : celui-ci se trompe de façon systématique, donc prévisible, donc corrigible.

Trois pistes, dans l'ordre de préférence.

Ajouter le terme qui manque, si l'on sait lequel. Un carré, un produit entre deux variables, une variable qu'on n'avait pas mise.

Transformer la variable expliquée, souvent par un logarithme, quand la relation est multiplicative plutôt qu'additive.

Changer de famille de modèles, si la forme n'est pas atteignable par une combinaison de termes.

Ce qu'il ne faut pas faire, c'est constater le bon R2R^2 et passer à la suite. La courbe des résidus dit qu'on laisse de l'information sur la table, sans avoir besoin de collecter quoi que ce soit de plus.

Quel relevé faut-il vérifier en priorité : celui qui a la température la plus surprenante, ou celui qui a la charge la plus extrême ?

Celui dont la charge est la plus extrême, c'est-à-dire celui qui est extrême en xx.

La droite passe toujours par le centre de gravité du nuage. Un point proche de ce centre ne peut donc que la déplacer vers le haut ou vers le bas, sans changer la pente. Un point éloigné en xx agit comme un bras de levier et la fait pivoter.

Le chapitre l'a mesuré : un relevé faux à la limite du domaine change la pente de 55 %, alors que le même écart placé au centre ne la change pas du tout.

Un point surprenant en yy mais central est visible et peu dangereux. Un point extrême en xx est souvent discret et décide de tout.

Le RMSE vaut 12 et le MAE vaut 2. Que dit cet écart ?

Qu'il existe une poignée d'erreurs énormes noyées dans une majorité de bonnes prévisions.

Le RMSE est toujours supérieur ou égal au MAE, et le rapport entre les deux mesure l'irrégularité des erreurs. Un rapport proche de 1 signale des erreurs de tailles comparables ; un rapport de 6 signale que quelques cas dominent entièrement la somme des carrés.

Il faut alors aller les regarder, un par un. Trois issues possibles : ce sont des données fausses, et il faut les corriger ; ce sont des cas légitimes que le modèle ne sait pas traiter, et il faut le dire ; ou c'est un régime différent qui mérite son propre modèle.

Dans les trois cas, la moyenne seule aurait caché le problème.

Un modèle a un R² de 0,92 sur ses données. Peut-on l'utiliser pour prévoir à 95 % de charge alors qu'on n'a jamais dépassé 88 % ?

Non. Le R2R^2 mesure l'ajustement sur le domaine observé et ne dit rien de ce qui se passe en dehors.

Le chapitre en donne la mesure : à 95 %, la latence réelle vaut 220 ms, la droite en annonce 89 et le modèle avec un terme au carré 112. Les deux se trompent d'un facteur deux, et le plus sophistiqué n'est pas le plus juste.

La raison est structurelle. Un modèle ajusté résume la forme de la relation là où il y a des points. Au-delà, il prolonge sa propre forme, qui n'a aucune raison d'être la bonne, et rien dans les données ne peut le contredire.

La seule issue honnête est d'aller observer le régime en question, ou de dire que la prévision n'est pas disponible.

Vérification rapideon peut se reprendre

1.La droite des moindres carrés passe toujours par…

2.Que mesure le coefficient de détermination R² ?

3.Les quatre jeux d'Anscombe ont la même moyenne, le même écart-type, la même droite et le même R². Que faut-il en conclure ?

4.Un relevé aberrant situé au centre du nuage, en abscisse…

5.Le graphe des résidus dessine une courbe nette. Cela signifie…

6.Ajouter au modèle une colonne de nombres tirés au hasard fait…

La méthode

  1. Faire la figure avant le calcul, toujours, et avant de lire le moindre résultat.
  2. Ajuster la droite ou le modèle multiple par les moindres carrés.
  3. Lire le RMSE en premier, dans l'unité du problème, et le comparer au MAE.
  4. Tracer les résidus en fonction de la prévision, et y chercher une forme.
  5. Corriger la spécification si une forme apparaît, avant d'aller chercher des données.
  6. Lire l'intervalle de chaque coefficient, et se taire sur ceux qui contiennent zéro.
  7. Vérifier les relevés extrêmes en xx, qui décident de la pente.
  8. Refuser toute prévision hors du domaine observé, ou l'annoncer comme telle.

Synthèse

  • Une régression prédit un nombre, et l'erreur se mesure en ampleur, pas en juste ou faux.
  • Les moindres carrés minimisent la somme des carrés des écarts verticaux ; le carré est un choix, pas une nécessité.
  • La solution est donnée par des formules fermées, sans itération, ce qui ne se reproduira plus.
  • La droite passe toujours par le point moyen du nuage.
  • Une pente est une association observée, jamais l'effet d'une intervention.
  • RMSE dans l'unité du problème, MAE plus stable, comme point de comparaison ; l'écart RMSE contre MAE trahit les erreurs extrêmes.
  • Les quatre jeux d'Anscombe partagent tous leurs résumés numériques et n'ont rien à voir.
  • Un relevé faux extrême en xx fait pivoter la droite ; le même écart au centre ne fait que la décaler.
  • L'équation normale étend la méthode à plusieurs attributs, les variables qualitatives entrant par des indicatrices.
  • L'intervalle d'un coefficient est aussi important que sa valeur ; un intervalle contenant zéro ne prouve rien.
  • Le graphe des résidus est la figure de diagnostic : une forme signale un modèle mal spécifié.
  • Le RMSE ne peut pas descendre sous le bruit du problème ; ici 2,62 pour un bruit de 2,50.
  • Une prévision hors du domaine observé n'engage à rien, quelle que soit la sophistication du modèle.