Nous avons le problème: en supposant que: \ sum_ {i = 1} ^ nx_ix_i ^ T = \ diag (\ sigma_1 ^ 2, ..., \ sigma_d ^ 2).n Σ i=1xix T i =diag(σ 2 1 ,...,Σ 2 d ).
Existe-t-il une solution sous forme fermée dans ce cas?
J'ai cela:
Nous avons le problème: en supposant que: \ sum_ {i = 1} ^ nx_ix_i ^ T = \ diag (\ sigma_1 ^ 2, ..., \ sigma_d ^ 2).n Σ i=1xix T i =diag(σ 2 1 ,...,Σ 2 d ).
Existe-t-il une solution sous forme fermée dans ce cas?
J'ai cela:
Réponses:
Je vais passer par la dérivation de @ cardinal de la solution de lasso de forme fermée lorsque , trouvé ici , avec des modifications mineures.
Je suppose que pour tout . Ceci est justifié car si nous avons un cela nous indique que la ème colonne de est tout 0, et je pense qu'il est raisonnable d'exclure un tel cas. Je vais laisser . Notez que cela signifie également que est de rang complet et que la solution OLS est définie de manière unique.i σ 2 i = 0 i X X T X = D X β
Je vais également modifier votre notation pour mieux la faire correspondre dans la réponse à laquelle je fais référence. À cette fin, je vais résoudre
C'est identique à votre problème mais je peux ajouter plus de détails ici si vous le souhaitez.
Suite à la dérivation de @ cardinal, nous avons besoin de résoudre
Notant que la solution OLS est , nous avons cela
Nous chaque séparément, afin de pouvoir résoudre chaque terme de cette somme séparément. Cela signifie que nous devons minimiser où
Après un argument complètement analogue à la réponse liée, nous constatons que
De plus, donc il nous reste
il s'avère donc qu'un prédicteur est mis à zéro exactement quand il le ferait si la matrice de conception était orthonormée, pas seulement orthogonale. Nous pouvons donc voir que dans ce cas avec , la sélection des variables n'est pas différente de si , mais les coefficients réels sont mis à l'échelle en fonction des variances prédictives.
Pour terminer, je vais transformer cette solution en une solution qui ressemble à la vôtre, ce qui signifie que nous devons multiplier par quelque chose pour obtenir . Si alors nous avons cela
depuis .
Notant que exactement quand
nous voyons que nous pourrions alternativement exprimer comme
C'est donc très proche de ce que vous aviez mais pas exactement la même chose.
J'aime toujours vérifier les dérivations comme celle-ci par rapport à des bibliothèques bien connues si possible, alors voici un exemple dans R:
## generating `x`
set.seed(1)
n = 1000
p = 5
sigma2s = 1:p
x = svd(matrix(rnorm(n * p), n, p))$u %*% diag(sqrt(sigma2s))
## check this
# t(x) %*% x
## generating `y`
betas = 1:p
y = x %*% betas + rnorm(nrow(x), 0, .5)
lambda = 2
## using a well-known library to fit lasso
library(penalized)
penalized(y, x, lambda1 = lambda)@penalized
## using closed form solution
betahat = lm(y ~ x - 1)$coef
ifelse(betahat > 0, 1, -1) * sapply(abs(betahat) - lambda / sigma2s, function(v) max(c(0, v)))