diff --git a/03_tikhonov.R b/03_tikhonov.R index 2a47c5d..b7adce8 100644 --- a/03_tikhonov.R +++ b/03_tikhonov.R @@ -2,9 +2,14 @@ # un polynôme de degré fixé et avec l'ajout d'un facteur de régularisation en # norme L2 dont l'importance est contrôlée par l'hyperparamètre alpha. ridge <- function(alpha, data, degre) { - xs <- c(data$X) - A <- outer(xs, 0:degre, "^") + A <- scale(outer(c(data$X), 1:degre, "^")) + Y <- data$Y + Ym <- mean(Y) + Y <- Y - Ym gram <- t(A) %*% A diag(gram) <- diag(gram) + alpha - solve(gram, as.vector(t(A) %*% data$Y)) + coef <- solve(gram, as.vector(t(A) %*% Y)) + coef <- coef / attr(A,"scaled:scale") + inter <- Ym - coef %*% attr(A,"scaled:center") + coef <- c(inter, coef) } \ No newline at end of file diff --git a/03_tikhonov.Rmd b/03_tikhonov.Rmd index 57400ef..59b8904 100644 --- a/03_tikhonov.Rmd +++ b/03_tikhonov.Rmd @@ -51,7 +51,22 @@ En pratique, il s'agit donc d'ajouter une petite valeur positive $\lambda$ aux # Standardisation -Remarquons que l'effet de la régression Ridge est de contraindre les coefficients de la régression linéaire en les contractant vers 0. Comme cette contraction se fait en fonction des carrés des valeurs des coefficients, il est important que les différentes variables soient sur une même échelle, sans quoi l'importance de l'influence d'une variable sur la régularisation dépendrait de son échelle. +La régression Ridge contraint les coefficients de la régression linéaire en les contractant vers 0. L'importance de la contraction est proportionnelle au carré des valeurs des coefficients. Ainsi, il est important que les domaines des différentes variables partage une même échelle. Sinon, l'intensité de l'influence d'une variable sur la régularisation dépendrait de son échelle. + +Avant d'inférer les valeurs des paramètres du modèle linéaire, nous standardisons les variables pour qu'elles soient toutes sur une échelle comparable. Chaque variable $\mathbf{x_j}$ est centrée par soustraction de sa moyenne $\bar{x_j}$ puis standardisée par division par son écart type $\sigma_j$. Notons $\mathbf{z_j}$ la version standardisée de la variable $\mathbf{x_j}$. +$$ +z_{ij} = \frac{x_{ij}-\bar{x_j}}{\sigma_j} +$$ +Nous pouvons également centrer ou standardiser la cible. Supposons que nous choisissions de seulement centrer la cible. Nous exprimons la relation entre les paramètres inférés sur les variables standardisées et leurs valeurs sur l'échelle des variables non transformées. + +\begin{align*} + & \mathbf{\hat{y_i}} - \mathbf{\bar{y}} = \sum_{j=1}^{p} \hat{\beta_j} \left( \frac{x_{ij}-\bar{x_j}}{\sigma_j} \right) \\ += \{& \text{arithmétique} \} \\ + & \mathbf{\hat{y_i}} = \left( \mathbf{\bar{y}} - \sum_{j=1}^{p} \hat{\beta_j} \frac{\bar{x_j}}{\sigma_j} \right) + + \sum_{j=1}^{p} \frac{\hat{\beta_j}}{\sigma_j} x_{ij} \\ +\end{align*} + +Pour passer du modèle inféré sur les variables standardisées et la cible normalisée aux valeurs des paramètres sur les domaines originaux des variables, il faut donc ajouter une ordonnée à l'origine ("intercept") $\beta_0 = \mathbf{\bar{y}} - \sum_{j=1}^{p} \hat{\beta_j} \frac{\bar{x_j}}{\sigma_j}$ et remettre à l'échelle chaque paramètre $\beta_j$ en le multipliant par le facteur $\frac{1}{\sigma_j}$. # Visulation de l'effet sur les paramètres de différents niveaux de régularisation