Introduction de la standardisation des variables explicatives dans l'inférence des paramètres de la régression Ridge par construction explicite de la matrice de Gram. La version de l'inférence qui utilise le SVD donne bien les mêmes paramètres pour une même valeur de l'hyperparamètre de régularisation.

This commit is contained in:
Pierre-Edouard Portier 2021-11-30 18:44:47 +01:00
parent 8d94107206
commit 3c181c2c78
1 changed files with 8 additions and 2 deletions

View File

@ -4,10 +4,16 @@
# 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.gram <- function(alpha, data, degre) {
A <- outer(c(data$X), 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)
}
ridge.svd <- function(alpha, data, degre) {