Quel est le plus petit

14

β^λ=argminβRp12nyXβ22+λβ1,
ithxiRpXRn×pyii=1,n

Nous savons que pour λ1nXTy , l'estimation au lasso β^λ=0 . (Voir, par exemple, la portée du paramètre de réglage Lasso et Ridge .) Dans une autre notation, cela exprime que λmax=1nXTy . Notez que λmax=supβ^λ0λ.Nous pouvons voir cela visuellement avec l'image suivante affichant le chemin de la solution de lasso:

chemin de la solution de lasso

Notez qu'à l' extrême droite du graphique, tous les coefficients sont nuls. Cela se produit au point λmax décrit ci-dessus.

À partir de ce graphique, nous remarquons également qu'à l' extrême gauche, tous les coefficients sont différents de zéro: quelle est la valeur de à laquelle tout composant de est initialement nul? Autrement dit, quelle est égal, en fonction de et ? Je suis intéressé par une solution de formulaire fermé. En particulier, je ne suis pas intéressé par une solution algorithmique, comme, par exemple, suggérant que LARS pourrait trouver le nœud grâce au calcul.λβ^λ

λmin=minjs.t.β^j=0λ
Xy

Malgré mes intérêts, il semble que ne soit pas disponible sous forme fermée, car sinon, les packages de calcul au lasso en profiteraient probablement lors de la détermination de la profondeur du paramètre de réglage lors de la validation croisée. À la lumière de cela, je suis intéressé par tout ce qui peut être théoriquement montré sur et (encore) particulièrement intéressé par une forme fermée.λminλmin

user795305
la source
Ceci est indiqué et prouvé dans le document glmnet
Matthew Drury
@MatthewDrury Merci d'avoir partagé cela! Cependant, ce document ne semble pas partager ce que vous semblez suggérer. En particulier, notez que mon est leur . λmaxλmin
user795305
Êtes-vous sûr que nous avons besoin de la balise [tuning-parameter]?
amibe dit Réintégrer Monica
1
vous un droit, un formulaire fermé pour la solution de lasso n'existe généralement pas (voir stats.stackexchange.com/questions/174003/… ). cependant, lars vous indique au moins ce qui se passe et dans quelles conditions exactes / à quel moment vous pouvez ajouter / supprimer une variable. je pense que quelque chose comme ça est le meilleur que vous pouvez obtenir.
chRrr
1
@chRrr Je ne suis pas sûr que ce soit tout à fait juste de dire: nous savons que pour . Autrement dit, dans le cas extrême de la solution étant 0, nous avons une forme fermée. Je demande si la même chose est vraie dans le cas extrême où l'estimation du lasso est dense (c'est-à-dire sans zéros). En effet, je ne suis même pas intéressé par les entrées exactes deβ^λ=0λ1nXty--- juste si elles sont zéro ou non. β^λ
user795305

Réponses:

15

L'estimation au lasso décrite dans la question est l'équivalent multiplicateur de lagrange du problème d'optimisation suivant:

minimize f(β) subject to g(β)t

f(β)=12n||yXβ||22g(β)=||β||1

Cette optimisation a une représentation géométrique de la recherche du point de contact entre une sphère multidimensionnelle et un polytope (enjambé par les vecteurs de X). La surface du polytope représente g(β) . Le carré du rayon de la sphère représente la fonction f(β) et est minimisé lorsque les surfaces entrent en contact.

Les images ci-dessous fournissent une explication graphique. Les images ont utilisé le problème simple suivant avec des vecteurs de longueur 3 (pour plus de simplicité afin de pouvoir faire un dessin):

[y1y2y3]=[1.41.840.32]=β1[0.80.60]+β2[00.60.8]+β3[0.60.640.48]+[ϵ1ϵ2ϵ3]
et nous minimiserϵ12+ϵ22+ϵ32 avec la contrainteabs(β1)+abs(β2)+abs(β3)t

