diff --git a/18_kernel_ridge_regression.Rmd b/18_kernel_ridge_regression.Rmd index 117d5a2..be0d407 100644 --- a/18_kernel_ridge_regression.Rmd +++ b/18_kernel_ridge_regression.Rmd @@ -119,7 +119,7 @@ $$ & \hat{y} = \mathbf{k(x)}^T \left( \mathbf{K} + \lambda \mathbf{I_n} \right)^{-1} \mathbf{y} \end{aligned} $$ -Ainsi, l'approche non paramétrique par juxtaposition des similarités d'une observation avec chaque observation du jeu d'entraînement correspond à une régression ridge après application de la transformation $\phi$ aux observations. Nous remarquons qu'il n'est pas nécessaire d'opérer explicitement cette transformation, seules sont nécessaires les valeurs des produits scalaires $\phi(\mathbf{x_i})^T\phi(\mathbf{x_j})$. +Ainsi, l'approche non paramétrique par juxtaposition des similarités d'une observation avec chaque observation du jeu d'entraînement correspond à une régression ridge après application de la transformation $\phi$ aux observations. Nous remarquons qu'il n'est pas nécessaire d'opérer explicitement cette transformation, seules sont nécessaires les valeurs des produits scalaires $\phi(\mathbf{x_i})^T\phi(\mathbf{x_j})$. En fait, l'application explicite de la transformation $\phi$ serait souvent impossible. Par exemple, dans le cas d'un noyau gaussien, $\phi$ projette vers un espace de dimension infinie... # Calcul des paramètres de la régression ridge à noyau @@ -160,7 +160,7 @@ $$ $$ Ainsi, après avoir effectuée la décomposition en valeurs propres de $\mathbf{K}$ en $\mathcal{O}(n^3)$, le calcul de $\boldsymbol\alpha_\lambda$ pour une valeur $\lambda$ donnée se fait en $\mathcal{O}(n^2)$. -# Validation croisée un-contre-tous (LOOCV) +# LOOCV pour le choix de l'hyper-paramètre $\lambda$ Pour la régression ridge, nous avons découvert une forme de la validation croisée un-contre-tous (LOOCV) qui peut être calculée à partir d'un seul calcul des paramètres sur tout le jeu d'entraînement : $$ @@ -171,4 +171,61 @@ Avec $h_i$ le i-ème élément sur la diagonale de la matrice chapeau. Le même raisonnement nous mène à découvrir une expression similaire pour la régression ridge à noyau : $$ LOO_\lambda = \frac{1}{n} \sum_{i=1}^{n} \left( \frac{y_i - \left(\mathbf{K}\mathbf{G}^{-1} \mathbf{y}\right)_i}{1 - \left(\mathbf{K}\mathbf{G}^{-1}\right)_{ii}} \right)^2 -$$ \ No newline at end of file +$$ + +Nous simplifions l'expression $\mathbf{K}\mathbf{G}^{-1}$ en utilisant la décomposition en éléments propres de $\mathbf{K}$. +$$ +\begin{aligned} + & \mathbf{K}\mathbf{G}^{-1} \\ += \{& \text{Décomposition en éléments propres de $\mathbf{K}$} \} \\ + & \mathbf{Q}\mathbf{\Lambda}\mathbf{Q}^T \mathbf{Q} \left( \mathbf{\Lambda} + \lambda \mathbf{I_n} \right)^{-1} \mathbf{Q}^T \\ += \{& \text{$\mathbf{Q}$ est orthogonale, donc $\mathbf{Q}^T\mathbf{Q} = \mathbf{I}$} \} \\ + & \mathbf{Q}\mathbf{\Lambda}\left( \mathbf{\Lambda} + \lambda \mathbf{I_n} \right)^{-1} \mathbf{Q}^T \\ += \{& \text{Astuce arithmétique pour faire apparaître une simplification.} \} \\ + & \mathbf{Q}\left(\mathbf{\Lambda} + \lambda \mathbf{I_n} - \lambda \mathbf{I_n}\right)\left( \mathbf{\Lambda} + \lambda \mathbf{I_n} \right)^{-1} \mathbf{Q}^T \\ += \{& \text{$\left(\mathbf{\Lambda} + \lambda \mathbf{I_n} - \lambda \mathbf{I_n}\right)$ et $\left( \mathbf{\Lambda} + \lambda \mathbf{I_n} \right)^{-1}$ sont des matrices diagonales.} \\ +\phantom{=}\phantom{\{}& \text{$+$ et $\times$ sont des opérateurs commutatifs et associatifs pour les matrices diagonales.} \\ +\phantom{=}\phantom{\{}& \mathbf{G}^{-1} = \mathbf{Q} \left( \mathbf{\Lambda} + \lambda \mathbf{I_n} \right)^{-1} \mathbf{Q}^T\} \\ + & \mathbf{I_n} - \lambda\mathbf{G}^{-1} \\ +\end{aligned} +$$ + +Nous simplifions le numérateur de $LOO_\lambda$ : +$$ +\begin{aligned} + & y_i - \left(\mathbf{K}\mathbf{G}^{-1} \mathbf{y}\right)_i \\ += \{& \mathbf{K}\mathbf{G}^{-1} = \mathbf{I_n} - \lambda\mathbf{G}^{-1} \} \\ + & \left( \lambda\mathbf{G}^{-1}\mathbf{y} \right)_i +\end{aligned} +$$ + +Nous simplifions le dénominateur de $LOO_\lambda$ : +$$ +\begin{aligned} + & 1 - \left(\mathbf{K}\mathbf{G}^{-1}\right)_{ii} \\ += \{& \mathbf{K}\mathbf{G}^{-1} = \mathbf{I_n} - \lambda\mathbf{G}^{-1} \} \\ + & \left( \lambda\mathbf{G}^{-1} \right)_{ii} +\end{aligned} +$$ + +Nous obtenons une nouvelle expression simplifiée de $LOO_\lambda$ : +$$ +LOO_\lambda = \frac{1}{n} \sum_{i=1}^{n} \left( \frac{\alpha_i}{\left(\mathbf{G}^{-1}\right)_{ii}} \right)^2 +$$ + +Montrons comment calculer efficacement $\left(\mathbf{G}^{-1}\right)_{ii}$ en calculant l'expression d'un élément de la matrice $\mathbf{G}^{-1}$ : +$$ +\begin{aligned} + & \left(\mathbf{G}^{-1}\right)_{ij} \\ += \{& \text{Définition de $\mathbf{G}^{-1}$ en fonction de la décomposition en éléments propres de $\mathbf{K}$.} \} \\ + & \left(\mathbf{Q} \left( \mathbf{\Lambda} + \lambda \mathbf{I_n} \right)^{-1} \mathbf{Q}^T\right)_{ij} \\ += \{& \text{Définition du produit matricielle.} \} \\ + & \sum_{k=1}^{n} \frac{Q_{ik}Q_{jk}}{\Lambda_{kk} + \lambda} +\end{aligned} +$$ + +Nous pouvons donc calculer $\left(\mathbf{G}^{-1}\right)_{ii}$ en $\mathcal{O}(n)$ et $LOO_\lambda$ en $\mathcal{O}(n^2)$. + +# Choix de l'hyper-paramètre $\sigma^2$ + +Il est possible de montrer qu'une fois les données standardisées (i.e., moyenne nulle et écart-type unité), la moyenne de la distance euclidienne entre deux points est égale à deux fois la dimension de l'espace des observations : $E\left[\|\mathbf{x_j}-\mathbf{x_i}\|^2\right] = 2d$. Ainsi, $\sigma^2=d$ est un choix raisonnable pour permettre au noyau gaussien de bien capturer les similarités entre points (i.e., les points les plus proches auront une similarité proche de $1$, tandis que les points les plus éloignés auront une similarité proche de $0$). \ No newline at end of file