Aller au contenu
Kudos AI
Read in English
Apprentissage supervisé

Au-delà de la linéarité : splines et modèles additifs

Comment ajuster des relations courbes sans quitter les moindres carrés : les fonctions de base, les contraintes qui transforment un polynôme par morceaux cassé en une spline, l’unique colonne supplémentaire par nœud qui les impose gratuitement, et la pénalité de rugosité qui laisse une courbe choisir sa propre souplesse.

7 min de lectureKudos AI

Prérequis : La régularisation : ridge et lasso

Une droite qui échoue sur des données courbes, puis le même ajustement par moindres carrés appliqué à des colonnes transformées, et enfin deux cubiques se rejoignant en un nœud avec un saut visible que les contraintes referment.

La régression linéaire suppose qu’un prédicteur agit en ligne droite. Quand ce n’est pas le cas, l’instinct est d’aller chercher un algorithme plus souple. Il existe un geste moins coûteux, qui conserve les moindres carrés et tout ce qui est bâti dessus, et ne change que ce sur quoi vous régressez.

A. Les fonctions de base

Choisissez des transformations de XX fixées et connues à l’avance, b1(X),…,bK(X)b_1(X), \dots, b_K(X), et ajustez

yi=β0+β1b1(xi)+⋯+βKbK(xi)+εi.y_i = \beta_0 + \beta_1 b_1(x_i) + \cdots + \beta_K b_K(x_i) + \varepsilon_i .

La régression polynomiale est le cas bj(x)=xjb_j(x) = x^j. Les fonctions en escalier sont le cas des indicateurs de classes, utiles là où existent de vrais points de rupture et médiocres sinon, puisqu’une classe ne peut montrer aucune tendance en son sein. Le mot important est fixées : les transformations sont choisies, non estimées, et c’est donc un modèle linéaire dans les nouvelles colonnes. Erreurs types, statistiques FF et intervalles de confiance se transposent tous.

B. Les polynômes par morceaux cassent, les contraintes les réparent

Au lieu d’un unique polynôme global, ajustez une cubique dans chaque région, découpée aux nœuds. Avec un nœud, cela fait deux cubiques de quatre paramètres chacune : huit degrés de liberté. Rien n’oblige les morceaux à se rejoindre, et ils ne le font pas. Sur 200 points simulés avec des nœuds en 40, 50 et 60, la valeur ajustée saute respectivement de 6,34, 5,55 et 6,26 unités - ce n’est pas de l’arrondi, c’est une courbe réellement discontinue.

Le remède, ce sont les contraintes : la continuité, puis une dérivée première continue, puis une dérivée seconde continue. Chacune supprime exactement un paramètre, d’où 8−3=58 - 3 = 5, et le résultat est une spline cubique. En général, une spline cubique à KK nœuds utilise K+4K + 4 degrés de liberté, puisque chaque nouveau nœud ajoute une cubique et trois contraintes.

C. La colonne qui impose la régularité gratuitement

Les moindres carrés sous contraintes sont évitables. Partez de x,x2,x3x, x^2, x^3 et ajoutez une colonne de puissance tronquée par nœud,

