# Validation croisée

En statistiques et en apprentissage automatique, la validation croisée (« cross-validation » en anglais) est une méthode d’estimation de fiabilité d’un modèle fondée sur une technique d’échantillonnage.

## Motivation

Considérons un modèle statistique avec un ou plusieurs paramètres inconnus, et un ensemble de données d'apprentissage sur lequel on peut apprendre (ou « entraîner ») le modèle. Le processus d'apprentissage optimise les paramètres du modèle afin que celui-ci corresponde le mieux possible aux données d'apprentissage. Si on prend ensuite un échantillon de validation indépendant, supposément issu de la même population que l'échantillon d'apprentissage, il s'avérera en général que le modèle ne modélise pas aussi bien les données de validation que les données d'apprentissage : on parle de surapprentissage. Néanmoins, un échantillon de validation indépendant n'est pas toujours disponible. De plus, d'un échantillon de validation à un autre, la performance de validation du modèle peut varier. La validation croisée permet de tirer plusieurs ensembles de validation d'une même base de données et ainsi d'obtenir une estimation plus robuste, avec biais et variance, de la performance de validation du modèle.

## Techniques de validation

Il existe de nombreuses variantes de validation mais on peut distinguer les trois suivantes dans un premier temps.

### Validation non-croisée

Pour la validation non-croisée, « test set validation » ou « holdout method », on divise l'échantillon de taille $n$ en deux sous-échantillons, le premier dit d'apprentissage (communément supérieur à 60 % de l'échantillon) et le second dit de validation ou de test. Le modèle est bâti sur le sous-échantillon d'apprentissage. Il est validé sur le sous-échantillon de test avec un score de performance de notre choix.

### Validation croisée à k blocs

Pour la validation croisée à $k$ blocs, « k-fold cross-validation », on divise l'échantillon original en $k$ échantillons (ou « blocs »), puis on sélectionne un des $k$ échantillons comme ensemble de validation pendant que les $k-1$ autres échantillons constituent l'ensemble d'apprentissage. Après apprentissage, on peut calculer une performance de validation. Puis on répète l'opération en sélectionnant un autre échantillon de validation parmi les blocs prédéfinis. À l'issue de la procédure nous obtenons ainsi $k$ scores de performances, un par bloc. La moyenne et l'écart type des $k$ scores de performances peuvent être calculés pour estimer le biais et la variance de la performance de validation.
Tableau de répartitions des données pour une validation croisée à k=3 blocs :
| k | bloc 1 | bloc 2 | bloc 3 |
| 1 | validation | apprentissage | apprentissage |
| 2 | apprentissage | validation | apprentissage |
| 3 | apprentissage | apprentissage | validation |

### Validation croisée d'un contre tous

La validation croisée d'un contre tous, « leave-one-out cross-validation » (LOOCV) est le cas particulier de la validation croisée à $k$ blocs avec $k=n$. C'est-à-dire qu'à chaque itération d'apprentissage-validation, l'apprentissage se fait sur $n-1$ observations et la validation sur l'unique observation restante.
Après avoir réalisé la validation du modèle, il faut alors passer au test avec le jeu de test précédemment mis de côté.

## Gestion des bases de données non-équilibrées

Dans les tâches de classification, la répartition des classes dans la base de données peut être déséquilibrée, c'est-à-dire que le nombre d'observations par classe peut ne pas être le même d'une classe à l'autre : si l'on dénote $n_{i}$ le nombre d'observations de la $i$-ème classe, alors il existe $\{i,j\}$ tel que $n_{i}\neq n_{j}$. Dans ce cas, pour éviter que la performance de validation (et d'apprentissage) ne soit biaisée par une répartition changeante des classes d'un ensemble de validation (resp. d'apprentissage) à un autre, il est recommandé d'utiliser une validation croisée stratifiée (« stratified cross validation »). La stratification consiste à s'assurer que la répartition des classes soit la même dans tous les ensembles d'apprentissage et de validation utilisés. C'est-à-dire que si la base de données initiale présente, par exemple, 3 observations de la classe 1 pour 7 observations de la classe 2, alors chaque ensemble de validation (resp. d'apprentissage) devra présenter ce ratio de 3 pour 7.
Dans le cas de la validation croisée à $k$ blocs, il s'agit simplement de répartir les classes de la même manière d'un bloc à un autre. Les ensembles de validation et d'apprentissage qui en dériveront hériteront de cette répartition.