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:
parent
8d94107206
commit
3c181c2c78
10
15_loocv.R
10
15_loocv.R
@ -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) {
|
||||
|
Loading…
Reference in New Issue
Block a user