h(x,ξ)=(x−ξ)+3={(x−ξ)3x>ξ0otherwise,h(x, \xi) = (x - \xi)_+^3 = \begin{cases} (x - \xi)^3 & x > \xi \\ 0 & \text{otherwise,} \end{cases}

et les contraintes s’imposent d’elles-mêmes. L’affirmation est vérifiable. Pour f(x)=1+2x−0.05x2+0.001x3+0.004(x−50)+3f(x) = 1 + 2x - 0.05x^2 + 0.001x^3 + 0.004(x-50)_+^3, la différentiation de part et d’autre du nœud donne

leftrightjumpf100.9996101.00059×10−4f′4.499984.500024×10−5f′′0.2000060.2000104×10−6f′′′0.0060.0300.024\begin{array}{lrrl} & \text{left} & \text{right} & \text{jump} \\ \hline f & 100.9996 & 101.0005 & 9 \times 10^{-4} \\ f' & 4.49998 & 4.50002 & 4 \times 10^{-5} \\ f'' & 0.200006 & 0.200010 & 4 \times 10^{-6} \\ f''' & 0.006 & 0.030 & 0.024 \end{array}

Les trois premiers sont de l’erreur de différentiation numérique. Le dernier est réel et vaut exactement 6β46\beta_4. Une spline cubique est lisse jusqu’à la dérivée seconde et ne se rompt qu’à la troisième - la seule rupture que l’œil ne sache détecter.

Python

S'exécute dans votre navigateur. La première exécution télécharge l'environnement Python (~10 Mo), puis il est mis en cache.

En différenciant la courbe ajustée à chaque nœud, les sauts sont d’ordre 10−410^{-4} ou moins, contre plus de six unités pour l’ajustement sans contraintes sur des données et des nœuds identiques. Seules les colonnes ont changé.

Les splines se comportent malgré tout mal aux bords, où une cubique n’a de données que d’un seul côté. Une spline naturelle exige la linéarité au-delà des nœuds extrêmes - deux contraintes à chaque extrémité - ce qui ramène K+4K + 4 degrés de liberté à KK et rétrécit visiblement les bandes de confiance au bord. Et voilà pourquoi les splines l’emportent sur les polynômes à souplesse égale : un polynôme élève son degré globalement et oscille dans les queues, tandis qu’une spline ajoute une fonction de base nulle jusqu’à son nœud.

La figure ci-dessous ajuste les deux bases au même échantillon, et la base est un interrupteur. Avec les colonnes de puissances tronquées, la courbe est continue en f, f′ et f′′ à chaque nœud - et ce sont des zéros exacts, non de petits nombres, car la base ne peut pas exprimer de rupture là où les moindres carrés iraient la chercher. Passez à une cubique libre par région et les mêmes données, les mêmes nœuds et les mêmes moindres carrés déchirent la courbe. Faites glisser les nœuds où vous voulez : la régularité ne dépend pas de leur position.

Interactif : mêmes données, mêmes nœuds, colonnes différentes

Changez de base et regardez la courbe se déchirer aux nœuds.

334558
Colonnes
7
Somme des carrés résiduels
11844
Plus grand saut de f
0
Plus grand saut de f′′′
0.129

7 colonnes pour 3 nœuds : le K + 4 du compte de degrés de liberté, devenu une matrice de plan. La courbe est continue en f, f′ et f′′ à chaque nœud, et ce sont des zéros exacts, non de petits nombres : la base ne peut pas exprimer de discontinuité là, donc les moindres carrés ne sauraient en ajuster une même si les données le réclamaient. Ne reste à rompre que la dérivée troisième, la rupture que personne ne voit. Retirez les colonnes tronquées et regardez le même ajustement.

D. Pénaliser la rugosité plutôt que choisir des nœuds

Une spline de lissage supprime entièrement la sélection des nœuds. Minimisez

∑i=1n(yi−g(xi))2+λ∫g′′(t)2 dt.\sum_{i=1}^{n}\big(y_i - g(x_i)\big)^2 + \lambda \int g''(t)^2\,\mathrm{d}t .

La dérivée seconde mesure la rugosité - nulle pour une droite - et l’intégrale totalise donc l’ondulation. Le minimiseur est une spline cubique naturelle avec un nœud à chaque observation distincte, rétrécie par λ\lambda.

Cela ressemble à nn paramètres et à un surapprentissage assuré ; la résolution tient dans les degrés de liberté effectifs, la trace de la matrice qui envoie yy sur les valeurs ajustées. Mesurés sur les mêmes 200 points :

λRSSeffective df10−61,021186.210010,21325.210612,8012.06101812,850.752.00\begin{array}{rrr} \lambda & \text{RSS} & \text{effective df} \\ \hline 10^{-6} & 1{,}021 & 186.2 \\ 10^{0} & 10{,}213 & 25.2 \\ 10^{6} & 12{,}801 & 2.06 \\ 10^{18} & 12{,}850.75 & 2.00 \end{array}

Tout en bas, l’ajustement a 2,00 degrés de liberté effectifs et une somme des carrés des résidus de 12,850.7512{,}850.75, identique au centime près à celle de la droite des moindres carrés ordinaires. La limite n’est pas approximativement une droite ; c’est la droite.

L’autre extrémité appelle une remarque honnête. À λ=0\lambda = 0 exactement, la pénalité disparaît et toute courbe passant par les 200 points a une RSS nulle : l’objectif seul n’en choisit aucune. La spline naturelle, elle, tranche : avec un nœud en chacun des 200 xx distincts, elle compte exactement 200 colonnes pour 200 lignes, et l’ajustement est l’unique spline cubique naturelle interpolante. C’est aussi la limite quand λ→0\lambda \to 0, où les degrés de liberté effectifs montent jusqu’à exactement n=200n = 200.

La régression locale parvient à des fins voisines autrement : en chaque point cible, prendre la fraction ss des données les plus proches, pondérer par la distance, et ajuster une droite pondérée. La fenêtre ss joue le rôle de λ\lambda, et la méthode est fondée sur la mémoire, puisque chaque prédiction réajuste.

E. Plusieurs prédicteurs, une courbe chacun

Un modèle additif généralisé donne à chaque prédicteur sa propre fonction et les additionne :

yi=β0+f1(xi1)+⋯+fp(xip)+εi.y_i = \beta_0 + f_1(x_{i1}) + \cdots + f_p(x_{ip}) + \varepsilon_i .

Parce qu’elles s’ajoutent, chaque fjf_j peut être tracée et lue comme l’effet de ce prédicteur, les autres étant maintenus fixes. Cette interprétabilité est la raison de préférer un GAM au boosting ou à une SVM à noyau. Le coût tient dans le même mot : un effet qui n’existe que dans une combinaison de prédicteurs est invisible, sauf à ajouter l’interaction à la main.

Avec des splines naturelles comme composantes, le modèle est un grand ajustement par moindres carrés. Avec des splines de lissage, il s’ajuste par rétro-ajustement, en parcourant les prédicteurs en boucle et en réajustant chacun contre les résidus partiels jusqu’à ce que plus rien ne bouge.

Ce qu’il faut en retenir

Vous n’avez pas besoin d’un nouvel algorithme pour ajuster une courbe. Transformez les colonnes et les moindres carrés s’appliquent encore. Les contraintes achètent de la régularité au prix d’exactement un degré de liberté chacune, et une base bien choisie les rend gratuites. Une pénalité remplace la sélection des nœuds par un unique paramètre de lissage dont les limites sont une interpolation et une droite. Et l’additivité transporte tout cela vers plusieurs prédicteurs en conservant la propriété que les méthodes souples abandonnent : vous pouvez encore dire ce que fait chaque prédicteur. Le parcours de formation Au-delà de la linéarité reprend chacun de ces points à la main et en code.

Références et lectures complémentaires

  • Gareth James, Daniela Witten, Trevor Hastie, Robert Tibshirani, An Introduction to Statistical Learning, with Applications in R, Springer (Springer Texts in Statistics 103), 2013source ↗

Les œuvres protégées par le droit d’auteur sont citées à titre de référence uniquement et ne sont pas hébergées ici ; veuillez consulter l’éditeur pour y accéder.

Lecture associée

6 min de lectureApprentissage non supervisé

La direction qui change quand vous changez d’unité

Douze personnes, deux mesures, et trois premières composantes principales différentes : en millimètres la réponse est presque uniquement la taille, en mètres presque uniquement le poids, et en centimètres un mélange équilibré - la corrélation restant fixée à 0,9500 dans les trois cas. Ce que cela dit de ce que l’ACP maximise, pourquoi une proportion de variance expliquée de 99,999 % peut être un énoncé sur les mètres plutôt que sur les personnes, et ce que la standardisation choisit réellement.

Apprentissage automatiqueStatistique
4 min de lectureTime Series

Un score qui perd contre ne rien faire

Un modèle des cinq plus proches voisins obtient 0,9983 en validation croisée aléatoire à cinq blocs sur une marche aléatoire, série dont les incréments sont par construction imprévisibles. Évalué en avançant dans le temps il obtient 0,6559, avec une RMSE 12,44 fois plus grande, et il perd contre la simple reconduction de la dernière valeur observée. C’est la découpe, non le modèle, qui a produit le premier nombre.

StatistiqueApprentissage automatique
8 min de lectureAnomaly Detection

Le détecteur qui ne se déclenche jamais est juste à 99,5 %

À un taux de base réaliste, le détecteur inerte gagne sur la justesse, une ROC de 0,9468 masque une file d’alertes fausse à 64 %, la distance à la moyenne se classe sous le hasard quand les anomalies siègent au centre, et vingt anomalies groupées se cachent les unes les autres de la méthode conçue pour les trouver.

Apprentissage automatiqueStatistique
← Retour à tous les articles