You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: content/modelisation/1_modelevaluation.qmd
+15-23Lines changed: 15 additions & 23 deletions
Original file line number
Diff line number
Diff line change
@@ -153,34 +153,23 @@ Pour garder un modèle pertinent dans le temps, il sera nécessaire de réguliè
153
153
154
154
# Les hyperparamètres et la validation croisée
155
155
156
-
La @fig-ml-pipeline présentait le _pipeline_ simple
157
-
pour introduire à la notion d'entraînement d'un modèle.
158
-
Ce *pipeline* fait abstraction d'hypothèses exogènes à l'estimation
159
-
mais qui sont à faire sur des paramètres
160
-
car elles affectent la performance de la prédiction.
156
+
La @fig-ml-pipeline présentait le _pipeline_ classique pour introduire à la notion d'entraînement d'un modèle. Ce *pipeline* fait néanmoins abstraction d'hypothèses qui affectent la performance d'un modèle mais correspondent à des paramètres exogènes à l'entraînement. Par exemple, si on définit l'entraînement comme une fonction objective très générique visant à trouver un ensemble de paramètres $\beta$ qui minimisent une fonction de perte $l$ entre les valeurs observées ($y$) et prédites ($\widehat{y}$) :
161
157
162
-
Par exemple, de nombreux modèles proposent une pénalisation des modèles
163
-
non parcimonieux pour éviter le sur-apprentissage. Le choix de la pénalisation
164
-
idéale dépend de la structure des données et n'est jamais connue, *ex-ante*
165
-
par le modélisateur. Faut-il pénaliser fortement ou non le modèle ?
La notion de __validation croisée__ permettra de généraliser cette approche. Ces paramètres
168
-
qui affectent la prédiction seront pas la suite appelés des
169
-
**hyperparamètres**. Comme nous allons le voir, nous allons aboutir à un
170
-
raffinement de l'approche pour obtenir un *pipeline* ayant plutôt cet aspect :
162
+
il existe une infinité de modèles qui peuvent répondre à cet objectif. Dans une approche empirique, où on ne dispose pas vraiment d'arguments pour choisir une fonction $g$ ou $l$ plutôt qu'une autre (à part le type de données $y$, discrètes ou continues), on va naturellement vouloir tester plusieurs configurations et choisir celle qui répond le mieux à notre objectif.
Cette approche de comparaison de modèles est au coeur de la validation croisée. L'idée est de comparer l'effet que peuvent avoir les hypothèses de modélisation sur la performance. Par exemple, imaginons une fonction de perte quadratique et un modèle de prédiction linéaire avec un paramètre de pénalisation pour limiter le surapprentissage:
La __validation croisée__ est une méthode permettant de choisir la valeur du paramètre
176
-
qui optimise la qualité de la prédiction en agrégeant
177
-
des scores de performance sur des découpages différents de l'échantillon d'apprentissage.
170
+
avec $p$ le nombre de variables de notre modèle et $\lambda$ le facteur de pénalisation. Le choix de la pénalisation
171
+
idéale dépend de la structure des données et n'est jamais connue, *ex-ante* par le modélisateur. Faut-il pénaliser fortement ou non le modèle ? Selon les valeurs de ce paramètre $\lambda$, les $\beta$ qui sont eux estimés par apprentissage, seront différents.
178
172
179
-
La validation croisée permet d'évaluer les performances de modèles différents (SVM, random forest, etc.) ou, couplé à une stratégie de *grid search*, de trouver les valeurs des hyperparamètres qui aboutissent à la meilleure prédiction.
180
-
181
-
::: {.note}
182
-
L'étape de découpage de l'échantillon de validation croisée est à distinguer de l'étape `split_sample_test`. A ce stade, on a déjà partitionné les données en échantillon d'apprentissage et test. C'est l'échantillon d'apprentissage qu'on découpe en sous-morceaux.
183
-
:::
184
173
185
174
La méthode la plus commune est la validation croisée _k-fold_.
186
175
On partitionne les données en $K$ morceaux et on considère chaque pli, tour à tour, comme un échantillon
@@ -189,6 +178,9 @@ comparés pour plusieurs valeurs des hyperparamètres.
L'étape de découpage de l'échantillon de validation croisée est à distinguer de l'étape `split_sample_test`. A ce stade, on a déjà partitionné les données en échantillon d'apprentissage et test. C'est l'échantillon d'apprentissage qu'on découpe en sous-morceaux.
183
+
:::
184
+
192
185
Il existe d'autres types de validation croisée, notamment la *leave one out* qui consiste à considérer une fois
193
186
exactement chaque observation comme l’échantillon de test (une *n-fold cross validation*).
0 commit comments