Les images montrent:

  • La surface rouge représente la contrainte, un polytope enjambé par X.
  • Et la surface verte représente la surface minimisée, une sphère.
  • La ligne bleue montre le chemin du lasso, les solutions que nous trouvons en changeant t ou λ .
  • Le vecteur vert indique la solution OLS y (qui a été choisi en tant que β 1 = β 2 = β 3 = 1 ou y = x 1 + x 2 + x 3 .y^β1=β2=β3=1y^=x1+x2+x3
  • Les trois vecteurs noirs sont x1=(0.8,0.6,0) , x2=(0,0.6,0.8) et x3=(0.6,0.64,0.48) .

Nous montrons trois images:

  1. Dans la première image, seul un point du polytope touche la sphère . Cette image montre très bien pourquoi la solution de lasso n'est pas seulement un multiple de la solution OLS. La direction de la solution OLS ajoute plus fort à la somme |β|1 . Dans ce cas, un seul βi est non nul.
  2. Dans la deuxième image, une crête du polytope touche la sphère (dans des dimensions supérieures, nous obtenons des analogues de dimension supérieure). Dans ce cas, les multiples βi sont non nuls.
  3. Dans la troisième image, une facette du polytope touche la sphère . Dans ce cas, tous les βi sont non nuls .

La plage de t ou λ pour laquelle nous avons les premier et troisième cas peut être facilement calculée en raison de leur représentation géométrique simple.

Cas 1: Un seul βi non nul

Le non nul βi est celle pour laquelle le vecteur associé xi a la plus grande valeur absolue de la covariance avec y^ (ce qui est le point de la parrallelotope qui le plus proche de la solution de SLO). On peut calculer le multiplicateur de Lagrange λmax dessous duquel on a au moins un β non nul en prenant la dérivée avec ±βi (le signe selon qu'on augmente le βi en sens négatif ou positif):

(12n||yXβ||22λ||β||1)±βi=0

qui conduit à

λmax=(12n(||yXβ||22±βi)(||β||1)±βi)=±(12n||yXβ||22βi=±1nxiy

ce qui équivaut à ||XTy|| mentionné dans les commentaires.

où nous devons remarquer que cela n'est vrai que pour le cas spécial où la pointe du polytope touche la sphère ( ce n'est donc pas une solution générale , bien que la généralisation soit simple).

Cas 3: Tous les βi sont non nuls.

Dans ce cas, une facette du polytope touche la sphère. Ensuite, la direction de changement de la trajectoire du lasso est normale à la surface de la facette particulière.

The polytope has many facets, with positive and negative contributions of the xi. In the case of the last lasso step, when the lasso solution is close to the ols solution, then the contributions of the xi must be defined by the sign of the OLS solution. The normal of the facet can be defined by taking the gradient of the function ||β(r)||1, the value of the sum of beta at the point r, which is:

n=r(||β(r)||1)=r(sign(β^)(XTX)1XTr)=sign(β^)(XTX)1XT

and the equivalent change of beta for this direction is:

βlast=(XTX)1Xn=(XTX)1XT[sign(β^)(XTX)1XT]

which after some algebraic tricks with shifting the transposes (ATBT=[BA]T) and distribution of brackets becomes

βlast=(XTX)1sign(β^)

we normalize this direction:

βlast,normalized=βlastβlastsign(β^)

To find the λmin below which all coefficients are non-zero. We only have to calculate back from the OLS solution back to the point where one of the coefficients is zero,

d=min(β^βlast,normalized)with the condition that β^βlast,normalized>0

,and at this point we evaluate the derivative (as before when we calculate λmax). We use that for a quadratic function we have q(x)=2q(1)x:

λmin=dn||Xβlast,normalized||22

Images

a point of the polytope is touching the sphere, a single βi is non-zero:

première étape du chemin du lasso

a ridge (or differen in multiple dimensions) of the polytope is touching the sphere, many βi are non-zero:

middle of lasso path

a facet of the polytope is touching the sphere, all βi are non-zero:

final step of lasso path

Code example:

library(lars)    
data(diabetes)
y <- diabetes$y - mean(diabetes$y)
x <- diabetes$x

# models
lmc <- coef(lm(y~0+x))
modl <- lars(diabetes$x, diabetes$y, type="lasso")

# matrix equation
d_x <- matrix(rep(x[,1],9),length(x[,1])) %*% diag(sign(lmc[-c(1)]/lmc[1]))
x_c = x[,-1]-d_x
y_c = -x[,1]

# solving equation
cof <- coefficients(lm(y_c~0+x_c))
cof <- c(1-sum(cof*sign(lmc[-c(1)]/lmc[1])),cof)

# alternatively the last direction of change in coefficients is found by:
solve(t(x) %*% x) %*% sign(lmc)

# solution by lars package
cof_m <-(coefficients(modl)[13,]-coefficients(modl)[12,])

# last step
dist <- x %*% (cof/sum(cof*sign(lmc[])))
#dist_m <- x %*% (cof_m/sum(cof_m*sign(lmc[]))) #for comparison

# calculate back to zero
shrinking_set <- which(-lmc[]/cof>0)  #only the positive values
step_last <- min((-lmc/cof)[shrinking_set])

d_err_d_beta <- step_last*sum(dist^2)

# compare
modl[4] #all computed lambda
d_err_d_beta  # lambda last change
max(t(x) %*% y) # lambda first change
enter code here

note: those last three lines are the most important

> modl[4]            # all computed lambda by algorithm
$lambda
 [1] 949.435260 889.315991 452.900969 316.074053 130.130851  88.782430  68.965221  19.981255   5.477473   5.089179
[11]   2.182250   1.310435

> d_err_d_beta       # lambda last change by calculating only last step
    xhdl 
1.310435 
> max(t(x) %*% y)    # lambda first change by max(x^T y)
[1] 949.4353

Écrit par StackExchangeStrike

Sextus Empiricus
la source
Merci d'avoir inclus les modifications! Jusqu'à présent dans ma lecture, je suis coincé juste après la sous-section "cas 1". Le résultat pourλmaxdérivé il est faux car il ne comprend pas une valeur absolue ou un maximum. Nous savons en outre qu'il y a une erreur puisque dans la dérivation, il y a une erreur de signe, un endroit où la différenciabilité est supposée à tort, un "choix arbitraire" dejeà différencier par rapport à, et un dérivé mal évalué. Pour être franc, il n'y en a pas "="signe qui est valide.
user795305
Je l'ai corrigé avec un signe plus moins. Le changement de la bêta peut être positif ou négatif. Concernant le choix maximum et "arbitraire" ... "pour lequel le vecteur associéXje a la covariance la plus élevée avec y^"
Sextus Empiricus
Merci pour la mise à jour! Cependant, il y a toujours des problèmes. Par exemple,βjey-Xβ22 est mal évalué.
user795305
Si β=0 ensuite βje||y-Xβ||22
=||y-Xβ||2βje2||y-Xβ||2
=||y-sXje||2s2||y-Xβ||2
=2cor(Xje,y)||Xje||2||y||2
=2Xjey
cette corrélation entre dans l'équation car, si s = 0 alors seul le changement de sXje tangente à y change la longueur du vecteur y-sXje
Sextus Empiricus
Ah, d'accord, il y a donc une limite impliquée dans votre argument! (Vous utilisez les deuxβ=0 et qu'un coefficient est non nul.) De plus, la deuxième égalité dans la ligne avec λmax est trompeur car le signe pourrait changer en raison de la différenciation de la valeur absolue.
user795305