diff --git a/15_loocv.R b/15_loocv.R index 03b6635..f77884d 100644 --- a/15_loocv.R +++ b/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) {