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
nous allons voir deux processus très classiques de *preprocessing* :
438
+
Nous allons voir deux processus très classiques de *preprocessing* pour des variables continues :
427
439
428
440
1. La **standardisation** transforme des données pour que la distribution empirique suive une loi $\mathcal{N}(0,1)$.
429
441
430
442
2. La **normalisation** transforme les données de manière à obtenir une norme ($\mathcal{l}_1$ ou $\mathcal{l}_2$) unitaire. Autrement dit, avec la norme adéquate, la somme des éléments est égale à 1.
Il en existe d'autres, par exemple le `MinMaxScaler` pour renormaliser les variables en fonction des bornes minimales et maximales des valeurs observées. Le choix de la méthode a mettre en oeuvre dépend du type d'algorithmes choisis par la suite: les hypothèses des k plus proches voisins (knn) seront différentes de celles d'une _random forest_. C'est pour cette raison que, normalement, on définit des _pipelines_ complets, intégrant à la fois _preprocessing_ et apprentissage. Ce sera l'objet des prochains chapitres.
445
+
446
+
::: {.caution}
447
+
Pour les statisticiens.ennes,
438
448
le terme _normalization_ dans le vocable `Scikit` peut avoir un sens contre-intuitif.
439
449
On s'attendrait à ce que la normalisation consiste à transformer une variable de manière à ce que $X \sim \mathcal{N}(0,1)$.
440
450
C'est, en fait, la **standardisation** en `Scikit` qui fait cela.
441
451
442
-
```{=html}
443
-
</div>
444
-
```
445
452
:::
446
453
447
454
448
-
## Standardisation
449
-
450
-
La standardisation consiste à transformer des données pour que la distribution empirique suive une loi $\mathcal{N}(0,1)$. Pour être performants, la plupart des modèles de _machine learning_ nécessitent souvent d'avoir des données dans cette distribution.
La standardisation consiste à transformer des données pour que la distribution empirique suive une loi $\mathcal{N}(0,1)$. Pour être performants, la plupart des modèles de _machine learning_ nécessitent souvent d'avoir des données dans cette distribution. Même lorsque ce n'est pas indispensable, par exemple avec des régressions logistiques, cela peut accélérer la vitesse de convergence des algorithmes.
457
458
459
+
::: {.exercise}
460
+
## Exercice 3: Standardisation
458
461
459
-
1. Standardiser la variable `Median_Household_Income_2019` (ne pas écraser les valeurs !) et regarder l'histogramme avant/après normalisation.
462
+
1. Standardiser la variable `Median_Household_Income_2019` (ne pas écraser les valeurs !) et regarder l'histogramme avant/après normalisation. Cette transformation est à appliquer à toute la colonne ; les prochaines questions se préoccuperont du sujet de découpage d'échantillon et d'extrapolation.
460
463
461
464
*Note : On obtient bien une distribution centrée à zéro et on pourrait vérifier que la variance empirique soit bien égale à 1. On pourrait aussi vérifier que ceci est vrai également quand on transforme plusieurs colonnes à la fois.*
462
465
@@ -474,45 +477,141 @@ dimensions coïncident.
474
477
*Note : Une fois appliqués à un autre `DataFrame`, on peut remarquer que la distribution n'est pas exactement centrée-réduite dans le `DataFrame` sur lequel les paramètres n'ont pas été estimés. C'est normal, l'échantillon initial n'était pas aléatoire, les moyennes et variances de cet échantillon n'ont pas de raison de coïncider avec les moments de l'échantillon complet.*
475
478
476
479
477
-
```{=html}
478
-
</div>
479
-
```
480
480
:::
481
481
482
+
Avant standardisation, notre variable a cette distribution:
On peut extrapoler notre standardiseur à un ensemble plus large de données. Si on regarde la distribution obtenue sur les 1000 premières lignes, on retrouve une échelle cohérente avec une loi $\mathcal{N(0,1)}$
labs(x = "Unemployment rate (standardized), 1000 first rows")
594
+
)
514
595
```
515
596
597
+
En revanche on voit que cette distribution ne correspond pas à celle qui permettrait de normaliser vraiment le reste des données. C'est un problème classique en _machine learning_, le _data drift_ lorsqu'on essaie d'extrapoler à des données dont la distribution ne correspond plus à celle des données d'apprentissage, typiquement des données non stationnaires en série temporelle.
598
+
599
+
```{python}
600
+
(
601
+
ggplot(X2, aes(x = "Unemployment_rate_2019")) +
602
+
geom_histogram() +
603
+
labs(x = "Unemployment rate (standardized), other rows")
604
+
)
605
+
606
+
```
607
+
608
+
::: {.important}
609
+
Le data drift désigne un changement dans la distribution des données au fil du temps, entraînant une dégradation des performances d’un modèle de _machine learning_ qui, par construction, a été entraîné sur des données passées.
610
+
611
+
Ce phénomène peut survenir à cause de variations dans la population cible, de changements dans les caractéristiques des données ou de facteurs externes.
612
+
613
+
Il est crucial de détecter le data drift pour ajuster ou réentraîner le modèle, afin de maintenir sa pertinence et sa précision. Les techniques de détection incluent des tests statistiques et le suivi de métriques spécifiques.
614
+
:::
516
615
517
616
## Normalisation
518
617
@@ -537,6 +636,7 @@ Cette transformation est particulièrement utilisée en classification de texte
537
636
:::
538
637
539
638
```{python}
639
+
#| eval: false
540
640
# 1. Normalisation de Median_Household_Income_2019 et histogrammes
0 commit comments