En date du 14 juillet, avancées sur la rédaction de la partie SVD.
This commit is contained in:
parent
4de134c21f
commit
c2389f4233
@ -11,25 +11,45 @@ classoption: fleqn
|
||||
|
||||
# Introduction
|
||||
|
||||
## Contexte
|
||||
|
||||
A l’occasion des trois premières révolutions industrielles, des tâches, auparavant réservées au travail manuel de l’Homme, ont été automatisées. Il semble envisageable d’associer au tournant du 21ème siècle une quatrième révolution portée par l’automatisation de la capacité à prédire, essentielle pour le processus de prise de décision dans les secteurs de l’industrie, du commerce et des services.
|
||||
|
||||
Cette transformation se fonde sur des évolutions scientifiques et techniques majeures. Elle est ainsi associée à une discipline, le machine learning ou apprentissage automatique de modèles prédictifs par extrapolation à partir de données générées par des processus physiques, numériques ou biologiques. Ces développements algorithmiques, en particulier la redécouverte des réseaux de neurones profonds, ont révélé sous un nouveau jour leur potentiel autour des années 2010 grâce, d’une part, à la création de jeux de données volumineux dans des domaines variés comme la reconnaissance de la parole, la vision par ordinateur, les données multimedia, le traitement de la langue naturelle, la robotique, les véhicules autonomes… et, grâce d’autre part, à une croissance rapide des capacités de calcul et de stockage aux coûts toujours plus abordables.
|
||||
|
||||
Par ailleurs, cette automatisation des prédictions s’accompagne d’un renouveau des formes de jugement dans les processus de prise de décision avec un couplage de plus en plus fin entre d’un côté, des experts humains et de l’autre, des chaînes de traitement automatique des données qui aboutissent sur la mise en production d’algorithmes prédictifs. Pour la réussite de cette intégration, les compétences de l’ingénieur informaticien sont essentielles. Ce dernier, puisqu’il comprend en profondeur le fonctionnement et les limites des algorithmes qu’il déploie, est capable d’en mesurer les risques et les biais pour éclairer le jugement de ceux qui utiliseront ses réalisations logicielles pour prendre des décisions.
|
||||
|
||||
Ainsi, ce cours introductif à l’apprentissage automatique a pour objectif d’offrir des connaissances fondamentales et des compétences pratiques qui aideront l'ingénieur à tenir ce rôle essentiel.
|
||||
|
||||
## Objectifs
|
||||
|
||||
La discipline de l’apprentissage automatique, ou machine learning, élabore des algorithmes et des méthodes pour découvrir des régularités dans des données multidimensionnelles afin, entre autres, d’automatiser la prédiction. Elle peut se subdiviser en trois catégories. D’abord, l’apprentissage non (ou semi) supervisé qui s’attache à découvrir des structures dans les données non étiquetées à travers des approches comme le clustering, la réduction dimensionnelle, les modèles génératifs… Ensuite, l’apprentissage par renforcement, dans le cadre duquel un agent interagit avec son environnement en adaptant son comportement pour maximiser une fonction de récompense. Enfin, l’apprentissage supervisé, qui fait l’objet de ce module, a quant à lui pour objectif d’apprendre à prédire l’association entre un objet décrit selon plusieurs dimensions et une étiquette.
|
||||
|
||||
Par exemple, il peut s’agir d’associer aux quartiers d’une ville le prix médian d’un logement. Dans ce cas, un quartier peut être décrit par la proportion de zones résidentielles, le taux de criminalité, le nombre moyen de pièces par habitat, etc. Ici, nous faisons face à un problème dit de « régression » où la valeur à prédire, autrement l’étiquette associée à chaque observation, est continue. Lorsque la variable à prédire est discrète, il s’agit d’un problème dit de « classification », comme détecter un objet dans une image ou décider si une transaction bancaire risque d’être une fraude. Nous considérerons ces deux catégories de problèmes.
|
||||
|
||||
Ainsi, ce cours a pour objectif d’introduire quelques concepts fondamentaux de l’apprentissage supervisé et de montrer leurs interconnexions variées dans le cadre de développements algorithmiques qui permettent d’analyser des jeux de données dans une visée avant tout prédictive. Ainsi, les propositions théoriques mèneront à l’écritures de programmes qui implémentent ou utilisent quelques modèles essentiels de l’apprentissage supervisé.
|
||||
|
||||
Pour faciliter l’acquisition des connaissances, le cours est accompagné de notebooks manipulables, rédigés dans le langage de programmation R. Ces mises en pratique systématiques doivent permettre de faire le lien entre des concepts fondamentaux et leur application dans des projets d’analyse de données.
|
||||
|
||||
## Premiers concepts
|
||||
|
||||
$\mathbf{x}^{(1)} \dots \mathbf{x}^{(P)}$ sont des vecteurs de $\mathbb{R}^N$ associés aux valeurs, aussi appelées étiquettes, $y^{(1)} \dots y^{(P)}$ de $\mathbb{R}$. Nous cherchons une fonction $f(\mathbf{x}) : \mathbb{R}^N \rightarrow \mathbb{R}$ qui modélise la relation entre les observations $\mathbf{x}$ et les étiquettes $y$.
|
||||
|
||||
La fonction $f$ peut avoir une forme paramétrique, comme par exemple :
|
||||
$$
|
||||
\[
|
||||
f(\mathbf{x}) = a_0 + a_1x_1 + a_2x_2 + \dots + a_Nx_N
|
||||
$$
|
||||
\]
|
||||
Si $P=N+1$, les paramètres $a_0, a_1, \dots a_N$ sont solution d'un système linéaire :
|
||||
$$
|
||||
\[
|
||||
\begin{cases}
|
||||
y^{(1)} &= a_0 + a_1 x_1^{(1)} + a_2 x_2^{(1)} + \dots + a_N x_N^{(1)} \\
|
||||
y^{(2)} &= a_0 + a_1 x_1^{(2)} + a_2 x_2^{(2)} + \dots + a_N x_N^{(2)} \\
|
||||
\dots &= \dots \\
|
||||
y^{(P)} &= a_0 + a_1 x_1^{(P)} + a_2 x_2^{(P)} + \dots + a_N x_N^{(P)} \\
|
||||
\end{cases}
|
||||
$$
|
||||
\]
|
||||
Ce système s'écrit également sous forme matricielle :
|
||||
$$
|
||||
\[
|
||||
\left( \begin{array}{cccc}
|
||||
1 & x^{(1)}_1 & \dots & x^{(1)}_N \\
|
||||
1 & x^{(2)}_1 & \dots & x^{(2)}_N \\
|
||||
@ -43,18 +63,18 @@ a_0 \\ a_1 \\ \dots \\ a_N
|
||||
\left( \begin{array}{c}
|
||||
y^{(1)} \\ y^{(2)} \\ \dots \\ y^{(P)}
|
||||
\end{array} \right)
|
||||
$$
|
||||
\]
|
||||
Chaque ligne $i$ de la matrice du terme de gauche de l'égalité ci-dessus est le vecteur ligne $\mathbf{x}^{(i)T}$ avec l'addition d'un premier terme constant qui correspond au paramètre $a_0$. En nommant cette matrice $\mathbf{X}^T$, le système linéaire ci-dessus s'écrit :
|
||||
$$
|
||||
\[
|
||||
\mathbf{X}^T \mathbf{a} = \mathbf{y}
|
||||
$$
|
||||
\]
|
||||
Soit le cas particulier où $x$ est un scalaire et $f$ est un polynome de degré $N$ :
|
||||
$$
|
||||
\[
|
||||
f(x) = a_0 + a_1x + a_2x^2 + \dots + a_Nx^N
|
||||
$$
|
||||
\]
|
||||
Avec $P=N+1$ observations et les étiquettes associées $\left( x^{(k)}, y^{(k)} \right)$, les coefficients de ce polynôme sont solution d'un système linéaire :
|
||||
|
||||
$$
|
||||
\[
|
||||
\left( \begin{array}{ccccc}
|
||||
1 & x^{(1)} & (x^{(1)})^2 & \dots & (x^{(1)})^N \\
|
||||
1 & x^{(2)} & (x^{(2)})^2 & \dots & (x^{(2)})^N \\
|
||||
@ -68,7 +88,7 @@ a_0 \\ a_1 \\ \dots \\ a_N
|
||||
\left( \begin{array}{c}
|
||||
y^{(1)} \\ y^{(2)} \\ \dots \\ y^{(P)}
|
||||
\end{array} \right)
|
||||
$$
|
||||
\]
|
||||
|
||||
La matrice du terme de gauche de l'égalité ci-dessus est traditionnellement appelée "matrice de Vandermonde".
|
||||
|
||||
@ -85,10 +105,11 @@ gendat <- function(N, sd) {
|
||||
# sd: écart type d'un bruit gaussien de moyenne nulle
|
||||
X = runif(N)
|
||||
Y = f(X) + rnorm(N, mean=0, sd=sd)
|
||||
dim(X) <- c(N,1) # en général chaque observation est décrite par plusieurs variables
|
||||
# et X est une matrice avec autant de lignes que d'observations
|
||||
# et autant de colonnes que de variables. Sur notre exemple,
|
||||
# chaque observation n'est décrite que par une seule variable.
|
||||
dim(X) <- c(N,1) # en général chaque observation est décrite par plusieurs
|
||||
# variables et X est une matrice avec autant de lignes que
|
||||
# d'observations et autant de colonnes que de variables. Sur
|
||||
# notre exemple, chaque observation n'est décrite que par une
|
||||
# seule variable.
|
||||
list(X = X, Y = Y)
|
||||
}
|
||||
```
|
||||
@ -109,8 +130,8 @@ plt(data,f)
|
||||
La fonction ci-dessous résout le système linéaire correspondant à la matrice de Vandermonde et retourne les coefficients du polynôme résultat.
|
||||
```{r}
|
||||
polyreg1 <- function(data) {
|
||||
xs <- c(data$X) # on transforme la matrice X de dimension Nx1 sur notre exemple,
|
||||
# en un vecteur
|
||||
xs <- c(data$X) # on transforme la matrice X, de dimension Nx1 sur notre
|
||||
# exemple, en un vecteur
|
||||
vandermonde = outer(xs, 0:(length(xs)-1), "^")
|
||||
solve(vandermonde, data$Y)
|
||||
}
|
||||
@ -138,14 +159,16 @@ pltpoly(coef)
|
||||
```
|
||||
Il est improbable que ce polynôme, passant exactement par chaque observation, puisse offrir de bonnes capacités prédictives. Vérifier par exemple que, sur notre exemple synthétique, pour cinq points générés à partir de la fonction $f$ et avec l'ajout d'un bruit gaussien (par exemple d'écart type $0.2$), le polynôme découvert, de degré quatre, peut être très éloigné de la fonction génératrice. C'est un exemple du phénomène de sur-apprentissage. Pour limiter ce problème, nous cherchons à découvrir un polynôme de degré plus faible. Il ne passera pas exactement par toutes les observations, mais il prédira probablement mieux les étiquettes associées à de nouvelles observations.
|
||||
|
||||
# Généralisation à un espace de fonctions
|
||||
# Approche des moindres carrés
|
||||
|
||||
## Généralisation à un espace de fonctions
|
||||
|
||||
Soit un espace vectoriel composé de fonctions. Une base de cet espace est un ensemble de fonctions ($f_1, f_2, \dots f_N$) tel que toute fonction de l'espace s'exprime comme combinaison linéaire des fonctions de base.
|
||||
$$
|
||||
\[
|
||||
f(\mathbf{x}) = a_1 f_1(\mathbf{x}) + a_2 f_2(\mathbf{x}) + \dots + a_N f_N(\mathbf{x})
|
||||
$$
|
||||
\]
|
||||
Pour un jeu de données $\left\{ \mathbf{x^{(k)}},y^{(k)}\right\}_{k=1}^{N}$ de taille $N$, les coefficients $a_i$ sont solution d'un système linéaire.
|
||||
$$
|
||||
\[
|
||||
\left( \begin{array}{ccccc}
|
||||
f_1(\mathbf{x^{(1)}}) & f_2(\mathbf{x^{(1)}}) & \dots & f_N(\mathbf{x^{(1)}}) \\
|
||||
f_1(\mathbf{x^{(2)}}) & f_2(\mathbf{x^{(2)}}) & \dots & f_N(\mathbf{x^{(2)}}) \\
|
||||
@ -159,11 +182,9 @@ a_1 \\ a_2 \\ \dots \\ a_N
|
||||
\left( \begin{array}{c}
|
||||
y^{(1)} \\ y^{(2)} \\ \dots \\ y^{(N)}
|
||||
\end{array} \right)
|
||||
$$
|
||||
\]
|
||||
Nous notons ce système linéaire $\mathbf{Ax} = \mathbf{b}$.
|
||||
|
||||
# Approche des moindres carrés
|
||||
|
||||
## Expression matricielle
|
||||
|
||||
Le système linéaire $\mathbf{Ax} = \mathbf{b}$ avec $\mathbf{A} \in \mathbb{R}^{M \times N}$ n'a pas de solution quand le nombre d'observations dépasse le nombre de fonctions de base (c'est-à-dire, $M>N$). Une approche possible est alors de chercher une approximation $\mathbf{Ax} \approx \mathbf{b}$ qui minimise la somme des carrés des erreurs : $\|\mathbf{Ax}-\mathbf{b}\|^2_2$.
|
||||
@ -182,7 +203,7 @@ Le système linéaire $\mathbf{Ax} = \mathbf{b}$ avec $\mathbf{A} \in \mathbb{R}
|
||||
& \mathbf{x}^T\mathbf{A}^T\mathbf{A}\mathbf{x} - 2\mathbf{x}^T\mathbf{A}^T\mathbf{b} + \mathbf{b}^T\mathbf{b}
|
||||
\end{align*}
|
||||
|
||||
Cette dernière expression quadratique en $\mathbf{x}$ correspond à une surface convexe. Donc, le minimum de cette expression peut être calculé en annulant sa dérivée (penser à une courbe $y = a+bx+cx^2$ dont l'unique extremum est atteint lorsque la pente est nulle).
|
||||
Cette dernière expression quadratique en $\mathbf{x}$ correspond à une surface convexe. Donc son minimum peut être calculé en annulant sa dérivée (penser à une courbe $y = a+bx+cx^2$ dont l'unique extremum est atteint lorsque la pente est nulle).
|
||||
|
||||
\begin{align*}
|
||||
& \mathbf{0} = 2\mathbf{A}^T\mathbf{A}\mathbf{x} - 2\mathbf{A}^T\mathbf{b} \\
|
||||
@ -191,9 +212,9 @@ Cette dernière expression quadratique en $\mathbf{x}$ correspond à une surface
|
||||
\end{align*}
|
||||
|
||||
Ainsi, quand $M>N$, la solution approximée $\mathbf{x}$, telle que $\mathbf{Ax} \approx \mathbf{b}$ par minimisation de la somme des carrés des erreurs, est la solution du système linéaire suivant où $\mathbf{A}^T\mathbf{A}$ est appelée la matrice de Gram.
|
||||
$$
|
||||
\[
|
||||
\mathbf{A}^T\mathbf{A} \mathbf{x} = \mathbf{A}^T\mathbf{b}
|
||||
$$
|
||||
\]
|
||||
|
||||
## Approche des moindres carrés appliquée à la régression polynomiale
|
||||
|
||||
@ -217,8 +238,10 @@ Ce polynôme de degré trois modélise mieux la fonction génératrice inconnue
|
||||
|
||||
# Régularisation de Tikhonov
|
||||
|
||||
## Problèmes linéaires mal posés
|
||||
|
||||
Avec moins d'observations que de fonctions de base ($M<N$), le système $\mathbf{A}\mathbf{x}=\mathbf{b}$ ne possède pas de solution unique. Même quand $M \geq N$, le système linéaire peut posséder une solution approchée préférable à la solution optimale. C'est en particulier vrai quand plusieurs observations sont très proches à un coefficient multiplicatif près (on parle de colinéarités). Par exemple, soit le système linéaire suivant :
|
||||
$$
|
||||
\[
|
||||
\left( \begin{array}{cc}
|
||||
1 & 1 \\
|
||||
1 & 1.00001 \\
|
||||
@ -230,9 +253,11 @@ x_1 \\ x_2
|
||||
\left( \begin{array}{c}
|
||||
1 \\ 0.99
|
||||
\end{array} \right)
|
||||
$$
|
||||
\]
|
||||
Sa solution est $\mathbf{x}^T = (1001,-1000)$. Cependant, la solution approchée $\mathbf{x}^T = (0.5,0.5)$ semble préférable. En effet, la solution optimale a peu de chance de bien s'adapter à de nouvelles observations (par exemple, l'observation $(1,2)$ serait projetée sur l'étiquette -999).
|
||||
|
||||
## Ajout de contraintes de régularité
|
||||
|
||||
Ainsi, lorsqu'il faut choisir entre plusieurs solutions, il peut être efficace d'exprimer une préférence envers celles dont les coefficients (ou paramètres) ont de faibles valeurs. Cela consiste par exemple à minimiser $|x_1|+|x_2|+\dots$ (aussi noté $\|\mathbf{x}\|_1$, la "norme 1") ou encore $x_1^2+x_2^2+\dots$ (aussi noté $\|\mathbf{x}\|_2^2$, le carré de la "norme 2"). Dans ce dernier cas, il s'agit de résoudre un nouveau problème de minimisation :
|
||||
|
||||
\begin{align*}
|
||||
@ -258,17 +283,23 @@ ridge <- function(alpha, data, degre) {
|
||||
solve(gram, as.vector(t(A) %*% data$Y))
|
||||
}
|
||||
```
|
||||
|
||||
## Visulation de l'effet sur les paramètres de différents niveaux de régularisation
|
||||
|
||||
Sur notre exemple synthétique, nous affichons la fonction génératrice, le jeu de donnée et le polynôme de degré au plus sept découvert par régression ridge avec une valeur de $\alpha$ égale soit à $0$, soit à $10^{-4}$, soit à $1$.
|
||||
```{r}
|
||||
par(mfrow=c(1,3))
|
||||
coef <- ridge(0, data, 7)
|
||||
plt(data,f,main=expression(paste(plain("Degré = "), 7, plain(", "), alpha, plain(" = 0"))))
|
||||
plt(data,f,main=expression(paste(plain("Degré = "), 7, plain(", "), alpha,
|
||||
plain(" = 0"))))
|
||||
pltpoly(coef)
|
||||
coef <- ridge(1E-4, data, 7)
|
||||
plt(data,f,main=expression(paste(plain("Degré = "), 7, plain(", "), alpha, plain(" = 1E-4"))))
|
||||
plt(data,f,main=expression(paste(plain("Degré = "), 7, plain(", "), alpha,
|
||||
plain(" = 1E-4"))))
|
||||
pltpoly(coef)
|
||||
coef <- ridge(1, data, 7)
|
||||
plt(data,f,main=expression(paste(plain("Degré = "), 7, plain(", "), alpha, plain(" = 1"))))
|
||||
plt(data,f,main=expression(paste(plain("Degré = "), 7, plain(", "), alpha,
|
||||
plain(" = 1"))))
|
||||
pltpoly(coef)
|
||||
```
|
||||
Plus le coefficient de régularisation $\alpha$ est faible, moins il contraint les paramètres (c'est-à-dire, les coefficients du polynômes) à conserver de petites valeurs et plus le polynôme découvert peut être complexe, au risque de provoquer du sur-apprentissage et donc de limiter la capacité du modèle à bien prédire les étiquettes de nouvelles observations. A l'inverse, plus le coefficient de régularisation est élevé, plus le modèle découvert sera simple, au risque de sous-apprendre en ne modélisant pas convenablement les variations propres au processus qui a généré les observations.
|
||||
@ -283,12 +314,16 @@ legend("topright", legend = 0:7, col=1:8, pch=1)
|
||||
|
||||
# Validation croisée
|
||||
|
||||
## Principe de la validation croisée
|
||||
|
||||
Comment choisir la valeur du coefficient de régularisation $\alpha$ pour une régression ridge ?
|
||||
|
||||
Une possibilité est de diviser le jeu de données en deux parties, l'une utilisée pour apprendre le modèle prédictif, l'autre utilisée pour valider la qualité des prédictions sur des données qui n'ont pas été vues pendant la phase d'apprentissage. On parle de jeu d'entraînement et de jeu de validation ou de test. Cette méthode est appelée "validation croisée".
|
||||
|
||||
L'idée est de tester plusieurs valeurs de l'hyperparamètre $\alpha$ sur le jeu d'entraînement et de conserver celle qui donne les meilleurs résultats sur le jeu de test.
|
||||
|
||||
## Découpage du jeu de données en jeu d'entrainement et jeu de validation
|
||||
|
||||
Nous écrivons une fonction qui permet de diviser le jeu de données en un jeu d'entraînement et un jeu de validation. Nous lui passons en paramètre le jeu de données initial et la proportion des données conservées pour l'entraînement.
|
||||
```{r}
|
||||
xvalpart <- function(data,p) {
|
||||
@ -300,6 +335,8 @@ xvalpart <- function(data,p) {
|
||||
}
|
||||
```
|
||||
|
||||
## Application de la validation croisée à la régularisation de Tikhonov
|
||||
|
||||
Nous écrivons ensuite une fonction qui apprend plusieurs modèles de régression ridge sur le jeu d'entraînement pour des valeurs différentes de l'hyperparamètre $\alpha$ et qui retourne les coefficients du meilleur modèle avec la moyenne de la valeur absolue des erreurs commises par ce modèle sur le jeu de validation.
|
||||
```{r}
|
||||
xvalridge <- function(alphas, data, degre, p) {
|
||||
@ -322,30 +359,86 @@ pltpoly(xvalres$coef)
|
||||
|
||||
# Décomposition en valeurs singulières (SVD)
|
||||
|
||||
## Formulation du SVD comme un problème d'optimisation
|
||||
|
||||
Nous présentons une méthode générique de compression d'un tableau rectangulaire de données. Elle possède de nombreuses applications. En particulier, elle permet de calculer en un seul entraînement les régressions ridge pour toutes les valeurs possibles de l'hyperparamètre $\alpha$.
|
||||
|
||||
## Recherche d'un sous-espace qui minimise les carrés des écarts à l'espace d'origine
|
||||
|
||||
Soit un tableau de données $\mathbf{X}$ composé de $N$ observations en lignes, chacune décrite par $P$ variables en colonnes. $x_{ij}$ est la valeur de la variable $j$ pour l'observation $i$. Les vecteurs lignes forment $N$ points de l'espace $\mathbb{R}^P$. Les vecteurs colonnes forment $P$ points de l'espace $\mathbb{R}^N$. Nous cherchons à projeter le nuage des points lignes sur un sous-espace $\mathcal{H} \subset \mathbb{R}^P$, tout en minimisant les déformations.
|
||||
|
||||
Pour commencer, nous considèrons le meilleur sous-espace $\mathcal{H}$ à une dimension, c'est-à-dire une droite définie par son vecteur directeur unitaire $\mathbf{v}$ ("unitaire" signifie que sa norme est égale à $1$, soit $\mathbf{v}^T\mathbf{v}=1$). Soit $M_i$ un des $N$ points de $\mathbb{R}^P$. A ce point correspond le vecteur $\mathbf{OM_i}$ aussi noté $\mathbf{x_i}$ car ses coordonnées sont données par la i-ème ligne de $\mathbf{X}$. Soit $H_i$ la projection de $M_i$ sur la droite $\mathcal{H}$.
|
||||
|
||||
![svd1](images/svd1.jpeg)
|
||||
La longueur $OH_i$ est le produit scalaire de $\mathbf{x_i}$ et de $\mathbf{v}$.
|
||||
$$
|
||||
\[
|
||||
OH_i = \mathbf{x_i}\mathbf{v} = \sum_{j=1}^{P} x_{ij} v_j
|
||||
$$
|
||||
\]
|
||||
Nous obtenons un vecteur des $N$ projections $OH_i$ par le produit de la matrice $\mathbf{X}$ et du vecteur $\mathbf{v}$ : $\mathbf{X}\mathbf{v}$. En choisissant pour $\mathcal{H}$ le sous-espace qui minimise la somme des carrés des écarts, il faut minimiser $\sum_iM_iH_i^2$.
|
||||
|
||||
Le théorème de Pythagore donne $\sum_i M_iH_i^2 = \sum_i OM_i^2 - \sum_i OH_i^2$.
|
||||
|
||||
Puisque $\sum_i OM_i^2$ est indépendant de $\mathbf{v}$, nous devons maximiser
|
||||
$$
|
||||
\begin{equation}
|
||||
\sum OH_i^2 = (\mathbf{X}\mathbf{v})^T(\mathbf{X}\mathbf{v}) = \mathbf{v}^T \mathbf{X}^T \mathbf{X} \mathbf{v}
|
||||
$$
|
||||
\label{eq:svd-quadratic}
|
||||
\end{equation}
|
||||
...sous la contrainte $\mathbf{v}^T\mathbf{v}=1$.
|
||||
|
||||
## Matrices définies non négatives
|
||||
Nous notons $\mathbf{v_1}$ ce vecteur directeur du meilleur sous-espace de dimension 1 pour le nuage des $N$ observations de $\mathcal{R}^P$. Le meilleur sous-espace de dimension $2$ contient $\mathbf{v_1}$ et il faut le compléter avec un second vecteur unitaire $\mathbf{v_2}$, orthogonal à $\mathbf{v_1}$ et qui maximise $\mathbf{v_2}^T \mathbf{X}^T \mathbf{X} \mathbf{v_2}$. Etc.
|
||||
|
||||
Nous montrerons plus loin que $\mathbf{v_1}$ est le vecteur propre de $\mathbf{X}^T \mathbf{X}$ associé à la plus grande valeur propre $\lambda_1$, cette dernière étant justement le maximum de la forme quadratique de l'équation (\ref{eq:svd-quadratic}). De même, $\mathbf{v_2}$ est le vecteur propre de $\mathbf{X}^T \mathbf{X}$ associé à la seconde plus grande valeur propre $\lambda_2$. Etc.
|
||||
|
||||
Nous venons de voir que les vecteurs orthogonaux $\mathbf{v_1}, \mathbf{v_2},\dots, \mathbf{v_k}$ forment une base d'un sous-espace $k$-dimensionnel sur lequel peuvent être projetés les $N$ vecteurs lignes de $\mathbf{X}$ pour minimiser les carrés des écarts à l'espace d'origine qui était de dimension (au plus) $max(N,P)$.
|
||||
|
||||
Nous construirons de même des vecteurs orthogonaux $\mathbf{u_1}, \mathbf{u_2},\dots, \mathbf{u_k}$ qui forment une base d'un sous-espace $k$-dimensionnel sur lequel peuvent être projetés les $P$ vecteurs colonnes de $\mathbf{X}$ pour minimiser les carrés des écarts à l'espace d'origine qui était de dimension (au plus) $max(N,P)$.
|
||||
|
||||
Nous trouverons de façon similaire que $\mathbf{u_1}$ est le vecteur propre de $\mathbf{X} \mathbf{X}^T$ associé à la plus grande valeur propre $\lambda_1$ (cette dernière étant exactement la même que celle associée à $\mathbf{v_1}$).
|
||||
|
||||
Nous montrerons ensuite que la matrice $\mathbf{X}$ peut s'écrire comme une somme de matrices de rang 1 qui sont les produits des vecteurs $\mathbf{u}$ et $\mathbf{v}$ (on se place dans la situation où $N>P$ et $\mathbf{X}$ est de rang $P$). Il s'agit de la *décomposition en valeurs singulières* de $\mathbf{X}$.
|
||||
|
||||
\begin{equation}
|
||||
\mathbf{X} = \sum_{\alpha=1}^{P} \sqrt{\lambda_\alpha} \mathbf{u_\alpha}\mathbf{v_\alpha}^T
|
||||
\label{eq:svd}
|
||||
\end{equation}
|
||||
|
||||
Nous obtenons une reconstitution approchée de rang $k$ de $\mathbf{X}$ en ne conservant dans l'équation (\ref{eq:svd}) que les $k$ plus grandes valeurs singulières $\sqrt{\lambda_1},\sqrt{\lambda_2}, \dots, \sqrt{\lambda_k}$ et en annulant toutes les autres.
|
||||
|
||||
## Illustrations du SVD avec la compression d'une image
|
||||
|
||||
Considérons l'image d'un hortensia en fleurs.
|
||||
|
||||
![hortensia](images/hortensia.jpg)\
|
||||
|
||||
Nous convertissons cette image, originellement au format JPEG, en un format en niveaux de gris, simple à manipuler, appelé PGM (*Portable Grey Map*). Dans ce format non compressé, l'image est représentée par une matrice dont chaque valeur, comprise entre 0 et 1, représente le niveau de gris d'un pixel. Nous opérons cette transformation grâce au programme *imagemagick* avec la commande `convert hortensia.jpg hortensia.pgm`.
|
||||
|
||||
Ensuite, nous appliquons la décomposition en valeurs singulières à cette matrice qui représente l'image en niveaux de gris. Nous utilisons le résultat du SVD pour reconstituer une version compressée de l'image en ne conservant qu'un certain nombre des plus grandes valeurs singulières.
|
||||
|
||||
```{r, warning=FALSE}
|
||||
library(pixmap) ; # chargement du package pixmap qui peut être installé avec la
|
||||
# commande install.packages("pixmap");
|
||||
img = read.pnm("images/hortensia.pgm");
|
||||
X = img@grey; # chaque entrée de la matrice représente une intensité de gris
|
||||
# comprise entre 0 et 1
|
||||
rm(img);
|
||||
|
||||
compress_SVD <- function(X, nd) {
|
||||
svdX <- svd(X);
|
||||
svdX$u[,1:nd] %*% diag(svdX$d[1:nd]) %*% t(svdX$v[,1:nd]);
|
||||
}
|
||||
|
||||
print_grey_img <- function(Y,...) {
|
||||
Y[Y<0]<-0; # après reconstruction approchée à partir du résultat du svd le
|
||||
Y[Y>1]<-1; # domaine [0,1] de la matrice initiale peut ne plus être respecté
|
||||
image(t(apply(Y,2,rev)), col=grey(seq(0,1,length=256)), axes=FALSE, ...)
|
||||
}
|
||||
|
||||
par(mfrow=c(2,2));
|
||||
print_grey_img(X, main="image originale d=256");
|
||||
print_grey_img(compress_SVD(X,16), main="d=16");
|
||||
print_grey_img(compress_SVD(X,32), main="d=32");
|
||||
print_grey_img(compress_SVD(X,64), main="d=64");
|
||||
```
|
||||
|
||||
## Métrique associée à une matrice définie non négative
|
||||
|
||||
Avant de résoudre ce problème d'optimisation, nous rappelons quelques propriétés des matrices symétriques définies non négatives. Une matrice définie non négative (souvent noté PSD pour "positive semi-definite") $\mathbf{M}$ représente une métrique car elle définit un produit scalaire et donc une géométrie, c'est-à-dire qu'elle donne un sens aux notions de distance et d'angle.
|
||||
|
||||
@ -410,25 +503,100 @@ Enfin, l'angle formé entre $\mathbf{x}$ et $\mathbf{Mx}$ est inférieur ou éga
|
||||
|
||||
Ainsi, le vecteur résultat $\mathbf{Mx}$ est contraint de rester du même côté que $\mathbf{x}$ de l'hyperplan perpendiculaire à $\mathbf{x}$ qui sépare l'espace en deux. Nous comprenons que le concept de matrice symétrique définie non négative est une généralisation pour un espace multidimensionnel du concept de nombre positif sur la droite réelle.
|
||||
|
||||
## Dérivation de la décomposition en valeur singulière
|
||||
## Optimisation sous contraintes par la méthode des multiplicateurs de Lagrange
|
||||
|
||||
Après cette parenthèse sur la notion de métrique associée à une matrice définie non négative, nous reprenons la dérivation de la décomposition en valeurs singulières.
|
||||
### Présentation de la méthode sur un exemple
|
||||
|
||||
Nous notons $\mathbf{v_1}$ le vecteur directeur du meilleur sous-espace de dimension 1 pour le nuage des $N$ observations de $\mathcal{R}^P$. Le meilleur sous-espace de dimension $2$ contient $\mathbf{v_1}$ et il faut le compléter avec un second vecteur unitaire $\mathbf{v_2}$, orthogonal à $\mathbf{v_1}$ et qui maximise $\mathbf{v_2}^T \mathbf{X}^T \mathbf{X} \mathbf{v_2}$.
|
||||
Avant de pouvoir présenter la preuve de la décomposition en valeurs singulières, nous devons introduire une stratégie souvent très utile pour résoudre un problème d'optimisation sous contraintes : la méthode dite des multiplicateurs de Lagrange.
|
||||
|
||||
Nous montrons maintenant que $\mathbf{v_1}$ est le vecteur propre de $\mathbf{X}^T\mathbf{X}$ associé à la plus grande valeur propre $\lambda_1$.
|
||||
Prenons un exemple simple à deux dimensions. Nous cherchons à maximiser $F(\mathbf{x}) = x_1^2 + x_2^2$ sous la contrainte $K(\mathbf{x})=b$, avec $K(\mathbf{x}) = a_1 x_1 + a_2 x_2$. C'est-à-dire que le point solution $\mathbf{x^*}$ doit être situé sur la ligne $K$.
|
||||
|
||||
Le résultat est sans difficulté plus général. Nous le prouvons pour toute matrice symétrique $\mathbf{A}$ (non seulement $\mathbf{X}^T\mathbf{X}$) et toute métrique de $\mathcal{R}^P$ représentée par une matrice symétrique définie non négative $\mathbf{M}$ (non seulement la martice identité $\mathbf{I}$).
|
||||
![lagrange](images/lagrange.jpg)
|
||||
Sur cet exemple, les lignes de niveaux, ou contours, de $F$ sont des cercles centrés sur l'origine du repère cartésien.
|
||||
La solution $\mathbf{x*}$ appartient au contour de $F$ tangent à la contrainte $K$. Il faut donc que leurs gradients soient alignés : $\nabla F = \lambda \nabla K$.
|
||||
|
||||
\[
|
||||
\nabla F =
|
||||
\left( \begin{array}{c}
|
||||
\partial F / \partial x_1 \\
|
||||
\partial F / \partial x_2
|
||||
\end{array} \right)
|
||||
=
|
||||
\left( \begin{array}{c}
|
||||
2 x_1 \\
|
||||
2 x_2
|
||||
\end{array} \right)
|
||||
\quad ; \quad
|
||||
\nabla K =
|
||||
\left( \begin{array}{c}
|
||||
\partial K / \partial x_1 \\
|
||||
\partial K / \partial x_2
|
||||
\end{array} \right)
|
||||
=
|
||||
\left( \begin{array}{c}
|
||||
a_1 \\
|
||||
a_2
|
||||
\end{array} \right)
|
||||
\]
|
||||
Nous avons donc un système de trois équations à trois inconnues ($x_1$, $x_2$ et $\lambda$) :
|
||||
|
||||
\[
|
||||
\begin{cases}
|
||||
2 x_1 = \lambda a_1 \\
|
||||
2 x_2 = \lambda a_2 \\
|
||||
a_1 x_1 + a_2 x_2 = b
|
||||
\end{cases}
|
||||
\]
|
||||
|
||||
En résolvant ce système par simples substitutions, nous trouvons la solution :
|
||||
|
||||
\[
|
||||
\begin{cases}
|
||||
x_1^* = \frac{a_1 b}{a_1^2 + a_2^2} \\
|
||||
x_2^* = \frac{a_2 b}{a_1^2 + a_2^2} \\
|
||||
\lambda^* = \frac{2b}{a_1^2 + a_2^2}
|
||||
\end{cases}
|
||||
\]
|
||||
Ce même calcul s'écrit d'une façon plus systématique en rassemblant les équations $\nabla F = \lambda \nabla K$ et $K(\mathbf{x})=b$ par l'introduction du Lagrangien :
|
||||
|
||||
\[
|
||||
\mathcal{L}(\mathbf{x},\lambda) = F(\mathbf{x}) - \lambda(K(\mathbf{x})-b)
|
||||
\]
|
||||
|
||||
En effet, en annulant les dérivées partielles de $\mathcal{L}$, nous retrouvons les équations $\nabla F = \lambda \nabla K$ et $K(\mathbf{x})=b$ :
|
||||
|
||||
\[
|
||||
\begin{array}{lll}
|
||||
\partial \mathcal{L} / \partial x_1 = 0 &\Leftrightarrow &\partial F / \partial x_1 = \lambda \partial K / \partial x_1\\
|
||||
\partial \mathcal{L} / \partial x_2 = 0 &\Leftrightarrow &\partial F / \partial x_2 = \lambda \partial K / \partial x_2\\
|
||||
\partial \mathcal{L} / \partial \lambda = 0 &\Leftrightarrow &K(\mathbf{x}) = b\\
|
||||
\end{array}
|
||||
\]
|
||||
|
||||
Ainsi, le problème d'optimisation sous contrainte exprimé en fonction de $F$ et $K$ peut s'écrire comme un problème d'optimisation non contraint, en fonction de $\mathcal{L}$, dans un espace de plus grande dimension que celui d'origine puisque s'ajoute aux dimensions de $\mathbf{x}$ celle de $\lambda$.
|
||||
|
||||
### Interprétation des multiplicateurs de Lagrange
|
||||
|
||||
Nous allons montrer que la dérivée du gain maximum par rapport au niveau de contrainte $b$ est égale au multiplicateur de Lagrange $\lambda$. Autrement dit, avec $M=F(\mathbf{x^*})$, nous avons $dM/d\lambda=\lambda^*$ : un petit incrément $db$ de $b$ produit un incrément $\lambda^* db$ du gain maximum $M$.
|
||||
|
||||
## Dérivation de la décomposition en valeurs singulières
|
||||
|
||||
Après ces préambules sur la notion de métrique associée à une matrice définie non négative et sur la méthode d'optimisation dite des multiplicateurs de Lagrange, nous reprenons la dérivation de la décomposition en valeurs singulières.
|
||||
|
||||
Rappelons que nous avons noté $\mathbf{v_1}$ le vecteur directeur du meilleur sous-espace de dimension 1 pour le nuage des $N$ observations de $\mathcal{R}^P$. Nous montrons que $\mathbf{v_1}$ est le vecteur propre de $\mathbf{X}^T\mathbf{X}$ associé à la plus grande valeur propre $\lambda_1$.
|
||||
|
||||
Le résultat est sans difficulté plus général. Nous le prouvons pour toute matrice symétrique $\mathbf{A}$ (non seulement $\mathbf{X}^T\mathbf{X}$) et toute métrique de $\mathcal{R}^P$ représentée par une matrice symétrique définie non négative $\mathbf{M}$ (non seulement la matrice identité $\mathbf{I}$).
|
||||
|
||||
Nous rappelons que $\mathbf{v}^T\mathbf{A}\mathbf{v} = \Sigma a_{i,j}v_iv_j$. Ainsi, comme $\mathbf{A}$ et $\mathbf{M}$ sont symétriques (i.e., $a_{i,j}=a_{j,i}$ et $m_{i,j}=m_{j,i}$), les dérivées partielles des formes quadratiques ont les formes suivantes :
|
||||
$$
|
||||
\[
|
||||
\frac{\partial \mathbf{v}^T\mathbf{A}\mathbf{v}}{\partial \mathbf{v}}=2\mathbf{A}\mathbf{v} \quad \text{et} \quad \frac{\partial \mathbf{v}^T\mathbf{M}\mathbf{v}}{\partial \mathbf{v}}=2\mathbf{M}\mathbf{v}
|
||||
$$
|
||||
\]
|
||||
Pour trouver le maximum de $\mathbf{v}^T\mathbf{A}\mathbf{v}$ en intégrant la contrainte unitaire sur $\mathbf{v}$ (i.e., $\mathbf{v}^T\mathbf{M}\mathbf{v}=1$), nous annulons les dérivées du langrangien $\mathcal{L}$ :
|
||||
|
||||
$$
|
||||
\[
|
||||
\mathcal{L} = \mathbf{v}^T\mathbf{A}\mathbf{v} - \lambda (\mathbf{v}^T\mathbf{M}\mathbf{v} - 1)
|
||||
$$
|
||||
\]
|
||||
|
||||
\begin{align*}
|
||||
& \frac{\partial \mathcal{L}}{\partial \mathbf{v}} = 0 \\
|
||||
= \{& \text{voir calcul des dérivées ci-dessus} \} \\
|
||||
@ -439,7 +607,7 @@ $$
|
||||
& \lambda = \mathbf{v}^T\mathbf{A}\mathbf{v}
|
||||
\end{align*}
|
||||
|
||||
Nous découvrons ainsi que la valeur du multiplicateur de Lagrange $\lambda$ est le maximum recherché. Par ailleurs, nous avons :
|
||||
Nous découvrons que la valeur du multiplicateur de Lagrange $\lambda$ est le maximum recherché. Par ailleurs, nous avons :
|
||||
|
||||
\begin{align*}
|
||||
& \mathbf{A}\mathbf{v} = \lambda\mathbf{M}\mathbf{v} \\
|
||||
@ -451,23 +619,23 @@ Donc $\mathbf{v}$ est le vecteur propre de $\mathbf{M}^{-1}\mathbf{A}$ associé
|
||||
|
||||
Nous cherchons ensuite $\mathbf{v_2}$, unitaire ($\mathbf{v_2}^T\mathbf{M}\mathbf{v_2}=1$), orthogonal à $\mathbf{v_1}$ ($\mathbf{v_1}^T\mathbf{M}\mathbf{v_2}=0$) et qui maximise $\mathbf{v_2}^T\mathbf{A}\mathbf{v_2}$. Pour ce faire, nous annulons les dérivées du Langrangien ci-après.
|
||||
|
||||
$$
|
||||
\[
|
||||
\mathcal{L} = \mathbf{v_2}^T\mathbf{A}\mathbf{v_2} - \lambda_2 (\mathbf{v_2}^T\mathbf{M}\mathbf{v_2} - 1) - \mu_2\mathbf{v_2}^T\mathbf{M}\mathbf{v_1}
|
||||
$$
|
||||
\]
|
||||
En cours de rédaction...
|
||||
|
||||
# Régression avec régularisation de Tikhonov et SVD
|
||||
|
||||
# Validation croisée "un contre tous" (leave-one-out-cross-validation, LOOCV) et régression régularisée
|
||||
# Validation croisée "un contre tous" appliquée à la régression régularisée
|
||||
|
||||
# Interprétation d'un modèle de régression linéraire
|
||||
|
||||
## Signification des coefficients
|
||||
|
||||
## Exemple sur un dataset
|
||||
|
||||
## Intervalles de confiances et approche par bootstrap
|
||||
|
||||
## Exemple sur un dataset
|
||||
|
||||
# Estimateurs par maximum de vraissemblance
|
||||
|
||||
## Application aux paramètres d'une loi normale uni-dimensionnelle
|
||||
@ -478,9 +646,7 @@ Permet d'introduire les notions de biais et de variance minimale.
|
||||
|
||||
## Vraissemblance conditionnelle pour la régression linéaire
|
||||
|
||||
## Interprétation bayésienne de la régularisation commme distribution a priori des paramètres
|
||||
|
||||
# Régularisation et sélection de variable avec l'approche LASSO
|
||||
## Interprétation bayésienne de la régularisation commme distribution a priori sur les paramètres
|
||||
|
||||
# Régression logistique
|
||||
|
||||
@ -492,6 +658,8 @@ Permet d'introduire les notions de biais et de variance minimale.
|
||||
|
||||
# Relations générales entre biais, variance, nombre d'observations et complexité du modèle
|
||||
|
||||
# Modèles parcimonieux et régularisation LASSO
|
||||
|
||||
# Ensembles de modèles
|
||||
|
||||
## Effets sur le biais et la variance d'une approche par ensembles de modèles
|
||||
|
BIN
images/hortensia.jpg
Normal file
BIN
images/hortensia.jpg
Normal file
Binary file not shown.
After Width: | Height: | Size: 23 KiB |
118
images/hortensia.pgm
Normal file
118
images/hortensia.pgm
Normal file
File diff suppressed because one or more lines are too long
BIN
images/lagrange.jpg
Normal file
BIN
images/lagrange.jpg
Normal file
Binary file not shown.
After Width: | Height: | Size: 110 KiB |
Loading…
Reference in New Issue
Block a user