L'idée de cette expérimentation provient de la la référence [@rupp2015machine] qui introduit les concepts essentiels du machine learning pour un public de spécialistes en mécanique quantique.
## Analyse de l'effet du paramètre $\sigma^2$ pour un noyau gaussien
Générer des points $x_i$, par exemple entre $-5$ et $5$.
```{r}
X <- seq(from=-5,to=5,by=0.1)
```
Générer la matrice des similarités (ou noyau) $\mathbf{K}$, résultat de l'application de la fonction $k$ à chaque paire de points $(x_i,x_j)$. Le faire pour $\sigma$ égal à $0.5$, $1$ ou $2$.
```{r}
K05 <- gausskernel(X,0.5^2)
K1 <- gausskernel(X,1)
K2 <- gausskernel(X,2^2)
```
Afficher la courbe du noyau en $0$, c'est-à-dire $k(0,x)$.
## Régression ridge à noyau sur un petite exemple synthétique
Soit un jeu de données synthétique construit à partir de la fonction $cos(x)$ appliquée aux points $\left\{0,\pi/8,2\pi/8,3\pi/8,4\pi/8\right\}$
```{r}
X <- pi/8 * seq(0,4)
y <- cos(X)
```
Apprendre un modèle par régression ridge à noyau sur ce jeu de données. Dans un premier temps :
- considérer le jeu de données non bruité
- fixer l'hyper-paramètre de régularisation $\lambda$ presque à zéro (e.g., $10^{-14}$)
- comparer différentes valeurs de l'hyper-paramètre $\sigma$ qui contrôle le rayon du noyau gaussien (e.g., $0.01, 0.5, 10^4$)
- Afficher à chaque fois : le jeu de données, la courbe théorique, la courbe prédite, les courbes gaussiennes centrées sur chaque observation du jeu d'entraînement et dont la combinaison linéaire est la courbe prédite.
```{r}
plotEachGaussian <-
function(X,y,km)
{
xplt <- seq(0,pi/2,by=0.01)
# plot the individual gaussian associated with each observation in X
km <- krr(X,y,sigma2=(10^4)^2,lambdas=c(10^(-14)))
plotEachGaussian(X,y,km)
```
Ensuite, vérifier le bon fonctionnement de l'approche proposée en cours qui fixe $\sigma^2$ au nombre de dimensions du jeu de données et qui détermine la valeur de $\lambda$ par validation croisée un contre tous. Discuter les rôles complémentaires des hyperparamètres $\sigma^2$ et $\lambda$.
```{r}
km <- krr(X,y)
plotEachGaussian(X,y,km)
```
De nombreuses expériences complémentaires sont intéressantes à mener (comme étudier l'effet de l'ajout de bruit, etc.).