Die in der Frage beschriebene Lasso-Schätzung ist das Lagrange-Multiplikator-Äquivalent des folgenden Optimierungsproblems:
minimize f(β) subject to g(β)≤t
f(β)g(β)=12n||y−Xβ||22=||β||1
Diese Optimierung hat eine geometrische Darstellung des Auffindens des Kontaktpunkts zwischen einer mehrdimensionalen Kugel und einem Polytop (aufgespannt durch die Vektoren von X). Die Oberfläche des Polytops repräsentiert g(β) . Das Quadrat des Kugelradius repräsentiert die Funktion f(β) und wird bei Kontakt der Oberflächen minimiert.
Die folgenden Bilder bieten eine grafische Erklärung. Die Bilder verwendeten das folgende einfache Problem mit Vektoren der Länge 3 (der Einfachheit halber, um eine Zeichnung machen zu können):
⎡⎣⎢y1y2y3⎤⎦⎥=⎡⎣⎢1.41.840.32⎤⎦⎥=β1⎡⎣⎢0.80.60⎤⎦⎥+β2⎡⎣⎢00.60.8⎤⎦⎥+β3⎡⎣⎢0.60.64−0.48⎤⎦⎥+⎡⎣⎢ϵ1ϵ2ϵ3⎤⎦⎥
und wir minimiereϵ21+ϵ22+ϵ23 mit der Bedingungabs(β1)+abs(β2)+abs(β3)≤t
Die Bilder zeigen:
- Die rote Fläche zeigt die Abhängigkeit, ein von X überspanntes Polytop.
- Und die grüne Fläche zeigt die minimierte Fläche, eine Kugel.
- Die blaue Linie zeigt den Lassopfad, die Lösungen, die wir finden, wenn wir t oder λ ändern .
- Die Grün - Vektor zeigt die OLS Lösung y (die als gewählt β 1 = β 2 = β 3 = 1 oder y = x 1 + x 2 + x 3 .y^β1=β2=β3=1y^=x1+x2+x3
- Die drei schwarzen Vektoren sind x1=(0.8,0.6,0) , x2=(0,0.6,0.8) und x3=(0.6,0.64,−0.48) .
Wir zeigen drei Bilder:
- Im ersten Bild berührt nur ein Punkt des Polytops die Kugel . Dieses Bild zeigt sehr gut, warum die Lasso-Lösung nicht nur ein Vielfaches der OLS-Lösung ist. Die Richtung der OLS-Lösung addiert sich stärker zur Summe |β|1 . In diesem Fall ist nur ein einzelnes βi ungleich Null.
- Im zweiten Bild berührt ein Kamm des Polytops die Kugel (in höheren Dimensionen erhalten wir höherdimensionale Analoga). In diesem Fall sind mehrere βi ungleich Null.
- Im dritten Bild berührt eine Facette des Polytops die Kugel . In diesem Fall sind alle βi ungleich Null .
Der Bereich von t oder λ für den wir den ersten und dritten Fall haben, kann aufgrund ihrer einfachen geometrischen Darstellung leicht berechnet werden.
Fall 1: Nur ein einzelnes βi ungleich Null
Die Nicht-Null - βi ist diejenige , für die die zugehörigen Vektor xi mit dem höchsten Absolutwert der Kovarianz hat y^ ist der Punkt des parrallelotope der am nächsten zu der OLS - Lösung). Wir können den Lagrange-Multiplikator λmax unter dem wir mindestens ein β ungleich Null haben, berechnen, indem wir die Ableitung mit ±βi (das Vorzeichen hängt davon ab, ob wir das βi in negativer oder positiver Richtung erhöhen ):
∂(12n||y−Xβ||22−λ||β||1)±∂βi=0
was dazu führt
λmax=(12n∂(||y−Xβ||22±∂βi)(||β||1)±∂βi)=±∂(12n||y−Xβ||22∂βi=±1nxi⋅y
das entspricht der ||XTy||∞ in den Kommentaren erwähnt.
wo wir bemerken sollten, dass dies nur für den speziellen Fall gilt, in dem die Spitze des Polytops die Kugel berührt ( dies ist also keine allgemeine Lösung , obwohl die Verallgemeinerung einfach ist).
Fall 3: Alle βi sind nicht Null.
In diesem Fall berührt eine Facette des Polytops die Kugel. Dann ist die Änderungsrichtung des Lasso-Pfades normal zur Oberfläche der jeweiligen Facette.
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∑β⃗ last⋅sign(β^)
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:
a ridge (or differen in multiple dimensions) of the polytope is touching the sphere, many βi are non-zero:
a facet of the polytope is touching the sphere, all βi are non-zero:
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
Written by StackExchangeStrike