Skip to content

Commit 3682517

Browse files
committed
Reprise de la partie modelisation
1 parent c1853b9 commit 3682517

File tree

7 files changed

+23
-400
lines changed

7 files changed

+23
-400
lines changed

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
!*.excalidraw.json
12
/.quarto/
23
_book/
34
_site/

_quarto-fr.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,7 @@ website:
5656
text: "Introduction"
5757
- content/modelisation/0_preprocessing.qmd
5858
- content/modelisation/1_modelevaluation.qmd
59-
- content/modelisation/2_SVM.qmd
59+
- content/modelisation/2_classification.qmd
6060
- content/modelisation/3_regression.qmd
6161
- content/modelisation/4_featureselection.qmd
6262
- content/modelisation/5_clustering.qmd

_quarto-prod.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ project:
2626
- content/modelisation/index.qmd
2727
- content/modelisation/0_preprocessing.qmd
2828
- content/modelisation/1_modelevaluation.qmd
29-
- content/modelisation/2_SVM.qmd
29+
- content/modelisation/2_classification.qmd
3030
- content/modelisation/3_regression.qmd
3131
- content/modelisation/4_featureselection.qmd
3232
- content/modelisation/5_clustering.qmd

_quarto.yml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ project:
1010
- content/visualisation/maps.qmd
1111
- content/modelisation/index.qmd
1212
- content/modelisation/1_modelevaluation.qmd
13+
- content/modelisation/2_classification.qmd
1314
- content/NLP/index.qmd
1415
- content/modern-ds/s3.qmd
1516
- content/annexes/corrections.qmd

content/modelisation/1_modelevaluation.qmd

Lines changed: 15 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -153,34 +153,23 @@ Pour garder un modèle pertinent dans le temps, il sera nécessaire de réguliè
153153

154154
# Les hyperparamètres et la validation croisée
155155

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}$) :
161157

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 ?
158+
$$
159+
\text{argmin}_{\beta} \mathbb{E}\bigg[l\big(y,g({X})\big)\bigg]
160+
$$
166161

167-
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.
171163

172-
![](https://minio.lab.sspcloud.fr/lgaliana/generative-art/pythonds/scikit_predict2.png)
164+
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:
173165

166+
$$
167+
\text{argmin}_{\beta} \sum_{i=1}^{n} \bigg(y - \beta_0 - \sum_{j=1}^p \beta_j x_{ij} + \lambda \sum_{j=1}^p |\beta_j| \bigg)
168+
$$
174169

175-
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.
178172

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-
:::
184173

185174
La méthode la plus commune est la validation croisée _k-fold_.
186175
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.
189178

190179
![](https://scikit-learn.org/stable/_images/grid_search_cross_validation.png)
191180

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+
192185
Il existe d'autres types de validation croisée, notamment la *leave one out* qui consiste à considérer une fois
193186
exactement chaque observation comme l’échantillon de test (une *n-fold cross validation*).
194-

0 commit comments

Comments
 (0)