Solution de forme fermée au problème du lasso lorsque la matrice de données est diagonale


13

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 ).

minwRd(1ni=1n(w,xiyi)2+2λ||w||1),
i=1nxixiT=diag(σ12,...,σd2).

Existe-t-il une solution sous forme fermée dans ce cas?

J'ai cela:

(XTX)1=diag(σ12,...,σd2),
et donc je pense que la réponse est :
wj=yjmax{0,1λn|yj|},
pour yj=i=1nyixijσi2 , mais je ne suis pas sûr.

Réponses:


9

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.XTX=I

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 βσi2>0iσi2=0iXXTX=DXβ^

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

β^λ=argminβRp12||YXβ||22+λ||β||1.

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

β^λ=argmin 12(YTY2YTXβ+βTXTXβ)+λ||β||1

=argmin YTXβ+12βTDβ+λ||β||1.

Notant que la solution OLS est , nous avons cela β^=(XTX)1XTY=D1XTY

β^λ=argmin β^TDβ+12βTDβ+λ||β||1

=argmin j=1pβ^jβjσj2+σj22βj2+λ|βj|.

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ù βjLj

Lj=β^jβjσj2+σj22βj2+λ|βj|.

Après un argument complètement analogue à la réponse liée, nous constatons que

(β^λ)j=sgn(β^j)(|β^j|λσj2)+.

De plus, donc il nous reste β^=D1XTYβ^j=XjTYσj2

(|β^j|λσj2)+=1σj2(|XjTY|λ)+

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.XjXTX=DIXTX=Iβ^λ

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 β^β^λ(β^λ)j0

(β^λ)j=sgn(β^j)(|β^j|λσj2)=β^jsgn(β^j)λσj2

=β^j(1λσj2|β^j|)

depuis .a|a|=sgn(a)

Notant que exactement quand (β^λ)j=0

|β^j|λσj20|β^j|λσj21λσj2|β^j|1λσj2|β^j|0,

nous voyons que nous pourrions alternativement exprimer comme β^λ

(β^λ)j=β^j(1λσj2|β^j|)+.

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)))
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.